Last week, Microsoft released the core of its .net framework under a permissive MIT License, and readjusted its clocks to fit the new millennium. Until recently, Microsoft’s approach toward open source was like its approach to everything else: do what others do, but with our flavor. While most of the world used three major open source licenses: GPLv2, MIT and BSD, Microsoft favoured the MS-PL and MS-RL: it’s own flavor of licenses, which, well, were not quite compatible with the existing licensing scheme.
The difference between the “standard” MIT/BSD Licenses, that say “do whatever you want, just give us credit and waive any liability” and Microsoft MS-PL that has a statement that says that you cannot use the original software’s trademarks and that if you take a piece of code from the software, and stick it to your own code, then it has to be also under the MS-PL (section 3(d)), were quite problematic, and it’s no surprise that no one outside the Microsoft ecosystem used these licenses.
So, last week’s resolution came as a surprise, and quite an interesting one. Will Microsoft’s adoption of the MIT License mean that we might see an open-sourced Windows version? I’d be surprised if we do. But what’s not that surprising is that Microsoft decided to add its own flavor again to the MIT License.
While the .NET framework is released under the permissive MIT license (again: do whatever, just make sure we’re not responsible), Microsoft decided that it has to specifically add a “Patent License”, meaning that it makes sure that its nonexistent property called “Software Patents” (that at least in Israel are deemed highly questionable). Microsoft promises not to sue you over its patents if you use the .NET framework in your product. This means, that even if you don’t acknowledge Microsoft’s enforceability of these patents, or claim that they don’t apply, you do acknowledge them when you get a license.
While this patent license applies only when your software is a “part of either a .NET Runtime or as part of any application designed to run on a .NET Runtime”; it means that actually you blindly acknowledge on the other hand that these patents exist and that they are enforceable. This also means that if you interfere or “infringe” these patents in any other software you distribute, Microsoft could go ahead and say “oh, well, he acknowledged our patents here, here and here, so he can’t say that they are unenforceable”.
So you see my problem here, right?