Tubthumping

A place to rant.

Tuesday, November 15, 2005

In defense of proprietary software

Last week, Free Software Foundation President Richard Stallman came to visit Brown University to give a talk about (you guessed it) free software. In it he outlined four freedoms with respect to software which he believes to be central for a just society. I won't detail them here (you can find them described by the GNU project), but I'll give a brief description of them:

Freedom 0: freedom to control one's own computer. One should be able to run any program which they legally obtained, for any purpose, whenever they want, however many times they want, etc.
Freedom 1: freedom to help oneself. One should be able to examine the source code to understand and modify it as necessary to make a program suit his needs.
Freedom 2: freedom to help one's friends. One should be able to distribue a program to friends who also could be served by it.
Freedom 3: freedom to help one's community. One should be able to distribute the modified program to help others.

Stallman claims that these freedoms are essential. Any software obeying them is called free; anything else is called proprietary. He argues that creating, distributing, and even using proprietary software is simply unethical.

I agree that these freedoms are Good Things. I think the world would be a better place if they were always provided. However, there are a lot of practical concerns that get in the way of things, and I'm not convinced that this is an ethical issue. Stallman argues that companies like Microsoft "oppress" their users by not providing these freedoms; while I might agree with that particular example, I don't think proprietary software in general is oppressive.

Here are two major problems with adopting the Free Software ideals: they're not economically sustainable, and they're impractical.

First, there's the question of economic incentives. Why would anybody produce software if they were not to get paid for it? More formally, if we consider the socially optimal amount of software produced, would that level be reached if people were not compensated for their work?

Well, would people be compensated for their work? Who would pay anybody to produce software which they could otherwise get for free? (Note that I'm well aware that free-as-in-speech software isn't by definition monetarily free, but I think that's a necessary condition, which I won't describe here.)

The model Stallman suggests is that a thousand people who want a piece of software get together to contribute $100 each toward the cause. They hire some programmers to create the software, and it gets done.

But he neglects the so-called "free rider" problem. Why would I, a member of this organization, contribute $100 knowing that if I simply chose not to, the project would still get done (and I'd still reap the benefits)? This is a known economic problem; this isn't just me being cynical.

It's possible that people would, in fact, be willing to pay for some software, because it's worth it to them to have it immediately and know that it gets done right. However, it's not clear that this would be the case for all the software that exists today. This problem may be solvable, but that Stallman failed to even address it really hurt the argument.

The other (related) problem with free software is its impracticality in some cases. Now, there are plenty of instances in which free software performs as well or better (in terms of quality as well as efficiency) than proprietary counterparts. Two prime examples are the Apache web server (hosting more than half the sites on the Internet), and the Mozilla Firefox browser. But there are many cases in which free software simply doesn't cut it.

Take the Java platform. There are currently free implementations for the Java 1.4 platform. But Java 1.5 has been out for over a year now. I understand that it's a huge change, and I don't criticize the developers of the free implementations for their efforts. But it's unacceptable for many businesses to use these free implementations because they'd be trading the great improvements of the latest platform for abstract ideals. For example, the 1.5 library contains immensely faster implementations of various collections and primitives in java.util.concurrent which can speed up programs by several times. A company which chose free software over the official Sun implementation would give up this and provide a product which is substantially lesser in quality than it could be. That's not good for anybody.

Now, before I close I want to make it clear that I actually support free software as an ideal. I run GNU/Linux myself, using almost exclusively free software. And I'm often annoyed by the restrictions of proprietary software. What I question is the moral imperative that the FSF seeks to impart, as well as whether such a model can be sustained on a large scale. I'd love to develop a way to make free and open source software a viable mainstream idea, but I think the FSF has yet to do so. I invite your comments.