Open source advocates are in an uproar over the announcement (by one of their own) to build an open source implementation of Microsoft .NET based on the European Computer Manufacturer’s Association (ECMA) standard currently in the draft phase. Miguel de Icaza, one of the original developers of GNOME, has announced the Mono project. The original intent of the GNOME project was to make UNIX competitive in the desktop application space by providing a standard user interface and the interface libraries for developers to code against (much like the Win32 interface did for Windows developers). GNOME and KDE are the competing standards for user interfaces on UNIX, and more importantly, Linux. Mono, on the other hand, is aimed at making UNIX developers competitive in the Web services space by giving them a feature-rich implementation of the .NET development platform using existing open source technologies. I'll give you the scoop on Mono, and I'll discuss what it could mean for open source and for Microsoft.
What is Mono?
Mono is an implementation of the .NET development platform on Linux using open source principles and technologies. The .NET development platform from Microsoft consists of a runtime environment (providing garbage collection, threading, and a virtual execution system; a comprehensive class library [the .NET Frameworks]; a new language [C#]; and a language specification [the Common Language Specification, or CLS]) that allows any compiler vendor to generate classes and code that interoperate with other languages on the platform. In order to encourage adoption of the .NET development platform, Microsoft submitted the specifications of C#, the runtime, and the metadata necessary to create CLS-compliant tools to ECMA for certification as a standard. (Ironically, this is the same standards body to which Sun initially submitted Java but later withdrew when it became clear that they couldn’t control the standards process if ECMA certified their submission.) You can get a copy of the detailed ECMA submission at .netEXPERTS.
The individual elements of Mono will include a C# compiler, the Virtual Execution System, an implementation of the .NET class library, and visual development tools. The implementation of Mono will be dramatically accelerated through the use of existing GNOME technology. GNOME infrastructure components can be quickly adapted to implement large chunks of the .NET class library without a massive new coding effort. The most interesting aspect of this project is that by using existing technology licensed under the General Public License (GPL) and by developing the new technology (like the C# compiler) under GPL licensing terms, anyone will be free to extend and update the technology. The implementation of a .NET development platform for non-Microsoft operating systems will flourish in an environment where access to the source code and the ability to share development ideas has aided other open source projects, like Linux. This is just what has staunch open source advocates up in arms.
Theory 1: Why this is bad for open source
The open source camp is divided over whether this announcement is good or bad for the open source movement. Once implemented, a Mono user could develop an application in C# (or any other CLS-compliant development language available on Mono), test it on Linux (or any other operating system on which the GNOME class libraries are available), and then deploy it on either Linux or on Microsoft platforms. And this is what has current open source advocates so concerned. In a world where Microsoft invests billions of dollars to optimize the .NET Framework for their .NET Operating System, many in the open source camp think that Mono will turn into an easy path for GPL developers to deploy their applications on Microsoft platforms at the expense of Java and Linux. They’re also concerned that Microsoft will create hard links to their HailStorm services (like Passport) that will force companies that start development on Mono to move their applications to a Windows-only environment in order for them to operate properly. Of course, most of those advocating this position think that anything that helps Microsoft has to be bad for open source (customers be damned).
Theory 2: Why this is good for open source
But many open source advocates see this as a great development. First of all, they think the implementation of the .NET Frameworks on a GPL code base adhering to the ECMA standard will force Microsoft to “play fair” when considering extending the standard and implementing services like HailStorm in an operating system-agnostic manner. They also think that they can ride the wave of a large market for training and support of C# and the .NET class libraries. If Mono is implemented with strict adherence to the ECMA standard, then training classes, books, and support materials designed to support C# and the .NET class libraries on Windows will also be useful to open source developers implementing systems on Mono.
These same proponents of Mono see it as a way to legitimize the adoption of Linux and other technologies (like GNOME) in large corporations that are using MS technologies today. In theory, corporations who use Windows today for their development platform could choose to deploy on Linux to avoid MS Server Licensing fees. This group thinks that large numbers of developers enhancing the Mono implementation of .NET on Linux using GPL licensing terms can create a better implementation than Microsoft will create on Windows. If this is true, then Mono could very well turn out to be the project that forces Microsoft to acknowledge the power of open source as a paradigm for the development and optimization of systems technology in the future.
Looking into Mono
What impact will Mono have on the open source movement? Weigh in by posting a comment below.