The next big thing
Mono was a continuation of de Icaza's search for a technology that simplified writing apps for GNOME. "These days I see Mono as an upgrade on a development platform," he said at Fosdem in 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."
This hasn't happened. Mono is a technical success. MonoDevelop has been widely praised, and has many fans. Mono has been used by individuals and commercial concerns to develop applications for Linux such as Beagle, Tomboy, Banshee and F-Spot. MonoTouch, a development environment for the iPhone, is in beta. But Mono has remained mired in controversy. From the beginning there were objections that Microsoft would and could leverage its proprietary grip on .NET to undermine Mono and any free software projects that were dependent on Mono. de Icaza's argument was that "there are previous technologies such as UCSD p-code and ANDF that also support multiple languages using a common intermediate language. The libraries are similar to other language's libraries, so again, they're too similar to be patentable in large measure."
He maintained that "if Microsoft does patent some technology, then our plan is to either (1) work around it, (2) chop out patented pieces, (3) find prior art that would render the patent useless. Not providing a patented capability would weaken the interoperability, but it would still provide the free software/open source software community with good development tools, which is the primary reason for developing Mono."
What ifs and wrong steps
It could be argued that Mono does little different to other free software projects such as Samba, in that it makes proprietary technologies accessible to free software developers that would otherwise be out of reach, and in so doing treads a very narrow line through a proprietary minefield beset with what ifs and wrong steps. After all, it should be a basic principle of computing that computer languages, by which one computer speaks to another, are available to all.
Richard Stallman said as much when he wrote "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," but concluded that "making GNOME depend on Mono is running a grave risk, and a grave mistake," despite, or because of, the fact that de Icaza's primary motivation for developing Mono was to facilitate the development of applications for GNOME.
In June 2009, Stallman avowed that, in his opinion, "Microsoft is probably planning to force all free C# implementations underground some day using software patents... The problem is not in the C# implementations," he wrote, "but rather in Tomboy and other applications written in C#. If we lose the use of C#, we will lose them too. That doesn't make them unethical, but it means that writing them and using them is taking a gratuitous risk."
Too much monkey business
This stance has been countered to some degree by Microsoft's Community Promise, but doubts remain as to what is actually covered, and de Icaza concedes as much. "In the next few months," he wrote, "we will be working towards splitting the jumbo Mono source code that includes ECMA + A lot more into two separate source code distributions. One will be ECMA, the other will contain our implementation of ASP.NET, ADO.NET, Winforms and others." In theory, the core components of Mono and the Mono development stack for Gnome are covered by the Community Promise. The elements that provide compatibility with Windows are not.
From the beginning Mono has been beset by misunderstandings, misconceptions and political ineptitude, not least by Novell, de Icaza's employer, which allowed Microsoft to insert patent indemnification into its commercial agreement of 2006, souring its relationship with the free software community and giving Microsoft grounds for suggesting, without substantiation, that GNU/Linux and other free software infringed Microsoft patents - and by Microsoft's ongoing ambivalence towards free and open source software within its own halls.
Technically, de Icaza may be right. Potentially, Mono may be the best environment available for developing Linux desktop applications, and the Mono development tools for GNOME may be exempted by Microsoft's Community Promise. It may even be the case that Microsoft is unlikely to pursue Mono for patent infringements because such a move wouldn't go down well with its customers, and, for Microsoft, the turmoil created by Mono among the Linux user and developer communities is satisfaction enough. But while the doubt remains, it's hard to see the broad mass of developers acceding to Miguel's wishes, if only because promises are often broken.
Politically, Mono has many mountains to climb. de Icaza has to persuade both Microsoft and the free software community that neither has anything to lose, before he can hope to persuade the GNOME developers that they should "jump to it" and adopt Mono as a primary development tool, and that remains a difficult ask from all sides.
For other feature articles by Richard Hillesley, please see the archive.