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.”

So what are you all waiting for? Start showing some code.