4 Shifty Details About Microsoft's "Open Source" .NET

by Liu Qihao & Ciaran O'Riordan

 

Microsoft is publishing the source code to certain parts of .NET.  The terms of distribution (the licence) is the combination of the MIT licence and a  separate patent promise. Given that Microsoft has a history of aggressively using software patents against free software, we decided to take a look at the legal details.

1. The conditions of the patent promise

The biggest limitation of the patent promise is that it only applies to code "as part of either a .NET Runtime or as part of any application designed to run on a .NET Runtime".  So the promise is void if you port an application from the .NET Runtime to another runtime, if you reuse the code in a Python, Ruby, or Java runtime or if you reuse the code in any project which is neither a .NET Runtime nor an application for a .NET Runtime. 

Further, the promise is only valid for a "compliant implementation" which includes "all of the required parts of the mandatory provisions of [the] Standard". If a developer decides to make a steamlined .NET Runtime with a subset of that functionality, then the promise gives them no protection.  Similarly, if a developer is working on a full, compliant implementation but publishes source code before achieving full compliance, the patent promise won't cover those intermediary versions.  This is a big practical problem for free software projects which most usually collaborate via public source code repositories.

That said, it's debatable whether Microsoft's patent promise serves any purpose.  By using the MIT licence, Microsoft already grants everyone who obtains a copy "Permission (...) to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software".  People sometimes think of free software licences, such as the MIT licence, in terms of copyright, but the licence text doesn't talk about "permission under copyright", it talks about "permission".  Then, since the recipient already has Microsoft's permission to use and modify the software, does the recipient really need an additional promise from Microsoft not to sue them for these acts?  If this additional promise is not needed, then there's no need to comply with the conditions necessary to make it applicable.

2. The CLA

Contributing requires signing the .NET Contributor Licensing Agreement which grants the .NET Foundation all the necessary rights to make free and non-free versions with your code. It's worth highlighting that it transfers certain risks to the contributor.  As said in section 3 and repeated in section 5: "You represent that You are legally entitled to grant the above licenses.  You represent that each of Your Submissions is entirely Your original work".  Besides creating a contractual responsibility for the contributor in the case of later disputes of ownership, one could also wonder how this affects the contributor's responsibility regarding patents.  Does this CLA mean the contributor declares their contribution to be "original" in the sense of not using any patented ideas?

3. A "promise"

Rather than granting a right to use the necessary patents, the recipient gets a promise that Microsoft won't sue them.  As long as Microsoft controls those patents, these two situations are probably equivalent (there is case law in this sense in the USA at least).  The difference is in what happens if Microsoft transfers those patents to another entity.  "This is a personal promise directly from Microsoft to you". It's interesting to note that when Microsoft wants to be safe from your patents, it doesn't accept a promise not to sue.  It requires a licence. Section 4.2 of the CLA says: "You grant (...) a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license under your patent claims that directly read on the Code to make, have made, use, offer to sell, sell and import or otherwise dispose of the Code." No conditions.

4. The promise conflicts with the Open Source Definition

Microsoft's press statements have repeatedly said that this released software is "open source", and their website links directly to the Open Source Initiative's definition of open source (OSD). However, the conditions of the patent promise seem to conflict with the OSD. The patent promise, which can be paraphrased as "Microsoft won't sue you so long as you use the code for .NET Runtime projects", implies that Microsoft reserves the right to sue you if you use the code for something other than .NET Runtime projects. However, OSD section 3 says "The license must allow modifications and derived works" and section 10 that "No provision of the license may be predicated on any individual technology or style of interface." If Microsoft (or a future owner of Microsoft's patents) claimed that the MIT licence never granted the right to modify the software for projects other than .NET Runtime projects, one element which the judge may take into account is Microsoft's repeated references to the OSD, which suggest that their intention when using the MIT licence was to allow modifications and derived works without any predication on any individual technology.  However, the legal value of Microsoft's public statements is not clear and will vary from country to country.

Conclusion

If you only intend to use the software as published by Microsoft, then everything looks fine.  The patent promise (if it's even necessary) will apply.  If you intend to modify the code, then the protections of the patent promise may be necessary or useful and you should take care.  And if you're looking for a project to contribute to, then it would be worth giving your preference to projects which don't contain conditions which create or suggest patent risks if the code is used in other free software projects (outside of the set of .NET Runtime projects).