When Miguel de Icaza initiated the Mono project back at the turn of the millennium, his idea was not just to bring what he perceived as the advantages of .NET – a cross-platform development framework and a common runtime – to Linux. Nor was it his intention just to make migration from Windows to Linux easier. His big idea was that Mono would become the default application development platform for the Linux desktop, specifically for GNOME.
For a thousand different reasons this was never likely to happen. Mono was never going to be an easy fit for the Linux desktop. Users didn’t like it, and neither did the developers, and not simply for coding reasons. .NET had been developed as Microsoft’s answer to Java, a middleware platform that could be used to generate web Services; but where Java used one language and was platform independent, .NET was multilingual and platform specific. .NET was intended to neutralise the commercial success of Java and prolong the proprietary dominance of Windows as a client-facing operating system. Mono implemented C#, the common language runtime and the development framework aspects of .NET on Linux, but .NET was never accepted as a model for Linux development.
Nevertheless, de Icaza always hoped that developers would see Mono as a perfect tool for GNOME development. The idea wasn’t well received. From the beginning, doubts were raised about the ‘intellectual property rights’ Microsoft had retained over the code, Nobody really wanted to know, and Mono was never going to be an easy ask. As it was, Microsoft was never as helpful to the cause as it might have been. Just enough rope was dangled to keep the Mono developers happy, but the scope for future litigation was always left in place. Just as Microsoft’s speculative patent indemnification agreement with Novell was intended to sow fear, uncertainty and doubt around the legal status of the Linux kernel, a certain level of ambivalence and discord around the legal status of Mono was always going to suit Microsoft’s purpose,
The objection of developers to Mono wasn’t that a .NET implementation shouldn’t exist, but that it shouldn’t be core to the free software development stack. Richard Stallman’s observation was that “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 “making GNOME depend on Mono is running a grave risk, and a grave mistake.”
Mono had its followers, and appealed to some developers who had come over from Windows, but had never won its target audience. De Icaza always maintained that the issues over the .NET code patents were wildly exaggerated, and in one sense he was absolutely right. Neither Mono nor the Linux desktop has ever faced a legal challenge relating to .NET patents. But then, neither did Mono succeed in its goal of becoming the development platform for Linux desktop applications. Even if it had wanted to, Microsoft never had sufficient cause to use its legal muscle against the Linux desktop.
De Icaza hoped to prove his point with the development of applications such as Banshee, Beagle, Docky, F-Spot and Tomboy. To some degree he succeeded, and briefly these applications had some recognition but were ultimately replaced as Mono’s star, and the fuss around it, faded.
When Novell was purchased by Attachmate, de Icaza was permitted to take Mono elsewhere, and created a new company, Xamarin, as a vehicle for Mono development. In July 2011 Xamarin was granted a perpetual licence to all the ‘intellectual property’ associated with Mono, MonoTouch, Mono for Android, and Mono for Visual Studio. Xamarin and Mono are now totally focused on the mobile market. Mono has found its niche, and the ideal of GNOME involvement has faded from memory. Out of this, Xamarin has achieved some success and claims a community of more than 200,000 developers producing cross-platform applications for smartphone devices.
Mono is still useful to the Linux desktop as an interoperability and migration tool, and as a means of interacting with .NET and Windows implementations in mixed environments, but was never going to work at the heart of the Linux desktop experience. Stallman’s take on this was that “Microsoft is probably planning to force all free C# implementations underground some day using software patents.”
According to Stallman, the problem was “not in the C# implementations, 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.”