Mono Now Safe?
With Linux Distros taking sides, this week’s announcement that Microsoft promises not to make Necessary Claims against anyone using their patented specifications adds to the confusion. At first glance, this looks like a safe passage for Mono, but as we delve in deeper, we see that not everything is legally in the clear.
Disclaimer: I am not a lawyer, under no circumstances should this information be constituted as legal advice.
First, some quick background information. Mono is an GPL‘ed implementation of Microsoft‘s C# and CLI (Common Language Infrastructure) technologies as well as some implementation of the “higher” parts of the .NET framework. Namely, the ADO.NET, ASP.NET, and Windows.Forms. C# and the CLI are ECMA/ISO standards and are the building blocks of the .NET framework. ADO.NET, ASP.NET and Windows.Forms are built upon the technologies and specifications outlined in the two ECMA/ISO standards. These specifications and technologies are owned and patented by Microsoft. Richard Stallman has warned the Open Source community that creating open source programs with patented technologies can give Microsoft power to sue for patent infringement. Miguel de Icaza, the leader of the Mono project, has been trying to reassure users and developers that there is no danger. This has caused Distros to make different decisions about including Mono.
Scene Changing News
Today, a Microsoft employee has made an announcement on Microsoft’s Port25 blog that Microsoft will be adding ECMA 334 and ECMA 335 to their other works under the “Community Promise.” The Community Promise is a legally binding document that means Microsoft will not assert Necessary Claims against any implementations of any of the specifications under the Community Promise.
Great! Now we don’t have to worry about Ubuntu and others that will ship Mono by default right? Not quite. While this is a step in the right direction, Microsoft still can pull a couple of cards out of their sleeve if they choose too. Let’s take a deeper look into the implications of this Promise.
The first issues is compliance. Microsoft’s Community Promise only applies to implementations that fully comply with the given specification before releasing. This is not a problem with Mono, since they are fully compliant with the specification. The second issue is with the “higher” technologies that Microsoft owns. ASP.NET, ADO.NET, Windows.Forms, and others are not covered under the Community Promise. This means that while Mono’s implementation of C# and the CLI are covered, the open source implementations of ASP.NET etc. are not covered. Miguel de Icaza, even says this himself:
Astute readers will point out that Mono contains much more than the ECMA standards, and they will be correct.
In response to this, the Mono project is going to split their code up into two different pieces. One that is just the implementation of the two specifications covered by today’s announcement, and another with all the uncovered technologies. This can help minimize the impact of the threat of litigation.
What Does this Mean for Ubuntu?
Most of the C#/Mono projects that are included in Ubuntu and others do not use the higher technologies that are not covered by the Community Promise. This means that packages like Tomboy are most likely safe from legal threats. Dreams of making an inter-operable framework for multiple operating systems are still just dreams, until it’s legally clear that Microsoft will not make any moves against implementations of ASP.NET and the like.
Regardless of these theoritical threats, the Mono Project doesn’t seem worried:
For people who need full compatibility with the Windows platform, Mono’s strategy for dealing with any potential issues that might arise with ASP.NET, ADO.NET or Windows.Forms is: (1) work around the patent by using a different implementation technique that retains the API, but changes the mechanism; if that is not possible, we would (2) remove the pieces of code that were covered by those patents, and also (3) find prior art that would render the patent useless.
As of the time of publishing, neither the Free Software Foundation nor Groklaw have made any comments about this issue. Also, although this has been announced by an official Microsoft Blog, the official Community Promise page has not been updated to include the two specifications. This story has already created a buzz on Slashdot and will likely be discussed a lot on sites like Planet Ubuntu.
What do you think? Is this the blessing Mono needed, or is it just another complication in this legal maze?