Open Source and Code Quality

I have been using AIX 4.2 and win95 a lot recently, and that has given me opportunity to reflect on the nature of code quality. Let me begin by reaffirming the obvious: Linux is wildly superior to both. But how did this come to be?

Let me offer an explanation, and also a bold, over-arching prediction: Traditional software development, as governed by hierarchies of managers and masses of employees will die; will mutate into a very, very different form. Bold, OK? How can I possibly claim this?

With AIX 4.2, in the default configuration, the arrow keys on the keyboard don't work. Some mumbo jumbo .kshrc scripts can fix this, but they're not the default scripts. The default COSE/CDE window manager, when launching a tty, will by default fail to run either .profile, or .kshrc. I haven't figured out how to change this insulting default. At least in win95, the arrow keys work, and autoexec.bat runs when you start DOS. At this level, win95 *is* friendlier than AIX (although its far more horrible when you try to do development on it. The IDE's are a joke).

How did this sorry state of affairs come to be?

Development by Management Fiat
AIX developers don't develop for themselves, they develop for what management wants. And management wants under-budget, ahead-of-schedule. Some corners get cut. The coders don't have time to fix little things. And no one cares: they're not building this stuff for their own personal use.

Its like having insurance work done on your house: the insurance agent comes in, the construction contractor comes in, wham bam thank you mam, and you're left with some shoddy, slightly lower quality stuff than what you would have gotten if you'd done it yourself. Saved the insurance company some bucks. Which brings me to the next point.

Open Source
Without Open Source, I can't really get in there and fix the stupid defaults that AIX ships with. And even if I was and IBM employee, with full access to the source, I might be able to fix it, but wouldn't be able to get the bureaucracy to ship it. You need approvals, system test, etc. and besides, its not your job. Your manager won't support your efforts to fix other peoples code. That's not what you're paid for. There is no way for a do-gooder to publish their good works. Do-goodness gets squashed.

By contrast, with open source, you can set it up the way you like it, and then give anyone else a copy. Its like decorating your home the way you like it: its up to you, not your boss. If your boss decorated your house, your house would look like your office. Blech.

With open source, now that you've decorated your software "house" you can give away copies of you house at essentially no cost. If others like your house, they can move into it, at no cost to you.

Which brings me to the next point: No-cost software and freedom of choice.

Free Markets and Unfettered Competition
Ahh... the spirit of capitalism, the spirit of America, the Freedom to Choose.

When you have two or three no-cost pieces of software, you can, with relatively little investment of your time, download them all, try them, and pick the one you like. When you have $1K pieces of software, you are not going to buy all three competing versions, and then dump the two you don't like. Can't afford to do that. Software that costs money limits your Freedom of Choice. This is the driver behind "try-before-you-buy" philosophy. Except that No-Cost Software has this philosophy beat.

When software is expensive, you have to shift your strategy: Read magazine reviews. Ask friends. Go with the cheaper solutions. Go with the more popular solutions. Herd instinct. The more expensive the software, the more one has to depend on the reviews of others rather than on direct evaluation. (Note though, that even "free" software is not without cost: evaluation takes time, and money.) Expensive software doesn't lead to the fabled "efficiency of markets" that economists talk about. Expensive software, because it provides a barrier to information availability, can't lead as easily to a well-informed choice as low/no-cost software.

Cost provides not only a barrier to competition, but also an impediment to change. After you've paid for something, you are far less likely to replace it with something better, simply because of the costs involved.

Software without cost leads to far more fluid markets, with all of the economic theory implications that follow: efficiency, and offering consumers a broader selection of better products.

To recast it in more radical words: the relationship between the software worker and the means of software production is so radically different than any other relationship that we have in out collective economic history, that a fundamental shift in the industry is inevitable. Although management fiat will never go away, the traditional models of the relationship between management and product will no longer apply to the software industry. The traditional models of the distribution of (software) wealth are already strained. The freedoms of choice coupled with the ability to cheaply, almost freely, make copies, will radically alter the software landscape, and require new economic theories to be created.

Further Reading

Open Source Reading List

Using Electronic Markets to Achieve Efficient Task Distribution

Written on March 13 1998 by Linas Vepstas
Copyright (c) 1998 Linas Vepstas
All Rights Reserved