2 Welcome, New User! Like Russian Roulette with Six Bullets Loaded Ken Thompson has an automobile which he helped design. Unlike most automobiles, it has neither speedometer, nor gas gauge, nor any of the other numerous idiot lights which plague the modern driver. Rather, if the driver makes a mistake, a giant “?” lights up in the center of the dashboard. “The experienced driver,” says Thomp- son, “will usually know what’s wrong.” —Anonymous New users of a computer system (and even seasoned ones) require a certain amount of hospitality from that system. At a minimum, the gracious com- puter system offers the following amenities to its guests: • Logical command names that follow from function • Careful handling of dangerous commands • Consistency and predictability in how commands behave and in how they interpret their options and arguments • Easily found and readable online documentation • Comprehensible and useful feedback when commands fail
18 Welcome, New User! When Unix was under construction, it hosted no guests. Every visitor was a contractor who was given a hard hat and pointed at some unfinished part of the barracks. Unfortunately, not only were human factors engineers never invited to work on the structure, their need was never anticipated or planned. Thus, many standard amenities, like flush toilets, central heating, and windows that open, are now extremely hard and expensive to retrofit into the structure. Nonetheless builders still marvel at its design, so much so that they don’t mind sleeping on the floor in rooms with no smoke detectors. For most of its history, Unix was the research vehicle for university and industrial researchers. With the explosion of cheap workstations, Unix has entered a new era, that of the delivery platform. This change is easy to date: it’s when workstation vendors unbundled their C compilers from their stan- dard software suite to lower prices for nondevelopers. The fossil record is a little unclear on the boundaries of this change, but it mostly occurred in 1990. Thus, it’s only during the past few years that vendors have actually cared about the needs and desires of end users, rather than programmers. This explains why companies are now trying to write graphical user inter- faces to “replace” the need for the shell. We don’t envy these companies their task. Cryptic Command Names The novice Unix user is always surprised by Unix’s choice of command names. No amount of training on DOS or the Mac prepares one for the majestic beauty of cryptic two-letter command names such as cp, rm, and ls. Those of us who used early 70s I/O devices suspect the degeneracy stems from the speed, reliability, and, most importantly, the keyboard of the ASR-33 Teletype, the common input/output device in those days. Unlike today’s keyboards, where the distance keys travel is based on feedback principles, and the only force necessary is that needed to close a microswitch, keys on the Teletype (at least in memory) needed to travel over half an inch, and take the force necessary to run a small electric gener- ator such as those found on bicycles. You could break your knuckles touch typing on those beasts.