Computer Science isn't a science and it's not about computers

Mono, Clojure and the price of Free

If you’re at all interested in Open Source or Linux you’ve probably heard about the debate surrounding the inclusion of Mono and Mono-based apps in the default Ubuntu distribution. Here is the original post that seemed to trigger it all. Here is the reply that was posted by Jo Shields, a member of the Debian Mono group. Richard Stallman also weighed in on the matter, in favor of removing Mono. Now I think having ideals and standing up for them is great and that people should always stand up for what they believe in. However, it’s one thing to stand up for your ideals and do what you have to, but it’s quite another to use your ideals as an excuse for making people use something that is of lower quality and that they don’t want to.

I think that people who advocate open source often forget that a lot of people (including a lot of people working with computer technology) care less about the licensing of their software and more about whether or not it works well. The reason open source succeeded isn’t so much due to a religious zeal to use only Free products but rather due to the fact that it let people open up the innards of their software and make changes so that things worked better. The reason I use Linux over Windows is that I can start up in 30 seconds as opposed to 5 minutes and have things organized just the way I like. And I like OS X better for managing my media and doing graphic related stuff.

The second bone I have to pick regards all the talk of “alternatives”. The original post says “There are alternatives to every Mono application that for the most part are better” and quite conveniently fails to mention any of them. Stallman says that the ‘probem’ is with applications like Tomboy which depend on Mono and also fails to mention any alternatives that would not depend on Mono. It’s this sort of condescending attitude towards developers who are doing real work that really irritates me. Stallman is a very inspiring figure who has done a lot of work for open source, but let’s not forget that a lot of ‘pure’ free software GNU projects have been stalling for years while alternatives leap ahead. Free software owes its position today in no small part to the Linux kernel, while the GNU’s own Hurd kernel which started development before Linux is still unusable for most intents and purposes. The Guile scripting language which was supposed to become standard across all GNU tools is also mostly a pipe dream. GNU’s Flash replacement is mostly inadequate. GNU Emacs is a wonderful piece of technology, but it’s losing out to newer IDEs. I personally believe these IDEs are inferior to Emacs in many ways, but are much more in-tune with modern developer needs while Emacs is in many ways is stuck in the past. “Show me the code” was a popular slogan when Microsoft threatened to use it’s patent portfolio against linux, I think it’s time Open Source enthusiasts followed their own slogans.

Finally, this whole business of “Microsoft is evil” is getting tiresome. Yes Microsoft did bad things. Yes, they’re out to get Linux and free software. Maybe Novell is a sell out. So? I don’t like them either. Don’t use Windows and close down your Hotmail account. If you read Jo Shields’reply, you’ll see that Microsoft had no hand in the development of Mono and the agreements with Novell do not cover it. Tomboy and F-Spot are free applications running on a free runtime system. It is reimplementation of a Microsoft standard, containing no Microsoft code. If you still think that Mono is ‘tainted’ because of the association, then that’s your choice and you can take Mono off your system and vow never to use Mono-reliant apps. As a user of free software that is your choice. But it is not your right nor your duty to force other people to do the same. Choice is at the core of free software and if you are trying to tell people that they can’t use or distribute some piece of software, then you are no better than Microsoft or other commercial software makers pulling users into vendor lock in.

At this point, I’m going to change track and talk about a post that appeared as a blip on Reddit a few days ago. It’s called Thumbs Down on Clojure and it basically denounces Clojure as a false Lisp because it interfaces tightly with Java and so has to abandon a lot of the ‘pure’ principles behind real Lisp. Now I have nothing at all against the author’s actual post and I actually like it that he is speaking his mind. The author drew a lot of flak from Reddit users because he placed purity above practicality and more importantly because he had nothing but vaporware to offer as an alternative.

To tell the truth, I have very mixed opinions about what this guy is doing (and talking about). Having seen the power of Lisp, I understand the attraction of purity. Having struggled to find a good cross-platform UI toolkit that doesn’t take a CS major to install makes me believe that when it comes to software, practicality trumps purity every single time (though pure and practical can coexist). And one bird in the hand is worth two in the bush. Though I use Linux and OS X, I have issues with modern operating systems in general. I would love to have an operating system with a fast, lean core but with a uniform, powerful, managed runtime on top in which all user applications are built and which achieves close-to-the-metal performance. I have some ideas on how it could be done, but I don’t have the knowledge or the resources to implement something like that. And till I’m in a position to make real contributions to the world around me, I don’t think it’s fair for me to deride the works that others are doing to make the world a little better for all of us.

The core thread behind both the above issues is that free software really isn’t free at all. There is a significant time and energy investment behind every single line of open source code that you’re using, which includes the software that runs this blog and probably the browser you’re using to read it. Ideals are well and good, but there are real .people who are behind all the free software we use today. Ultimately, the software and ideals don’t really matter, it’s the people that do. The people who make the software, the people who believe and stand up for the ideals and the people who can benefit from both the software and ideals without consciously taking part in either process. It makes me laugh when people like Stallman talk about software being ‘ethical or not’ when the only things that are really ethical are people and their actions. It almost makes me cry when people laugh and deride the work of other people but are incapable of doing anything about it. This isn’t the first time that I’ve heard a Lisp admirer say that they’re appalled at the state of modern Lisps. It’s an understandable sentiment, but what’s equally disturbing to me is that all these smart people (and some of them are really smart) can’t seem to be able to pull together and create something that can blow the socks of all the supposedely substandard solutions that people are using to get real work done right now.

So where does this leave all of us? The same place as where we started. Neither the Mono controversy nor the Lispers’ pining for the good old days is really anything new. Writing good software is hard and always has been, even with the best of tools. And it doesn’t help anyone to criticize productive projects if you don’t have an equally well working alternative. Opposing ideas on a purely ideological basis is often not the best idea (though there are notable exceptions which must not be forgotten). I think Linus Torvalds probably sums things up the best into two quotes. The first one, as I already mentioned, is “Talk is cheap. Show me the code.”. The other one which is equally valid given the circumstances and the rest of this article is “Anybody who tells me I can’t use a program because it’s not open source, go suck on rms. I’m not interested. 99% of that I run tends to be open source, but that’s my choice, dammit.”

At last! Somebody who talks sense and isn’t some kind of open source fundamentalist. Glad to know we’re not alone. What really gets me is the people that whinge and whine about Mono or indeed anything Microsoft is that almost to a man, they know absolutely *nothing* about the technology. They sit on the sidelines and point fingers and hark back to the days of yore when Microsoft was guilty of unpleasant behaviour and completely ignore all the changes since that time. Like all fundamentalists they are completely stuck in one time frame and state of mind and are entirely unable to move on and see things in a new light. They also in my opinion, seem hell bent on making the software industry a support industry only. Who i their right minds would buy software if the source is available? Yet these very people pay their bills by the very same means. They don’t seem to understand which side their toast is buttered on!

I hate mono, because I think .NET is garbage, but whatever if ppl want to develop in it what do i care? I think FSF is afraid of MS trying to wedge into linux. Maybe thats valid, I dont know, especially after they invested in SCO.

But honestly, who really cares. If someone is really as misguided as to want to develop in C# on linux, then go for it. Rock it. Ill judge by the app that I want or need to use, not by what a pack of open source ambulance chasers tell me to do.

My thoughts on this on my blog, but I am largely in agreement with the thinking behind things.

@Simon
“…hark back to the days of yore when Microsoft was guilty of unpleasant behavior…”?

Ha! You make it sound like 100 years ago Microsoft got a bit tipsy and spoke out of turn at a company picnic. Microsoft is still – as in this current year, 2009AD infringing treaty rules, abusing its position, and generally up to no good. Maybe a short read (PDF) would bring you up to date?

“Stallman is a very inspiring figure who has done a lot of work for open source”

You may not agree with him on many things, but let’s show the man some more respect than lumping him in with the Open Source crowd. And let’s let go of the Hurd straw man, shall we?

“if you are trying to tell people that they can’t use or distribute some piece of software, then …” – no, you are better than MS, since you [the Free Software idealists / dictators] aren’t locking anyone into your system, unlike them. Nobody’s holding a gun to your head and MAKING you not use Mono/whatever; they’re simply declining to make it easy for you to sell yourself into slavery. (I don’t necessarily agree with the Mono-is-evil point, FWIW.)

It’s scary sometimes how much software religion and politics dominate engineering and state-of-the-art, which is really what we should be focused on. Mono is more than capable of standing on its own. You gotta wonder about this whole overreaction thing had it been any other company than Microsoft behind .NET.

IMHO a lot of guys would need an injection of pragmatism. This is a problem that we have outside of the computing world, too. Someone is willing to sacrifice reality and practicality in favour of idealism, and someone else are doing the exact opposite (a comparable mistake I think).

The only thing that really matters in the end are the *results* in *reality*. Otherwise you can make a big mistake: being blind to reality and to holding back the computing world in favour of some idealism that should be instead contribute to a better world. A world that is “free” (“you MUST be free”, do you see something wrong with this one?) but less productive.

Thank you all for your comments and contribution. I’m glad to see that I’m not the only one who is trying to keep alive the spirit of personal independence in open source software.

@David: Your post had some very interesting ideas. I doubt that they will be enacted, but perhaps that in itself that the technical people who are actually building the software have better things to do.
@Bob: I’m glad that you’re making your decision based on technical merits and that you’re respecting the right of others to do as they choose.
@Bernd: I fall into the trap of confusing open source and free software. Thanks for calling me out on it. Your point is interesting and I’ll certainly be thinking more about what you said,