In this article, I ask the perennial question: Is your definition of free choice when a company CEO gets to make a decision or when you get to make a decision?
About five or six years ago, I attended my first Linux World. I went to book signing by a guy I kept hearing about named Eric S. Raymond. At the time, Raymond had a new book out called "The Cathedral and the Bazaar."
In the midst of a profound crisis of doubt about the future of Kylix, I decided that I had to talk to this guy, and figure out if this Linux thing really made any sense. In my inimitable way, I posed to him what must surely have been one of the stupidest questions he ever received: "I’m thinking of buying your book, but frankly, I’m a developer. I don’t want a book by a manager. Have you ever written any code, or is your experience just on the management side?" I now know that this was a bit like walking up to Anders Hejlsberg and asking him if he knew how to write a for loop.
Raymond reeled back in his chair. His mouth hanging open, he stared at me blankly for a moment. Finally he turned to the guy sitting next to him and said: "What do you think, am I developer?" And to their credit, these two guys patiently explained to me that Eric S. Raymond had written more software than most people are ever likely to have time to use.
So I bought Raymond’s book, and he politely signed it "For Charlie," rather than writing: "Dear idiot," or whatever he was truly thinking. And I took the book home and swallowed it whole in one or two evenings.
Open Source and Open Standards
Raymond and other folks in the open source movement had found extremely fertile ground for their ideas. Everything they said about open standards and about open source resonated with me. I wanted to be on Linux, but my compiler wasn’t truly cross platform, and wasn’t written to an open standard. I felt trapped. Descriptions of Open Source and Open Standards showed me exactly how I was pinned.
Before that moment, I, with good reason, judged development languages in terms of ease of use and robustness of architecture. But suddenly I had a new yard stick by which to judge a tool:
- Did it encourage free choice? If I chose the tool, could I use it on any platform, or was I locked into a particular platform?
- Did I have the ability to fix bugs or change features in the product? In other words, did it come with source, and could I compile it?
- What dictated product cycles? Were releases all about making money, or was the product released when it was ready to ship?
Money and Open Source
Many people get the Open Source movement confused with the Free Software movement. In other words, they confuse RMS (Richard Stallman) and his Free Software movement with ESR (Eric Steven Raymond) and the Open Source movement.
To get a quick overview of their differences, see this short article: http://www.catb.org/~esr/open-source.html. In it, Raymond explains that the Open Source movement has always been about moving into corporations. This is one of the core purposes of the whole movement.
People are expected to, and encouraged to, make money with Open Source software. It is, again, one of the core purposes of the entire movement.
This article from Information Week shows that there is not just a little bit of money in the open source movement. By 2008, Linux is expect to bring in over 35 billion dollars in annual revenues.
The goal of the open source movement is not to keep people from making money, it is to make it easier for them to make money. Developer tools should be released as open source because it helps developers make better software, and hence to make money more easily. Whenever you use proprietary software, you are selling out your chances to make money, your chances to be successful, so that some proprietary company can lock you into solutions that make them money.
If the paying software market were truly a free market, and were not controlled by one or two big companies, then the open source model would be ubiquitous. It is so much better than the closed source model that it would easily win out. But in the meantime, the only way to compete against some companies is to release free software. If you go into the "free market" with them, they will either buy you out, or build a competing product and release it for free.
There is currently only a severely limited form of competition in the software market, hence the importance of free software. But the coincidence of free software and open source software is just a by product of the current software market, it is not the purpose of the Open Source movement. The purpose of the movement is to create better software, and hence to make it easier for people to make money.
Making a Choice
If you can make money using open source software, then why not use it? Well, some people would argue that proprietary software is better than open source software. But is this true?
Is IIS better than Apache? Few people would claim that it is superior. Is the Borland C++ compiler better than GCC? In some ways yes, but in other ways no. Is Visual Basic a better language than Python? Not likely.
And yet, it is not always easy to answer these questions. For instance, MS SQL has more features and better tools than MySQL. But MySQL is much faster than MS SQL. The last major release of MS SQL was some five years ago. MySQL has gone through many cycles during that period, and in the process they have responded to the needs of developers who wanted important fixes or important new features. Which tool is better? It’s not always so easy to decide.
Of course, the great open source projects, such as Perl, Python, Ant, GCC and Apache, are released at extremely high levels of quality. There are thousands of eyes looking at these products, and as a result, the have very few defects. But in some cases, proprietary software has the edge. For instance, there is no open source version of Pascal that is as good as Delphi 7.
Some products, such as Python, Perl, GCC, and Apache, give you complete freedom of choice. They ship with source, and you can change them, fix them, even contribute new software to the project. Other products, such as Delphi or Java, ship with at least significant amounts of source, but have some limitations on what you can do with the software. For instance, Delphi is not cross platform, there is no open standard for the language, and there is no free compiler which guarantees the product’s future regardless of what happens to Borland. Other products don’t ship with source, don’t let you fix bugs, don’t let you customize the software in any way you want. They are the personification of non-free software. The companies that make that kind of software are primarily interested in controlling the customer. There are still issues of free choice involved, it’s just that you don’t get to make the choice, the company does.
With Linux on the road to earning 35 billion a year, money is clearly no longer the deciding issue. People have always made money off "free" software like Java and Apache. The debate over open standards and open source was never about money.
The debate is over freedom of choice. Are you locking yourself into a proprietary solution, or are you working with open standards and open source? Is your definition of free choice when a company CEO gets to make a decision or when you get to make a decision?
Ultimately, the choice is yours.