Just when the Mono Project was beginning to gain traction, along comes Sun Microsystems to take the wind from its sails. I can't help but feel it's a mixed blessing.
Mono gave Linux developers something they'd never had before. It's a full application development platform, based on a fast runtime engine and virtual machine. It offers advanced, modern features, including Just-in-Time compilation, a "sandbox" security model, and automated memory management. It supports multiple programming languages and it isn't tied to any one processor. Best of all, it's fully open source.
It's also based on Windows technology. Mono is a "clean-room" clone of Microsoft's .Net development platform, written for Linux and other Unix-like operating systems.
When Novell's Miguel de Icaza first began work on Mono, people said he was crazy. Why would such a talented open source developer want to devote himself to copying Microsoft technology -- with all the potential pitfalls that entails -- when there are so many other projects worth pursuing?
Critics of Mono point out that Microsoft's C# language and the CLR (Common Language Runtime) virtual machine, upon which Mono is based, are really just imitations of features already found in Java. When Microsoft first launched the .Net platform, it offered incremental improvements over Sun's Java technology, but recent releases of Java have done much to close the gap. Why go over to the dark side when established, mature technology is already available?
Although correct, this argument overlooks an important point: Running Java on Linux has long been problematic. Although versions of Java were available for Linux, Sun offered Java under a proprietary software license that was incompatible with the Gnu GPL (General Public License). This made it impossible to bundle Java with Linux distributions, such as Debian, that adhered to strong intellectual property policies. It also called into question the licensing of any software that relied on Java to run. Together, these issues limited Java's popularity on the Linux platform.
Mono, on the other hand, was offered under a mix of open source licenses from the very beginning. In one if IT's more bizarre ironies, the platform derived from Microsoft technology was more compatible with Linux than the one that was designed from the ground up to be cross-platform and OS-neutral.
No more. Last week, Sun formally announced that it would be releasing the source code to Java under the GPL. It was a bold move, an admirable one, and for many Linux developers it came not a moment too soon.