Mono: An infectious disease?

v0.1 – June 2009

In the beginning Microsoft laughed at Linux and free software, claiming it was just an operating system for hackers and hobbyists, posing no real threat to their domination of the computing industry. Now it’s a very different story and Microsoft admits that Linux is their number one threat.

Through the recent TomTom case it is clear that Microsoft is using patents to leverage power over open source. Microsoft knows that if they do nothing, free software will eventually destroy their bottom line. They have to do something, which they certainly are. Microsoft CEO Steve Ballmer admitted,

Linux is a serious competitor

and promised that the company will outsmart open source. So what’s their game plan?

One of the ways they are trying to gain the upper hand is by introducing their own proprietary programming framework into free software, which is called ‘.NET‘. While some parts of the .NET framework such as CLI and C# have been submitted to Ecma for standardisation, others have not. Even so, Microsoft still holds patents in relation to these standards, although the company grants “licenses on reasonable terms and conditions”, but only so long as the corresponding Ecma standard remains valid. The non-standard components also pose a risk.

Microsoft has ulterior motives for wanting support for .NET under Linux. They might not be able to destroy free software, but they sure want to control it. Microsoft CEO Steve Ballmer said:

I would love to see all open source innovation happen on top of Windows.

In relation to using .NET to battle free software, Senior Vice President of Microsoft Servers and Tools, Eric Rudder, said:

As many of you may know, we’ve actually kind of broadened the product portfolio of Visual Studio, targeting all the way from the low end with students and hobbyists, kind of competitive in that Linux space, making sure that every developer has a copy of .NET and is trained in writing .NET solutions. […] I think it will really help us in our competition with open source.

The more of their own patented technology they can get into free software, the better position the company will be in. Once everyone has adopted it they will then try to control and exploit it, or try to shut it down like they have done many times before. This is exactly what we have seen with the recent VFAT patent claims. But will it work? Possibly.

The Mono project is a free software implementation of the .NET framework, owned by Novell. It runs under Linux, OS X, Unix and even Windows itself. The Mono project is a great open source implementation of .NET, but it is also an essential tool for Microsoft to maintain their strong hold in the computer industry – get everyone using a proprietary programming environment that they control. Then, when the time is right, you can guarantee they will come knocking to collect royalties and sue those who refuse.

There’s no question that C# is a decent language and that many high quality projects have been created as a result of this. Yes, open source does perhaps benefit from these applications, but it’s only a short term gain. Long term, its extremely dangerous. It’s dangerous because if we find ourselves in a position where we rely on Microsoft for our own open source technology, then we are completely at their mercy.

In regards to their original agreement with Novell, Microsoft President Bob Muglia said:

There is a substantive effort in open source to bring such an implementation of .Net to market, known as Mono and being driven by Novell, and one of the attributes of the agreement we made with Novell is that the intellectual property associated with that is available to Novell customers.

So part of Microsoft’s agreement with Novell was to cover patents applying to .NET applications! Those who are developing .NET/Mono applications without a similar Microsoft agreement may be at risk of being sued.

Novell’s Linux distribution, SUSE, also ships with a plugin for the popular open source web browser Firefox called Moonlight, which enables it to play Silverlight (Microsoft’s .NET based framework for web based multimedia) via Mono. This brought about a very interesting agreement between Microsoft and Novell in relation to the use of the technology, where Microsoft agrees not to sue (for a certain period of time) “Downstream Recipients” (yes, the end users) of Novell’s Mono based implementation (and only those online services provided by Novell). The covenant between Novell and Microsoft has been discussed over at Groklaw and is well worth the read. It is also worth noting that Silverlight websites may require various codecs from Microsoft which are not open source and may be patent encumbered.

Thankfully, some Linux distributions are starting to realise this threat and are removing certain Mono applications from future releases. Mono itself is currently included in Fedora, but they have removed support for Silverlight, by forbidding Moonlight. Similar reasons as to why Fedora has removed Moonlight apply to the rest of Mono itself, so it remains to be seen as to whether it will be completely removed in the future.

The GNOME project is one of the most popular desktop environments in the Linux world. Many distributions ship this as their default, including top players; Fedora, SUSE and Ubuntu. Novell is a large contributor to the GNOME project and now more and more of its applications are written in .NET.

Some programs built into GNOME which are written to require .NET are; Banshee (music player), Beagle (search engine), F-Spot (photo management program), GNOME Do (application launcher), Monsoon (bittorrent client), Tasque (task management application), Tomboy (note taking program), many libraries and more. While various applications do depend on .NET, it must be stressed that GNOME is not tied to Mono, yet. It might never be. But then again, it just might.

If GNOME does become dependent on .NET it would open up many open source projects and developers to legal action. Of course, once the infringing patents are made known the software can be re-implemented so that it no longer violates them, but how long will that take? Could an open source company take their entire product offline while a fix is created? Also, what other problems would this introduce? At the very least this would rely on companies standing up to Microsoft in the first instance, something which almost happened with the TomTom case, but which fell apart at the end.

When asked for his opinion about GNOME’s relationship with Mono, Free Software Foundation founder Richard Stallman answered:

Mono is a free implementation of Microsoft’s language C#. Microsoft has declared itself our enemy and we know that Microsoft is getting patents on some features of C#. So I think it’s dangerous to use C#, and it may be dangerous to use Mono. There’s nothing wrong with Mono. Mono is a free implementation of a language that users use. It’s good to provide free implementations. We should have free implementations of every language. But, depending on it is dangerous, and we better not do that.

The key issue is dependence. Free software must remain independent of all Microsoft intellectual property, including the .NET framework.

Isn’t this the case with all open source software though, like Samba? It certainly is. Let’s look at Samba a little more closely. Samba implements the Server Message Block protocol for data sharing, which was invented at IBM. Microsoft took this protocol and extended it for use in their operating systems. Samba has continued to incorporate changes to make itself compatible with the Windows implementations and in doing so may have violated a number of software patents. In fact, project founder Andrew Tridgell admits this is the case and says that the team has spent lots of time ensuring they do not violate the ones they know about.

However, the extra good news is that the result of the European Commission’s antitrust lawsuit against Microsoft in 2004 (which Microsoft lost an appeal against in 2007) meant that the company was, among other requirements, forced to enter an agreement with Samba to provide technical documentation for their technology. The agreement also ensures that Microsoft cannot sue over any of its intellectual property related to the project. It might sound similar to the Microsoft-Novell deal but it is very different.

Having been scrutinised by the Software Freedom Law Center, the Samba agreement covers all users of the Samba software and any derivatives thereof. The Samba Team announced:

Under the agreement, Microsoft is required to make available and keep current a list of patent numbers it believes are related to the Microsoft implementation of the workgroup server protocols, without granting an implicit patent license to any Free Software implementation. No per-copy royalties are required from the PFIF, Samba developers, third party vendors or users and no acknowledgment of any patent infringement by Free Software implementations is expressed or implied in the agreement.

So Samba is safe, but the fact that the project needs an agreement like this should sound warning bells for anyone implementing Microsoft technology. Fortunately for us, we all benefit from Samba’s work, but no such agreement exists in relation to other Microsoft technologies, including .NET.

Of course, there are potentially thousands of patent issues affecting free software and we cannot run scared. Once we know about particular patent infringements in free software, they can be resolved. But there’s a difference between implementing software which might turn out to infringe on some patents and deliberately writing free software using a proprietary framework.

Some in the community have seen this threat also and have started porting applications away from .NET. One such project is Gnote, a C++ port of GNOME’s Tomboy note taking application, written by ex-Novell employee Hubert Figuiere. Although not yet feature complete (as of May 2009), it runs much faster and consumes fewer resources. Gnote has quickly been gathering popularity and is already available in most major distributions. Even if there is no port of a specific .NET application, there are plenty of alternatives. The first step is to remove Mono from your Linux box and install replacements.

If you’re using Debian or a derivative such as Ubuntu, you can remove Mono and all applications using the following command (run as root):

apt-get remove --purge mono-common libmono0

apt-get --purge autoremove

Next, download and install Mononono, which sets up a conflict with the real Mono packages, stopping applications from pulling it back in. Like so:

wget http://tim.thechases.com/mononono/mononono_1.0_all.deb

dpkg -i mononono_1.0_all.deb

For users on a Yum based RPM system such as Fedora, the following commands (run as root) will remove mono and block any package from being installed which depends on it:

yum erase -y mono-\*

sed -i '/^\[main\]$/a exclude=mono-\*' /etc/yum.conf

For those using SUSE or variant, Novell actually gives us the best tool to combat it, thanks to their package manager which can lock packages. First, you need to remove the offending packages, then you lock them so that applications which want to pull Mono back in, cannot. As root, run the following commands:

zypper remove mono

zypper al *mono

zypper al mono-*

This will then remove many of the core applications that Novell bundles with their distribution. Once the system is clean and Mono-free, it’s time to replace those .NET programs. Some to consider in the GNOME/GTK+ space are; Rhythmbox (music player), Tracker (search engine), gThumb (photo management program), Deskbar-Applet (application launcher), Deluge (bittorrent client), Gnote (note taking program).

What else can you do? Vote with your feet. Let your distributions know that you don’t want Mono tainting free software. You’ll also get the added benefit of a computer which runs faster! Microsoft’s number one goal is to keep the world using their software. After all, this is how the company makes money. They will do that by any means necessary, including suing companies (and even end users) who do not submit to their threats.

Microsoft only recently started licensing VFAT, once it had become a de facto standard in the computing industry. What’s stopping them from trying to do the same with .NET? Using it as a programming platform may be putting the free software world in a bad position. By all means, let Linux run Windows .NET applications through Mono, but let’s not make our own software dependent on this proprietary programming framework.

In 2001 Microsoft founder Bill Gates said:

Microsoft has had clear competitors in the past. It’s a good thing we have museums to document that.

Make no mistake. Microsoft is out to destroy Linux (their self-proclaimed number one threat) to maintain their position as the dominant software super power. Let’s not give them a helping hand.



Mono: An infectious disease? by Christopher Smart is licensed under a Creative Commons Attribution-ShareAlike 3.0 Australia License.

Based on a work at blog.christophersmart.com.