Wednesday, July 4, 2007

Open Source and Free Software

Every once in a while, somebody suggests that the only sane thing to do with Delphi is to open-source it. Other times someone says that we should all be using Linux because it is "free". And then there are those luminaries that suggest that it is "rude" to offer any criticism of a piece of software that is free. Finally, how many times have you seen somebody end an evaluation of a piece of software by saying "Best of all it is free!"?

There seems to be a lot of mythology built up around open source and freeware, and most of this mythology reflects poorly on the rational abilities of a great number of programmers. Don't get me wrong, in the paragraphs that follow I will have a few apparently harsh things to say about open source and free software, but I am not "rabidly opposed" to the use of open source and free software, as one misguided person recently opined in a newsgroup. I believe in being realistic about the software one uses and creates, so I have little patience with religious issues in software. Microsoft versus Borland? Java versus .NET? I think you can take such artificial dichotomies and stick them up your--Hang on Jake! This is a family forum!

Before continuing, it might perhaps be prudent to mention that I use open source and free software quite extensively in my newsreader project, as well as several commercial libraries and packages. I am a contributor and member of the core team of one of the most successful open source projects in the Delphi world. So if you think you are about to read the ravings of a religious fanatic, you need to realign your perspective. I am interested in debunking a couple of myths that surround open source software and get programmers into a lot of trouble with their PHB's, who for all their foibles and foolishness seem less retarded on these types of issues than the programmers that mock them behind their back. So let's look at the myths by which many programmers are hoisting themselves upon their own petards...

1) "Free software costs less than commercial software, afterall it is free. What is cheaper than free?" There is no such thing as a free lunch, and this really goes double for software. The true cost of using software is the value of ALL the resources used up in order to use it.

This involves time, as well as additional costs intrinsic to the use of the software itself. Suppose a piece of freeware takes you 5 hours to learn. If you bill at $50 an hour, that software has just cost somebody (either you or your client) $250 right off the bat. Poor or non-existent documentation is the largest cause of a high learning curve, and open source is notoriously poor in this regard. Look at the most successful open source projects and even they seem to have minimal documentation or unintuitive designs that increase the learning curve.

In addition the value of time, there is also the other costs of change. Suppose a firm decides to drop Windows XP and use Linux instead, a dream come true for many techies hiding in the server rooms of many a firm. They now have to retrain all their employees to use the new operating system and the different applications that run on that operating system, and endure the temporarily lower productivity that plagues every learning curve. For even a moderately sized firm, this cost alone is prohibitive.

2) "If XXX company open sources product YYY, then very quickly there will be no serious bugs because the whole universe will be looking at the code and finding and fixing the bugs." I've seen this argument made on behalf of open source several times and I have to laugh every time I see it. We have both empirical fact to disprove this overly-optimistic statement, as well as reason and rationality.

The empirical fact is obvious. There are plenty of open source projects that have bugs, some of them quite serious. One of the most notorious for years had been Netscape incarnation of Mozilla. Of course, Lazarus has been trying to rise from the grave for several years now, to save the Delphi and Object Pascal world from it's Original Sin. (Hey, I can mix my metaphors more than I mix drinks!) Back when I took Linux seriously I installed several incarnations of that operating system. Despite the assurances by enthusiasts that Linux was impossible to crash, I managed to hang Linux several times. (The problem there wasn't that Linux had some bugs, it was the outright lie from nearly everyone that it had none.) That was the part of my life where I decided to reject religion in programming and software matters. Aside from bugs, we also have the example of things like the Turbopower libraries that, except for Abbrevia, fell stillborn from the Turbopower without any further development despite the excited statements from many a programmer that Turbopower was doing a great and magnificent thing for all mankind by open-sourcing their libraries, that the community could now take it upon itself to continue these libraries from the number one third-party in the Delphi community. If the "whole universe" was looking at and fixing the bugs in the TP libraries, it is sure news to me. Apparently what happened was that everybody thought everybody else was going to donate their time and effort so they could get free software. Only Abbrevia has had ANY development since then, and that is solely do to the unique efforts of one unique individual, Robert "Look at this shirt I found under Brion's chair!" Love.

The reason and rationality is less obvious but just as potentially provocative. Human beings are not altruistic by nature, despite the claptrap of socialist intellectuals to the contrary. The only reasons why people are going to work on software is because they expect to get something back: either money, fame, or the enjoyment that comes from programming for it's own sake. Indy is a good example of an open source project that proves this point. Most of the principle contributors to Indy use it in their jobs or they sell products based on it. They have a genuine financial interest in the continuation of Indy. Others in the project have less of a financial interest in Indy and more of a passion for programming. They get a lot of enjoyment out of programming itself, and they find Indy to be intellectually rewarding. This latter type is rare in any project. But, the same problems that afflict most open source projects also afflict Indy. The biggest problem is that creating user manuals and demos is not as exciting as programming itself, and so Indy is perpetually under-documented and under-demoed. In fact, right now the biggest thing holding Indy 10 from a full bonafide release is the problem of documentation and demoes. Most open source projects seem to die in the final 20% of the project, that region infested by writing manuals, demos and debugging those final hard to fix but doggedly persistent bugs, and doing mind-numbing QA. Indy 10 isn't dead, and it will make it to release eventually, but it is obvious that if it were a commercial product, the docs and demos would most likely be done by now.

Another example of how the lack of altruism affects freeware is Xananews. Written while the author, Colin Wilson, had just gotten divorced, it matured into a relatively decent newsreader. Colin makes the source available and anyone that wants to add to it is perfectly free to do so. Yet, almost nothing is contributed by others, despite the fact that Xananews is most popular among Delphi programmers. Now that Colin is about to become very busy in his personal life, it is likely that Xananews will remain relatively unchanged for a while.

3) There is another aspect of free software that is problematic, and that is the negative effect on commercial software and programmer salaries. It is the height of irony that many of the same programmers that complain that overseas programmers are undercutting their salaries then spend their nights and weekends giving away their skills, even for software that undercuts the sales of commercial software that pays programmer salaries. As I see it, this is a problem for end-user software, but not necessarily for intermediate libraries and software development tools. It is arguable that by providing free software libraries one bunch of programmers is enabling another to affordably write software that could pay the bills.

No comments: