Mono and dotGNU: what's the point?
A bit controversial, this one
Opinion Neil Davidson is technical director of Red Gate Software. He can be reached at neil.Davidson@red-gate.com 
Opinion Two open-source projects, Mono and dotGNU, are aimed at providing alternatives to Microsoft’s .NET framework and developer tools. While providing freedom of choice might be reason enough to justify a project, practical programmers could be asking: What’s the point?
Sure, these projects might be of theoretical or academic use, but only ideologues are going to use them for real work. Microsoft already provides the compilers and the .NET framework for free; you can download them from www.microsoft.com/net .
According to SD Times, one of the goals of dotGNU in 2004 is to “have System.Windows.Forms under XWindows.” Great. Microsoft is working on adding edit-and-continue to VB.NET, generics to C#, embedding the CLR into the next version of SQL Server, and making a stack of improvements to managed C++. In similar timescales, dotGNU will let you put a button on a form.
Last year, Novell bought Ximian, creator of the Mono project. Mono’s roadmap is to implement about five of the Microsoft namespaces in 2004. At a generous estimate, that’s under half of the system class libraries. There will be no remoting; no side-by-side existence of assemblies in the GAC; no code signing of assemblies; and no code access security – despite this being a fundamental piece of the .NET framework. By the time Mono is anywhere near 90 percent of the current functionality of .NET, Microsoft will have released Whidbey, Yukon and probably Longhorn.
Stopping a monopoly?
DotGNU’s motivations include stopping Microsoft from achieving monopolistic control of web services. Getting people to adopt C# probably isn’t a good way of accomplishing this. Every Java devotee that dotGNU converts to the C# cause is actually increasing Microsoft’s stronghold.
Even if Mono or dotGNU gets 99 percent of the way there, that’s not enough. It’s the extra 1 percent that matters. It’s the boring stuff like adding serialization capabilities to classes, implementing good security, and documenting class libraries that makes C# and .NET viable.
Mono has its own C# compiler, written using Microsoft’s C# compiler. I’m familiar with bootstrapping, but this I just don’t get. You take a fully functional C# compiler and use it to create a lower-spec C# compiler. Actually, one of the few applications that Mono claims it can run is its own C# compiler. The major achievement of this project appears to be using somebody else’s compiler to build a compiler that will compile the compiler.
People involved in these projects seem to be convinced that they are working to break Microsoft’s perceived monopoly. But how is porting a Microsoft platform to Linux going to achieve this? How is making C# a standard on Windows and Linux going to hurt Microsoft? Far from being alarmed, Microsoft execs encourage this activity, making a lot of the .NET source code available under the ROTOR program. Their enemies are now working, for free, to extend Microsoft’s monopoly onto new platforms.
Testifying for Microsoft
If, in Microsoft’s wildest dreams, C# on Linux kills Java, and Sun or IBM accuses Microsoft of abusing a monopoly position, all Microsoft will need to do is point at Mono (and hence Novell) and dotGNU. Can you imagine it? Novell executives testifying for Microsoft in some hypothetical anti-trust case?
If the open source versions of .NET start to struggle, then Microsoft will probably just bail Novell out with $150 million or so like it did Apple. Of course, Microsoft can enforce its patents any time if it ever feels really threatened.
Competition is good for the software industry, good for Microsoft in particular (as Adam Smith pointed out, monopoly is a great enemy to good management), and most importantly, good for consumers. It is great for everyone when the open-source movement provides credible competition. At times, however, I do wish that all that passion, energy and skill went into something, well, a bit more useful.
Mono and dotGNU are interesting projects for people who are interested in computer languages, compiler construction and other fairly esoteric, hard-core areas of software engineering. But they have no practical use, and exist only with the patronage of Microsoft. ®