Comments on Comments on "In the Beginning Was the Command Line"

No, the title is not a typo. After reading Garrett Birkel's comments on Neal Stephenson's "In the Beginning Was the Command Line", I realized I couldn't resist making a few comments of my own. These are in no particular order and I haven't organized them into a coherent review or article; they're just a few quotes from Birkel's comments and my own comments as they occurred to me.

This doesn't really hold water. Linux is a solid core surrounded by a constantly changing hurricane of sawdust. That core is small. The various and sundry sawdust grains are small as well, because a loose-knit cabal of enthusiasts can only handle a job of so much complexity before it starts to develop faults that would take very serious coordination, and very serious internal changes, to eliminate. This phenomenon works in tandem with the task-oriented nature of many programmers. Specifically, once they have written a program, or knit together a series of programs, that accomplishes their task, they often lose interest in the project. So software either succumbs to feature bloat like an overzealous hermit crab, or it evolves into something else completely, shedding old features and UI along the way until it can no longer easily accomplish the few tasks it was initially designed to handle.

There are a few things that combat this sawdust malaise of coding. One of them is the profit-driven structure of a businesses' engineering department. If they need a program to accomplish a task, or they want to produce a program to help others accomplish a task, the impetus of profit from a task accomplished will drive them to persevere through the growing pains of an application, all the way through the documentation process that is so often abdicated in the online world. Whether they take the resulting code and make it open-source, or whether they develop it with the participation of the outside world, is up to them, and is an unrelated issue. The point to be made here is that the impetus of profit will actually produce better code in the end.

The second thing that combats this sawdust phenomenon is good old-fashioned zealotry. If you've carved out a chunk of code for your very own, or become fascinated with the efficient accomplishment of a task, or even if you're on a crusade to trounce the efforts of some corporation you don't approve of, you will donate a lot of energy to your cause and those big nasty systemic bugs will get squeezed out. Hence:, the WINE project, and (more or less) The Gimp.

I think the thing that geeks didn't foresee, and the thing that may bother them in retrospect, is that these personal, political, or hacker-esque motivations for the open-source community can actually be separated from the process of open-source development itself. Large companies CAN, in fact, appropriate chunks of open-source code, add to them, build on them, create a useful application, turn a profit with that application, and then release all the necessary code to the public domain. Oceans of hackers pounding out open standards and clever apps have not, and will not, topple the swaggering giants of the computer industry, or even of the software industry. Microsoft's exaggerated reaction to the 'threat' of Linux has just planted that hip scenario into the fertile brains of outsiders.

The problem with the above analysis is that it doesn't fit the data. Many of the "workhorse" utilities that do the grunt jobs in Linux, either on desktops or servers, have neither succumbed to feature bloat nor evolved into something else completely. Instead, they have gone through an initial development phase which lasted until the feature set was large enough to satisfy the users, then stabilized around that feature set as bugs were fixed, then went into pure maintenance mode. Eric Raymond's example app in CatB, fetchmail, illustrates this perfectly. Fetchmail's feature set hasn't changed materially in several years. It doesn't need to; it already satisfies all its users. Other nuts and bolts apps on the Net are the same way: sendmail, BIND, etc. When was the last time BIND's feature set changed?

None of these apps were driven by the profit motive of a business. Good old-fashioned zealotry comes closer, but still doesn't quite get there. The key is a sea change in the perceived purpose of code. The idea that programs are written either to accomplish a task or to help others accomplish a task almost captures it, but still doesn't quite get there because of the implication that once the task is accomplished, the program is dead. Most OSS isn't like that, because it isn't programmed to accomplish one specific task; it's programmed to accomplish some general task of which the specific task that first spawned the program is a special case. So the program can outlive the specific task that prompted its original coding.

Also, the claim that the OSS community's motivations can be separated from OSS itself is interesting if true--but are there actually any examples? Has any large company ever actually appropriated some OSS, added to it to create an app, and turned a profit from that app? (And then released all the code to the public domain?) It's important to note that this claim implies a lot more than just taking some OSS and using it to help your business' bottom line. It implies that there should be some major apps out there, of the general nature of MS Office, that were built by taking OSS, adding to it, and turning a profit. So which ones are they?

I, too, adventured in the realm of zoomy CPU-meter lights, hacker techno-geek chic, machine-language softswitch twiddling, fuzzy grayscale GIFs of porn stars, and spent endless caffeinated hours diagnosing IRQ and baudrate settings so I could play Duke Nukem with my friend Brent. Then something wonderful happened: I got tired of computing for it's own sake, and started seeking software and hardware that was not an end unto itself, but an efficient means to complete a task.

So I bought a Powerbook with OS X on it. And while an excellent solution, this is certainly not the only solution. A Windows 2000 setup on a Dell Inspiron laptop would be a fine second choice. And though there are many out there who have developed a comfortable Linux system for themselves, I believe that we should all be judged by the truest measure of the value of any personal computer: How much does it help us accomplish our tasks?

My Linux system does this much better than my Windows 2000 system. I, too, adventured for many years in the realm of trying to keep an Windows system working reasonably well under the growing weight of bugs, viruses, and just plain bad code. I felt a sort of perverse pride in knowing enough to keep on doing this long past the point when it was plainly an exercise in masochism and nothing else. Then something wonderful happened: I got tired of OS fixing for its own sake, and started seeking an OS that was not an end unto itself, but an efficient means to complete a task. So I got Linux. A Powerbook with OS X would probably have been a fine second choice.