Book Read Free

In the Beginning...Was the Command Line

Page 9

by Neal Stephenson


  Because Linux is not commercial—because it is, in fact, free, as well as rather difficult to obtain, install, and operate—it does not have to maintain any pretensions as to its reliability. Consequently, it is much more reliable. When something goes wrong with Linux, the error is noticed and loudly discussed right away. Anyone with the requisite technical knowledge can go straight to the source code and point out the source of the error, which is then rapidly fixed by whichever hacker has carved out responsibility for that particular program.

  As far as I know, Debian is the only Linux distribution that has its own constitution (http://www.debian.org/devel/constitution), but what really sold me on it was its phenomenal bug database (http://www.debian.org/Bugs), which is a sort of interactive Doomsday Book of error, fallibility, and redemption. It is simplicity itself. When I had a problem with Debian in early January of 1997, I sent in a message describing the problem to submit@bugs.debian.org. My problem was promptly assigned a bug report number (#6518) and a severity level (the available choices being critical, grave, important, normal, fixed, and wishlist) and forwarded to mailing lists where Debian people hang out. Within twenty-four hours I had received five e-mails telling me how to fix the problem: two from North America, two from Europe, and one from Australia. All of these e-mails gave me the same suggestion, which worked, and made my problem go away. But at the same time, a transcript of this exchange was posted to Debian’s bug database, so that if other users had the same problem later, they would be able to search through and find the solution without having to enter a redundant bug report.

  Contrast this with the experience that I had when I tried to install Windows NT 4.0 on the very same machine about ten months later, in late 1997. The installation program simply stopped in the middle with no error messages. I went to the Microsoft Support website and tried to perform a search for existing help documents that would address my problem. The search engine was completely nonfunctional; it did nothing at all. It did not even give me a message telling me that it was not working.

  Eventually I decided that my motherboard must be at fault; it was of a slightly unusual make and model, and NT did not support as many different motherboards as Linux. I am always looking for excuses, no matter how feeble, to buy new hardware, so I bought a new motherboard that was Windows NT logo-compatible, meaning that the Windows NT logo was printed right on the box. I installed this into my computer and got Linux running right away, then attempted to install Windows NT again. Again, the installation died without any error message or explanation. By this time a couple of weeks had gone by and I thought that perhaps the search engine on the Microsoft Support website might be up and running. I gave that a try, but it still didn’t work.

  So I created a new Microsoft support account, then logged on to submit the incident. I supplied my product ID number when asked, and began to follow the instructions on a series of help screens. In other words, I was submitting a bug report just as with the Debian bug tracking system. It’s just that the interface was slicker—I was typing my complaint into little text-editing boxes on web forms, doing it all through the GUI, whereas with Debian you send in a simple e-mail “telegram”. I knew that when I was finished submitting the bug report, it would become proprietary Microsoft information, and other users wouldn’t be able to see it. Many Linux users would refuse to participate in such a scheme on ethical grounds, but I was willing to give it a shot as an experiment. In the end, though I was never able to submit my bug report, because the series of linked web pages that I was filling out eventually led me to a completely blank page: a dead end.

  So I went back and clicked on the buttons for “phone support” and eventually was given a Microsoft telephone number. When I dialed this number, I got a series of piercing beeps and a recorded message from the phone company saying, “We’re sorry, your call cannot be completed as dialed.”

  I tried the search page again—it was still completely nonfunctional. Then I tried choosing PPI support (Pay Per Incident) again. This led me through another series of web pages until I dead-ended at one reading: “Notice—there is no Web page matching your request.”

  I tried it again, and eventually got to a Pay Per Incident screen reading: “OUT OF INCIDENTS. There are no unused incidents left in your account. If you would like to purchase a support incident, click OK—you will then be able to prepay for an incident….” The cost per incident was $95.

  The experiment was beginning to seem rather expensive, so I gave up on the PPI approach and decided to have a go at the FAQs posted on Microsoft’s website. None of the available FAQs had anything to do with my problem except for one entitled, “I am having some problems installing NT,” which appeared to have been written by flacks, not engineers.

  So I gave up and still, to this day, have never gotten Windows NT installed on that particular machine. For me, the path of least resistance was simply to use Debian Linux.

  In the world of open source software, bug reports are useful information. Making them public is a service to other users, and improves the OS. Making them public systematically is so important that highly intelligent people voluntarily put time and money into running bug databases. In the commercial OS world, however, reporting a bug is a privilege that you have to pay lots of money for. But if you pay for it, it follows that the bug report must be kept confidential—otherwise anyone could get the benefit of your ninety-five bucks!

  This is, in other words, another feature of the OS market that simply makes no sense unless you view it in the context of culture. What Microsoft is selling through Pay Per Incident isn’t technical support so much as the continued illusion that its customers are engaging in some kind of rational business transaction. It is a sort of routine maintenance fee for the upkeep of the fantasy. If people really wanted a solid OS they would use Linux, and if they really wanted tech support they would find a way to get it; Microsoft’s customers must want something else.

  As of this writing (January 1999), something like 32,000 bugs have been reported to the Debian Linux bug database. Almost all of them have been fixed a long time ago. There are twelve “critical” bugs still outstanding, of which the oldest was posted seventy-nine days ago. There are twenty outstanding “grave” bugs, of which the oldest is 1166 days old. There are forty-eight “important” bugs, and hundreds of “normal” and less important ones.

  Likewise, BeOS (which I’ll get to in a minute) has its own bug database (http://www.be.com/developers/bugs) with its own classification system, including such categories as “Not a Bug,” “Acknowledged Feature,” and “Will Not Fix.” Some of the “bugs” here are nothing more than Be hackers blowing off steam, and are classified as “Input Acknowledged.” For example, I found one that was posted on December 30, 1998. It’s in the middle of a long list of bugs, wedged between one entitled “Mouse working in very strange fashion” and another called “Change of BView frame does not affect, if BView not attached to a BWindow.” This one is entitled:

  R4: BeOS missing megalomaniacal figurehead to harness and focus developer rage

  and it goes like this:

  Be Status: Input Acknowledged

  BeOS Version: R3.2

  Component: unknown

  Full Description:

  The BeOS needs a megalomaniacal egomaniac sitting on its throne to give it a human character which everyone loves to hate. Without this, the BeOS will languish in the impersonifiable realm of OSs that people can never quite get a handle on. You can judge the success of an OS not by the quality of its features, but by how infamous and disliked the leaders behind them are.

  I believe this is a side-effect of developer comraderie [sic] under miserable conditions. After all, misery loves company. I believe that making the BeOS less conceptually accessible and far less reliable will require developers to band together, thus developing the kind of community where strangers talk to one-another, kind of like at a grocery store before a huge snowstorm.

  Following this same program, it wi
ll likely be necessary to move the BeOS headquarters to a far-less-comfortable climate. General environmental discomfort will breed this attitude within and there truly is no greater recipe for success. I would suggest Seattle, but I think it’s already taken. You might try Washington, DC, but definitely not somewhere like San Diego or Tucson.

  Unfortunately, the Be bug reporting system strips off the names of the people who report the bugs (to protect them from retribution!?) therefore I don’t know who wrote this.

  So it would appear that I’m in the middle of crowing about the technical and moral superiority of Debian Linux. But as almost always happens in the OS world, it’s more complicated than that. I have Windows NT running on another machine, and the other day (Jan. 1999), when I had a problem with it, I decided to have another go at Microsoft Support. This time the search engine actually worked (though in order to reach it I had to identify myself as “advanced”). And instead of coughing up some useless FAQ, it located about two hundred documents (I was using very vague search criteria) that were obviously bug reports—though they were called something else. Microsoft, in other words, has actually got a system up and running that is functionally equivalent to Debian’s bug database. It looks and feels different, of course, and it took a long time for me to find it, but it contains technical nitty-gritty and makes no bones about the existence of errors.

  As I’ve explained, selling OSes for money is a basically untenable position, and the only way Apple and Microsoft can get away with it is by pursuing technological advancements as aggressively as they can, and by getting people to believe in, and to pay for, a particular image: in the case of Apple, that of the creative free thinker, and in the case of Microsoft, that of the respectable techno-bourgeois. Just like Disney, they’re making money from selling an interface, a magic mirror. It has to be polished and seamless, or else the whole illusion is ruined and the business plan vanishes like a mirage.

  Accordingly, it was the case until recently that the people who wrote manuals and created customer support websites for commercial OSes seemed to have been barred, by their employers’ legal or PR departments, from admitting, even obliquely, that the software might contain bugs or that the interface might be suffering from the blinking twelve problem. They couldn’t address users’ actual difficulties. The manuals and websites were therefore useless, and caused even technically self-assured users to wonder whether they were going subtly insane.

  When Apple engages in this sort of corporate behavior, one wants to believe that they are really trying their best. We all want to give Apple the benefit of the doubt, because mean old Bill Gates kicked the crap out of them, and because they have good PR. But when Microsoft does it, one almost cannot help becoming a paranoid conspiracist. Obviously they are hiding something from us! And yet they are so powerful! They are trying to drive us crazy!

  This approach to dealing with one’s customers was straight out of the Central European totalitarianism of the mid-twentieth century. The adjectives “Kafkaesque” and “Orwellian” come to mind. It couldn’t last, any more than the Berlin Wall could, and so now Microsoft has a publicly available bug database. It’s called something else, and it takes a while to find it, but it’s there.

  They have, in other words, adapted to the two-tiered Eloi/Morlock structure of technological society. If you’re an Eloi you install Windows, follow the instructions, hope for the best, and dumbly suffer when it breaks. If you’re a Morlock, you go to the website, tell it that you are “advanced,” find the bug database, and get the truth straight from some anonymous Microsoft engineer.

  But once Microsoft has taken this step, it raises the question, once again, of whether there is any point to being in the OS business at all. Customers might be willing to pay $95 to report a problem to Microsoft if, in return, they get some advice that no other user is getting. This has the useful side effect of keeping the users alienated from one another, which helps maintain the illusion that bugs are rare aberrations. But once the results of those bug reports become openly available on the Microsoft website, everything changes. No one is going to cough up $95 to report a problem when chances are good that some other sucker will do it first, and that instructions on how to fix the bug will then show up, for free, on a public site. And as the size of the bug database grows, it eventually becomes an open admission, on Microsoft’s part, that their OS has just as many bugs as their competitors’. There is no shame in that; but it puts Microsoft on an equal footing with the others and makes it a lot harder for their customers—who Want to Believe—to believe.

  MEMENTO MORI

  Once the Linux machine has finished spitting out its jargonic opening telegram, it prompts me to log in with a user name and a password. At this point the machine is still running the command line interface, with white letters on a black screen. There are no windows, menus, or buttons. It does not respond to the mouse; it doesn’t even know that the mouse is there. It is still possible to run a lot of software at this point. Emacs, for example, exists in both a CLI and a GUI version (actually there are two GUI versions, reflecting some sort of doctrinal schism between Richard Stallman and some other hackers). The same is true of many other Unix programs. Many don’t have a GUI at all, and many that do are capable of running from the command line.

  Of course, since my computer only has one monitor, I can only see one command line, and so you might think that I could only interact with one program at a time. But if I hold down the Alt key and then hit the F2 function button at the top of my keyboard, I am presented with a fresh, blank, black screen with a login prompt at the top of it. I can log in here and start some other program, then hit Alt-F1 and go back to the first screen, which is still doing whatever it was when I left it. Or I can do Alt-F3 and log in to a third screen, or a fourth, or a fifth. On one of these screens I might be logged in as myself, on another as root (the system administrator), on yet another I might be logged on to some other computer over the Internet.

  Each of these screens is called, in Unix-speak, a tty, which is an abbreviation for “teletype.” So when I use my Linux system in this way, I am going right back to that small room at Ames High School where I first wrote code twenty-five years ago, except that a tty is quieter and faster than a teletype, and capable of running vastly superior software, such as emacs or the GNU development tools.

  It is easy (easy by Unix, not Apple/Microsoft standards) to configure a Linux machine so that it will go directly into a GUI when you boot it up. This way, you never see a tty screen at all. I still have mine boot into the white-on-black teletype screen however, as a computational memento mori. It used to be fashionable for a writer to keep a human skull on his desk as a reminder that he was mortal, that all about him was vanity. The tty screen reminds me that the same thing is true of slick user interfaces.

  The XWindows system, which is the GUI of Unix, has to be capable of running on hundreds of different video cards with different chipsets, amounts of onboard memory, and motherboard buses. Likewise, there are hundreds of different types of monitors on the new and used market, each with different specifications, and so there are probably upwards of a million different possible combinations of card and monitor. The only thing they all have in common is that they all work in VGA mode, which is the old command line screen that you see for a few seconds when you launch Windows. So Linux always starts in VGA, with a teletype interface, because at first it has no idea what sort of hardware is attached to your computer. In order to get beyond the glass teletype and into the GUI, you have to tell Linux exactly what kinds of hardware you have. If you get it wrong, you’ll get a blank screen at best, and at worst you might actually destroy your monitor by feeding it signals it can’t handle.

  When I started using Linux this had to be done by hand. I once spent the better part of a month trying to get an oddball monitor to work for me, and filled the better part of a composition book with increasingly desperate scrawled notes. Nowadays, most Linux distributions ship with a program that
automatically scans the video card and self-configures the system, so getting XWindows up and running is nearly as easy as installing an Apple/Microsoft GUI. The crucial information goes into a file (an ASCII text file, naturally) called XF86Config, which is worth looking at even if your distribution creates it for you automatically. For most people it looks like meaningless cryptic incantations, which is the whole point of looking at it. An Apple/Microsoft system needs to have the same information in order to launch its GUI, but it’s apt to be deeply hidden somewhere, and it’s probably in a file that can’t even be opened and read by a text editor. All of the important files that make Linux systems work are right out in the open. They are always ASCII text files, so you don’t need special tools to read them. You can look at them any time you want, which is good, but you can also mess them up and render your system totally dysfunctional, which is not so good.

  At any rate, assuming that my XF86Config file is just so, I enter the command “startx” to launch the XWindows system. The screen blanks out for a minute, the monitor makes strange twitching noises, then reconstitutes itself as a blank gray desktop with a mouse cursor in the middle. At the same time it is launching a window manager. XWindows is pretty low-level software; it provides the infrastructure for a GUI, and it’s a heavy industrial infrastructure. But it doesn’t do windows. That’s handled by another category of application that sits atop XWindows, called a window manager. Several of these are available, all free of course. The classic is twm (Tom’s Window Manager), but there is a smaller and supposedly more efficient variant of it called fvwm, which is what I use. I have my eye on a completely different window manager called Enlightenment, which may be the hippest single technology product I have ever seen, in that (a) it is for Linux, (b) it is freeware, (c) it is being developed by a very small number of obsessed hackers, and (d) it looks amazingly cool; it is the sort of window manager that might show up in the backdrop of an Alien movie.

 

‹ Prev