Thursday, December 27, 2007

Mono in Ubuntu

Being someone who is heavily invested in C#, the CLR, and Mono, I find myself driven to keep my finger on the pulse of Mono-related discussions and community sentiment. So, when I came across this blog post from Lost Midnight, I couldn't pass up spending a few minutes to read the article and comments.

The article talks about removing Mono from the main Ubuntu CD distribution so that they can fit some more nifty applications on it.

This comment put things in perspective a bit:

Mono is an implementation of c# runtime which is an ecma and an iso standard. So it is not a patent violation. You're main argument is that little else on the cd uses it so we should chuck it. I dont think much on the cd uses the java runtime so the same argument would apply. There are probably many libraries or runtimes that have little "use" with other apps on the cd. should we get rid of all of them and replace them with your fav apps?


It's true. Mono implements the Common Language Runtime, as defined by the ECMA-335 specification. C# is ECMA-334. And it is there as a support system, not as a user-visible "feature" per se.

Another comment outlined more closely what this meant for Ubuntu.

I think there are some other good reasons to leave it in. For one thing, many .Net applications can run unmodified on Mono--and with a significant performance boost at that. There is fantastic potential here for people thinking about leaving Windows, and it's only very recently become mature enough for .Net developers and end-users to start paying attention to it. The real value in its inclusion is probably not the two applications that are bundled with the distro but in the ability to natively execute a growing genre of Windows applications in a much better way than using Wine.

It's been some time since I checked in on the status of the patent issues, but from what I remember, they center mainly around specific libraries rather than the runtime. If anything should be considered for removal, it would be them. The runtime itself is immensely valuable and--though this is just my opinion--I think C# and the platform surrounding it are some of the most exciting things happening in software development. It is possibly the only thing coming out of Redmond today that one could make that statement about.

Also, I think it's quite a feather in Ubuntu's hat to be able to run those applications AND run them faster than Windows. I say, leave it in for long enough to see whether its potential is realized. In two years, if those two apps are the only thing useful running off of Mono, by all means cut it out.

I suspect however that will not be the case.


Unfortunately, the cards are stacked against Mono in this case, because .NET adoption among Windows programs alone is still struggling to catch on.

My favorite comment was this one though:


If you want Microsoft developers and users to adopt Linux, removing the Mono runtime is a step back.

The Mono runtime allows me to develop software in C# that runs on Linux. By having Mono installed by default this means that I can get a wide adoption rate of my software in Linux.

Mono is an extremely strong tool for moving people entrenched in Microsoft over to Linux.

Putting Mono on Ubuntu is a chess move. Taking Mono off of Ubuntu and replacing it with common utilities is a checkers move.