Earlier today Stephen Johnson, in a mailing list run by the
The Unix Heritage Society,
described the birth of thestandard errorconcept:
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 phototypesetterused 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.
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
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…”