Most (all?) modern operating systems have the notion of STDERR, a separate output channel that programs can use to output error messages. It’s especially important for Operating Systems that have some notion of “pipe” where the output of one program is automatically used as the input to another. Obviously, you don’t want error messages corrupting the data stream.
Until recently, I didn’t know—or even think about—the origin of STDERR. It just seemed a natural and necessary facility to have. It turns out that it all started with the C/A/T typesetter and troff
at Bell Labs. Diomidis D. Spinellis tells the story of how the combination of troff and the C/A/T typesetter lead to the implementation of STDERR.
Spinellis’ post also serves to remind us how easy we have it now. It wasn’t that long ago that producing a typeset document was a long and messy process. Take a look at the post; it’s an interesting and amusing story.