The Birth of Standard Error
Earlier today Stephen Johnson, in a mailing list run by the The Unix Heritage Society, described the birth of the standard error concept: the idea that a program's error output is sent on a channel different from that of its normal output. Over the past forty years, all major operating systems and language libraries have embraced this concept.
The story starts with the Graphic Systems' C/A/T phototypesetter used by the Bell Labs in the 1970s. This, washing-machine sized, equipment would typeset documents by flashing a strobe to expose character glyphs that were pre-installed on a rotating drum. The drum supported four fonts (Times Roman, italic, bold, and Symbol); a magnifying glass was used to change the font size. The text input normally came from a paper tape, and the output was rendered onto film, which then required a cumbersome, dirty, and smelly development process. Brian Walden relates that "the chemical baths were nasty smelling and it gummed up the rollers. You'd needed to regularly take the developer roller and gear guts into the janitor's closet and scrub it with a toothbrush in the slop sink under running water."
As one might expect, Bell Labs didn't use the paper tape input. According to Doug McIlroy, "as soon as the machine arrived, Joe Ossanna [the author of troff] bypassed the tape reader so the C/A/T could be driven directly from the PDP-11. The manufacturer was astonished." The connection was one-way only, so the corresponding device had write-only permissions, and there was no way to obtain status feedback from the phototypesetter. Doug McIlroy also remembers that, amusingly, "the first technical paper that came off the C/A/T drew a query from the journal editor, who'd never seen a phototypeset manuscript before: had it been published elsewhere?"
This ardous but cutting-edge phototypesetting process set the stage for the invention of the standard error concept. Stephen Johnson describes the incident as follows.
"One of the most amusing and unexpected consequences of phototypesetting was the Unix standard error file (!). After phototypesetting, you had to take a long wide strip of paper and feed it carefully into a smelly, icky machine which eventually (several minutes later) spat out the paper with the printing visible."
"One afternoon several of us had the same experience -- typesetting something, feeding the paper through the developer, only to find a single, beautifully typeset line: "cannot open file foobar" The grumbles were loud enough and in the presence of the right people, and a couple of days later the standard error file was born..."Read and post comments