WiX

The WiX toolset license.

When the WiX toolset transferred to Outercurve Foundation I forgot one detail that was apparently interesting to some of you. The license changed from the Common Public License 1.0 (CPL) to the Microsoft Reciprocal License (MS-RL). Here's why.

First, a quick overview of Open Source licenses. For brevity I’m going to grossly oversimplify the details. There are essentially two types of Open Source licenses: permissive and reciprocal (aka: copyleft). Permissive licenses let you do pretty much whatever you want to do with the source code (sometimes you have to credit the original authors). Reciprocal licenses require you to always publish the code under the same license. Therefore, you can change permissive licensed source code and not publish your changes but changes to reciprocal licensed code must always be published.

Personally, I believe that reciprocal licenses are the best choice for community-based projects because they prevent someone from taking and taking but never giving back. Thus the WiX Toolset has always been licensed under a reciprocal license.

In the last 8 years, I’ve found only one downside to the reciprocal license. Developers sometimes get confused about what the license applies to. Clearly the source code in the project is covered by the license. But what if binaries built from the source code are used to output some other document? Is that document required to be licensed reciprocally? What if libraries built from source code in the project are used by another binary? Does the new binary need to use the reciprocal license? The questions keep going.

Back in 2003, the Common Public License 1.0 (CPL) was generally recognized to apply only to the source code in the project. That made the CPL a reasonable choice for the WiX toolset’s license. We only wanted the source files that are part of the WiX toolset to be reciprocally licensed. Output from the WiX toolset (such as your .msi file) or use of the libraries provided by the toolset (such as wcautil.lib) were not intended to require your product to be licensed reciprocally.

All was well until a few years ago when the Common Public License 1.0 was deprecated and replaced by the Eclipse Public License. So, when the WiX toolset was transferred to the Outercurve Foundation, the Outercurve Foundation recommended we update the license.

The Microsoft Reciprocal License (MS-RL) was chosen. I liked it. It’s short and simple.

In the end, the whole license change thing was a no-op in my mind. We ended up with a non-deprecated license. However, nothing else changes. The reciprocal license, now the MS-RL, is still intended to only apply to the WiX toolset’s source code. The goal is still to prevent people from “flat out stealing” from the community.

Now, I am in a conversation with Outercurve about the appropriate way to license sample code in the WiX toolset. There are a few source files that are intended to be copied as “starter code” and are probably not well suited for a reciprocal license. This conversation is one example where being part of Outercurve is benefiting the WiX toolset. It was very difficult to have a conversation about WiX toolset sample code licensing when the project was owned by Microsoft (see my last point on the Outercurve announcement blog post).

So that’s why the license changed. And remember, I’m not a lawyer. If you want a professional opinion about all this stuff, go ask your lawyer. I hope he or she basically agrees with what I’ve written here. If your lawyer does not, do not hesitate to contact me and I’ll get the right people connected together.

In the meantime, go write some code. You know I am!