Microsoft has promised not to sue those who develop implementations of its C# language and Common Language Infrastructure – the heart of .NET.
You might assume that to be good news for Mono, the open source implementation of .NET sponsored by Novell; and I suppose it is, though not in any major way.
The key point here is that Microsoft’s .NET platform goes well beyond what is covered by the promise. ASP.NET, Windows Forms, ADO.NET, Windows Presentation Foundation, Silverlight: all this falls outside. The promise covers only what is standardised by ECMA.
Mono leader Miguel de Icaza is clear about the differences in his post, and says Mono will be split into safe and – presumably – unsafe parts:
In the next few months we will be working towards splitting the jumbo Mono source code that includes ECMA + A lot more into two separate source code distributions. One will be ECMA, the other will contain our implementation of ASP.NET, ADO.NET, Winforms and others.
A good thing? Well, it could help promote the core of Mono in the open source community, which is wary. Open source champion Richard Stallman recently stirred up debate on the subject by proclaiming C# dangerous, in what has become a somewhat perplexing post:
It is dangerous to depend on C#, so we need to discourage its use. … The problem is not unique to Mono; any free implementation of C# would raise the same issue. The danger is that Microsoft is probably planning to force all free C# implementations underground some day using software patents.
he says (and is unlikely to be comforted by Microsoft’s recent moves), though he adds:
This is not to say that implementing C# is a bad thing. Free C# implementations permit users to run their C# programs on free platforms, which is good. (The GNU Project has an implementation of C# also, called Portable.NET.) Ideally we want to provide free implementations for all languages that programmers have used.
Confusing. Still, it’s a valid and important question. Is Mono safe to use?
I have been asking myself this for many years; and have asked Microsoft about it on a number of occasions with no clear answer. However, to me the breakthrough came when Moonlight was announced, an implementation of Silverlight for Linux for which Microsoft has partnered with Mono. The dual significance is first, that Microsoft is working with Mono; and second, that it shows how Microsoft has realised that overall Mono is more a benefit than a threat to its platform.
Action against Mono now seems less likely than ever. That opinion is not based on legal knowledge, but on the business & PR case.
Nevertheless, there could be limits. Stallman’s recent statement was provoked by discussions over whether Mono should be part of the default Debian install. It is not; but it is rising higher on the list of packages that are likely to be installed sooner rather than later by users, because Mono applications are growing in number.
On the server, Mono’s implementation of ASP.NET is now rather good. I’m using it on ITWriting.com for a Silverlight demo. I’ve been impressed by its compatibility with Visual Studio, though I’ve also found it increasing resource usage more than I would like. I’m using what is now an old version though, so I expect this to improve.
The cost savings in using Linux+Mono rather than Windows+ASP.NET are significant, which implies that the potential cost to Microsoft is significant too. It’s only a potential cost, because frankly the official platform is still less risky for a commercial deployment, from a technical rather than legal perspective. Mono is currently more likely to attract free or hobbyist users; but that could change. If Microsoft saw server license sales bleeding away because of Mono, my guess is that there would be rumbles.
What then of de Icaza’s move to separate Mono into safe and unsafe parts? I see the sense of it, but wonder if it could be counter-productive. While Mono is, errm, monolithic, Microsoft cannot take action against the unsafe parts without also blocking the safe parts. After the split, it will be easier for Microsoft to agitate about the pieces of Mono which might (or might not; I’m no lawyer) infringe its rights.
It still strikes me as unlikely that Microsoft would risk full-on legal action against its partner and against what is now a significant part of its platform story. However, I doubt we will get any further comfort from the company, beyond what it has already given.
*updated to acknowledge that Silverlight and WPF are covered by the open spec promise – see links in the comments.
XAML has been covered by the open specification promise for a couple of years now. Presumably that would include WPF.
Jonathan, just to follow up on your comment: XAML, the Silveright and the WPF vocabularies are under the OSP as well.
The OSP specs are here:
http://www.microsoft.com/interop/osp/default.mspx
And Community Promise specs are here:
http://www.microsoft.com/interop/cp/default.mspx
Jonathan, Miguel, thanks for the comments and links; I’ve amended the post to reflect them.
Tim
Its all very interesting as I find C# a very nice language to learn coming from PHP. Anything more complicated and my brain implodes. 😉
However, I currently have to use my Vista (soon to be Win7) laptop for it as my primary OS is Linux. Hopefully, I can move on to MonoDevelop instead but I have not yet looked into what steps you need to keep things cross compatible.
Also, AFAIK I need Visual Studio to be able to develop for my Windows Mobile phone. If I could do that from Linux it would be brilliant.