Nearly every article that I have read in The Linux Gazette has been technical and/or practical, so let me apologize if this seems a bit "off topic." I am primarily an anthropologist, and as such have always been a bit more inclined to write about things more generally. Instead of the technical and practical, I want to wax philosophic for a bit on the subject of free software in general, and the Linux kernel in particular by "porting" a bit of my philosophy of life to the computer. I have tried to write these articles for both the newcomers to the Free Software Community (FSC) as well as for those who have been around a lot longer than I. I will not waste time on the definition of free software except to say that it is free as in freedom. For a definition, I would have the reader visit the GNU/Free Software Foundation website. The few facts that I intend to present will only be news to those unfamiliar with free software, while the philosophy- at least as seen from my vantage- will probably be new to all. My idea is to present what for the lack of a better term I call The Four Cornerstones to the Foundation of Free Software. These are the four main things that I consider vital to the Free Software Movement (FSM) in general, and to the Linux kernel in particular. They are, in no particular order: Doubt, cooperation, non-control (read: Freedom), and rebellion. I have chosen to break these up into a series, because it would be a bit long as one article. In each case, I will give an explanation of what I mean by the idea and an example of how it pertains to the FSM. I also offer the opportunity for discussion/argumentation if anyone cares to explore "Free Philosophy" further. To those few I invite the use of my email address at the beginning of these articles.
The first cornerstone that I will discuss is that of doubt. It is a very powerful and useful word, unfortunately, doubt has gotten a bad rap for no-good reason. When one thinks of doubt, they are almost certainly consumed with thoughts of lies, fear, and uncertainty. It is a dark word, and one that we rarely use in association with someone or something that we love. This is wrong. I believe that doubt, often pure, serious doubt, is absolutely necessary for any true love and exploration of a subject. I also think that if it were not for doubt- and the admission of self-doubt- we wouldn't have free software.
The FSC has a large share of doubt, and this has been one of its main strengths. We doubt that software will work properly, we doubt that it will work at all. We doubt that the code was written efficiently, we doubt that it couldn't be better. Most importantly we doubt that we, ourselves, have written it the best way it could have been written. This doubt, about our product and about ourselves, is the main strength of all free software. Do not misunderstand me on this point. I am in no way suggesting that we are "suspicious" of every program that we use, or that we build binaries expecting them to fail. What I am suggesting is that we do not consider the program "complete," in the sense that the code is unable to be improved or changed.
I'll give you two scenarios to illustrate my point:
Scenario one: I'm a guy who has been programming since I was twelve. I know that I'm a damn good (if a bit arrogant) coder. One day I finish a big program that is my masterpiece. I cried when I compiled this baby. Hell, I almost got divorced because of it! I have no doubt in my mind that this program is perfect! I would immediately punch anybody who said otherwise. So I market it. I box the binary and I ship it, knowing that I'm going to be the next Bill Gates. Soon, I find out that I am the next Bill Gates, after a fashion. My program locks computers from here to New Jersey. Not all of them, mind you, but enough to hurt sales and make people wonder. The bad thing is that I can't figure out why. Certain people didn't like it in the first place because it's big. Now, nobody want's it because it's big and buggy. Even though I tested the hell out of that program.
What I don't know is that some geek in Indiana has figured it out. He has two computers, and the program only crashes on one. It's the Pentium II with the BX chipset on the motherboard. It also crashes his friends LX chipset computer. I have a Pentium Pro, but everyone wants a Pentium II these days, and they all want that extra speed on the board. Suddenly people start realizing that my product (and probably my programming) isn't worth its salt. My masterpiece has failed.
Scenario two: Same guy, same program, same long fight with his wife. Is very sure that his program is perfect, but has just enough doubt (read: wisdom) to know that there is always somebody better. He has just enough doubt to realize that a program can be written in so many ways that his chances of using the best one in this situation are not 100% and his chances of using the only good one for every situation are pretty near 0%. So he offers his product as free software. He gives everyone the right to use it and modify it, hoping that no-one needs too, but knowing that many will do so anyway. Unfortunately, the program creates a nightmare for him by crashing every computer from here to New Jersey. In this scenario, however, there's a geek in Indiana who figures out the problem and writes a patch. Within weeks the patch has fixed the problem, and within months his program is ported to Alphas and Macs, something that he didn't even consider. His program is a success because he realized that he wasn't the one and only "God of programming." He had just enough doubt to temper his delusions of perfection.
Granted, this is a very simplistic situation, but it does highlight my main point. A lack of doubt, in every situation in life, leads to problems. Admission of doubt allows the possibility of another option, it is an opening, of sorts, to different ideas. To have absolutely no doubt is to become fanatical, and when one becomes fanatical, all options- all doors- close. All possibilities for change, or consideration of other methods are destroyed. Ironically, the fanatic's love for a subject eventually becomes its downfall. In the long term, and more radical situations, the very subject of the fanaticism is itself destroyed, because all thought that improvement or change could even be necessary are anathema to the fanatic's beliefs. Eventually, the subject of the fanaticism becomes something wholly different, and often counter, to its original purpose.
It's easy to see this closing of doors, options, and thought by looking at the worlds of politics and religion. It is also easy to see by looking at the world of proprietary software. Corel recently released its version of WordPerfect 8 for Linux, and has since been touting that the Linux community has a "desire for proprietary software," both on it's website and in the press. The company is so sure that its product is perfect, that it is just what the Linux community wants, that it was patting itself on the back just days after the program's release. I can only assume, knowing what I know about people and bureaucracy, that it laughs at any notion that the majority of the Linux community could possibly be silly enough to consider its program big and buggy, despite all the evidence to the contrary. The fact that, in the Linux community, "proprietary" is often a derogatory word, has never crossed their minds. My prediction is that they will continue to measure their "success" by the number of downloads, and not by the number of people who continue to use it on a regular basis. I suspect that many (myself included) downloaded it and almost immediately discontinued its use. The likelihood of a decrease in users is increasing because of good free software word processing programs and the continued growth in the appreciation of existing ones such as Emacs.
The FSC keeps doors open by holding on to that most important resource: Doubt. We are never happy or completely certain that something is "perfect," or that no-one else is able to improve on something. If it works, it is used and respected, but if someone, anyone, thinks that they could improve it- that's admired. We are also protected from the follies of proprietary software in another way. In the world of free software, KISS is the name of the game. The idea is often to Keep It Small and Simple (or my preferred version, Keep It Simple, Stupid). Here, the doubt is that a program that is a behemoth, with a lot of unnecessary fluff, is better than a small one which performs the same function, often more reliably. This is inherent protection from the delusions of grandeur that taint so many proprietary programs. Free software tends to keep its feet on the ground, instead of becoming the bloated dreams of a few hungry individuals.
Netscape recently learned of some of the benefits of the Free Software Movement when it released its code. Apparently, within days (perhaps hours) there was a group of Australian hackers who improved the code, increasing its security. This event was not only good for Netscape users, who have benefited from the increased security, but to Netscape as well. The company now has a better product to offer the consumers. The free software method offers a no-lose situation, and it guarantees success. The reason for this is the next cornerstone that I will be discussing: Cooperation. I will return next month to expound on that idea from the vantage point of my favorite linux soapbox.