Embracing the .Beast
Mono allows programmers to program in Visual Basic on Linux and run their applications on Windows, or develop in C# on Windows and run their applications on Linux, but remains a controversial addition to the Linux developers' arsenal.
In recent times Miguel de Icaza has been the subject of much controversy within the Linux community. It hasn't always been so. de Icaza has contributed a lot of popular code to Linux, including large parts of Gnome, the Gnumeric spreadsheet, the Evolution personal and workgroup information manager, the Midnight Commander file manager and some of the SGI Linux hacks, all published under free software licenses.
de Icaza has credentials and a long history as a free software developer. His current (long standing) notoriety hinges on his role as the architect and lead developer of Mono, a free software implementation of Microsoft's .NET development framework which enables the easy transfer of Microsoft applications and skills from Windows to Linux.
In 2003 Ximian, the company de Icaza had founded to further the development of Gnome and Mono, was purchased by Novell, signalling a significant change in the business model of Novell, one of the older survivors of the computer wars of the 80s. Novell had been there, climbed the mountain and come down the other side, and was beginning to struggle. Linux was seen as an opportunity for Novell to re-invent itself as a young and energetic "open source" company with a new platform for its expertise in networking technologies.
The same year that Novell purchased Ximian, Novell also purchased SuSE Linux, the most successful distribution of Linux after Red Hat. Three years later the company concluded a fateful interoperability and patent agreement with Microsoft, which has been the subject of discontent within the free and open source software communities, because it offered a hostage to fortune in the shape of patent indemnity, and leant credibility to Microsoft's often iterated, never substantiated, and highly contentious claims of patent infringements in the Linux kernel.
"...The surprising aspect of the Microsoft/Novell agreement is that Novell was foolish enough to fall into the trap that Microsoft set for it, to induce somebody involved with Linux to take a license, so that Steve Ballmer could then go off to the press, and say 'See I told you there were concerns. Why else would they have taken this license?'" Mark Webbink, then the legal counsel for Red Hat, said at the time.
Novell claims that the agreement has brought significant marketing advantages to Linux and Novell.
A grave mistake
Since the inception of Microsoft .NET, under the aegis of Ximian, and later Novell, de Icaza has devoted his energies to developing Mono, a free software cross-platform implementation of a subset of the .NET development framework.
To ignore Microsoft's strategic move to web services might have been seen as reckless. Mono, and the alternative free software clone, DotGNU, were deliberate attempts to offer open alternatives to .NET, independent of proprietary interests. C# and Asp.NET developers can jump straight from Windows to Linux, or vice-versa, and applications developed for Windows can be migrated to Linux more or less seamlessly. .NET is no longer a single platform technology. Nat Friedman of Ximian explained it succinctly: "Microsoft claims that .NET is an open system. We're going to implement an open version of it, and see how they react."
de Icaza's purpose in developing Mono had been to bring what he perceives as the benefits of the .NET development framework to Linux, to offer a strategic alternative, and, more importantly, to build a runtime environment which would enable the rapid development of applications for the desktop, more specifically the GNOME desktop, on Linux.
"These days I see Mono as an upgrade on a development platform," de Icaza remarked in early 2002. "I think it's going to be the next big thing, and I think the GNOME community is going to jump to it, if only because I'm going to make it really simple for them to do it. All of these people are extremely talented, they can see through the bullshit, and they'll see that Mono is a good thing for them."
To some extent this has been the crux of the problem for the Mono developers. Mono is an implementation of Microsoft proprietary technologies that were developed to divert attention from Java. Software that can interact with Microsoft's proprietary technologies, read, translate and even create programs in C# is one thing. Entangling this software into Gnome, one of the two key desktop environments for Linux and UNIX, is seen as quite another.
The hostility of users and developers to this notion is not based on aversion to the implementation of Microsoft technologies per se, but the fear of entangling a major free software project in the snare of proprietary "standards," patent threats and other irrelevant noise.
The clearest exposition of this position was made by Richard Stallman on the Gnome Foundation mailing lists. "I have always supported the development of free platforms for C#, just as I've supported the development of free platforms for any language that users use. I also wouldn't argue that people should not use C# with a free platform for secondary applications," he said.
"However, making GNOME depend on Mono is running a grave risk, and a grave mistake."
Visual Basic for Linux?
The attraction of a language runtime, such as that offered by Mono, .NET and Java, is that, in theory at least, it simplifies the job of the applications developer, taking the responsibility for tasks such as creating objects, making method calls, managing memory allocation and accessing operating system resources away from the programmer.
de Icaza has attributed the creative inspiration of Bonobo and GNOME to the ideas behind DevX and COM, (which are also Microsoft technologies) and the inspiration for Mono to the integrated philosophy behind the .NET CLR (Common Language Runtime), which he sees in the long term as a method of integrating technologies across the board. de Icaza believes that .NET is an improvement on Java, a thesis with which many disagree, and as an easy tool for rapid cross-platform applications development. One of the greater assets of Mono and the CLR is that it allows some language independence, so developers aren't tied to one language or another for the rapid development of useful applications.
Free software advocates have had historic problems with the licensing of Java, (which were solved by Sun's 2006 decision to release Java under the GPL), but tended to see Java as a better, more open and trustworthy solution for web services, and did not want irrevocable tangles of integrated technology to invade the Linux developer space. To which de Icaza's response has been that: ".NET is nothing but Java. They just happened to learn the mistakes from Java and build things they couldn't do with Java because it was set in stone. GNU was based on a proprietary technology [UNIX]. Think of Mono as following the same process: we are bringing the best technology out there to our beloved free software platform."
de Icaza sees the CLR as a means of integrating and simplifying the development of GNOME and related applications, and to make it easier to port applications from Windows to Linux. In short, he sees Mono as a productivity tool for programmers, and as a voyage of discovery for adventurous developers, without much relevance to Microsoft's project for world domination. Mono allows you to program in Visual Basic on Linux and run your applications on Windows, or develop in C# on Windows and run your applications on Linux.
The problem is that not many within the user or developer communities share de Icaza's enthusiasm for Microsoft technologies. "Visual Basic for Linux" has not been a long term aim of Linux developers, and not many want to accept the notion that C# is the future for the Linux user space. Moreover, Mono is in a constant cycle of playing catch up with .Net, and will never be able to guarantee up-to-date compatibility, even where that is desirable, but it does provide a route for migration between Windows and Linux.
During the last few years Linux has captured large swathes of the UNIX market, because there have been few issues of portability. UNIX skills have been transferable to a Linux environment, and the GNU tools provide a familiar landscape for the UNIX programmer.
The hope is that Mono fulfills a similar role for Windows developers and applications, providing an easy route for the migration of commercially developed Asp.NET and other software applications from Windows Server to Linux and allowing .Net developers to migrate seamlessly from Windows to Linux.
The city of Munich is cited as an example where Mono has provided a useful service in migrating applications from Windows to Linux. Mono has a significant role as an enabler of cross-platform technologies, but may never fulfill de Icaza's ultimate objective of becoming a primary building block for the Linux desktop.
Embracing the .Beast?
Some key Linux desktop applications, such as Beagle and F-Spot, have already been developed for Gnome using Mono and this bothers many Linux users, as does the lingering suspicion, right or wrong, that, from Novell's point of view, the Novell/Microsoft "interoperability and patent agreement" may have hinged on the Microsoft technologies embraced by Mono.
Even more disturbing is the development of Silverlight, Microsoft's Flash replacement, implemented by the Mono team as Moonlight, which is seen as a proprietary extension to the web, which will lead to inevitable problems for the end user, and is perceived as contrary to the principle of "open standards" which are the touchstone for meaningful interoperability across the network.
GNOME, the GNU network Object Model Environment, grew out of misgivings with the licensing of the Qt widget toolkit for KDE in the mid-90s. Miguel de Icaza was a GNOME project leader from the inception of the project. At the time Qt was licensed exclusively under a non-free license, and GNOME was intended to be the entirely free alternative.
Since 2000, however, Qt has been dual-licensed under the GPL and can be considered as untrammelled free software. There is a certain irony that Mono and C# have been considered by some as potential future building blocks for GNOME, the project that was created to preserve the integrity of free software. Hence, the recent debates on mailing lists and elsewhere. There is little faith in Microsoft's good intention to pursue open standards, and considerable resistance to the adoption of technologies that are controlled by proprietary interests, and may or may not be patent encumbered.
Although Mono is based on a published standard and is a clean implementation of specifications that Microsoft has put in the public domain, the doubts remain and are re-enforced by the experience of the Samba team. Like the Mono developers the Samba Team once had a good working relationship with Microsoft but, according to Jeremy Allison: "Once Netware was defeated by Windows NT, their attitudes changed, and the flow of information stopped. Proprietary modifications to core protocols like the Kerberos authentication protocol followed, and these changes were treated as trade secrets, patented if possible, and only released under restrictive non-disclosure agreements, if released at all."
This view may be over simplified, or even unjustified, but will continue to be a significant obstacle to the adoption of Mono. Most computer users don't care about the origins of the software they use, but for all the obvious reasons this has never been the case with Linux users and developers.