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 gives Linux developers something they have 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, the “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 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 licence that was incompatible with the Gnu GPL (General Public Licence). 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 licences from the very beginning. In one of IT’s more bizarre ironies, the platform, which was 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.
Microsoft’s recent announcements about indemnification only underscore concerns about Mono — particularly given that Novell is the primary sponsor of the project. Foremost among these has always been the issue of intellectual property. Critics warned that despite de Icaza’s and Microsoft’s protestations to the contrary, Mono exists solely at the whim of Microsoft. Any time Redmond feels like pulling the rug out from beneath them, Mono developers could find themselves subject to patent-infringement lawsuits.
As part of its agreement with Novell, Microsoft has now enumerated a short list of those categories of developers that it promises not to sue. The implicit message is that everyone else should watch out — and watch out they shall. The availability of Java under the GPL now gives those developers who want modern language features an alternative to Mono, and they need never look back.
If they didn’t, though, it would be a shame. Java is a welcome addition to the oeuvre of the open source community, but it takes away nothing from the technical merit of Mono. With both platforms available under open source licences, a co-mingling of their technologies could lead to a new, open system that’s an evolutionary step ahead of either of today’s offerings. Sun, which has some experience navigating patent issues, could assist in guiding this effort.
Unfortunately, I suspect that the fallout of the Microsoft-Novell deal will succeed only in balkanising the open source community and that projects like Mono will fall by the wayside over ideological differences. If that happens, I fear Microsoft will have won yet another victory.