Home – The history of troff

The history of troff

Troff was originally written by the late Joe Ossanna in about 1973, in assembly language for the PDP-11, to drive the Graphic Systems CAT typesetter. It was rewritten in C around 1975, and underwent slow but steady evolution until Ossanna's death late in 1977.

In 1979, Brian Kernighan modified troff so that it would produce output for a variety of typesetters, while retaining its input specifications. Over the decade from 1979 to 1989, the internals have been modestly revised, though much of the code remains as it was when Ossanna wrote it.

— Taken from the Troff User's Manual.

To Do

Get an image of Ossanna. Salus used one in his book.

Need to mention Brian Kernighan. Then James Clark of course with his re-implementation. Ted and Werner as the current maintainers.

troff's lineage can be traced back to the CTSS operating system and its text processing system called ‘runoff’ written by J. E. Saltzer. Bob Morris moved runoff to the 635??? and changed its name to ‘roff’. A descendant of roff was ‘rf’ for the PDP-7??? written by Dennis Ritchie; rf had no descendants.

‘That allowed for editing, but what about printing? J.E. Saltzer had written runoff for CTSS. Bob Morris moved it to the 635, and called it roff. Ritchie rewrote that as rf for the PDP-7, before there was UNIX (it was an evolutionary dead end). At the same time, the summer of 1969, Doug McIlroy rewrote roff in BCPL (Basic Combined Programming Language by Martin Richards, 1966), extending and simplifying it at the same time. It was McIlroy's version that first Joe Ossanna and, after his death, Brian Kernighan turned into the troff we still use.

‘(By the way, TECO is also the ancestor of Emacs.)

‘Nearly a decade later, Ted Dolotta created the memorandum (-mm) macros, with a lot of input from John Mashey. Thereafter, Eric Allman wrote the BSD -me macros.’

From: "John R. Mashey" <mash@heymash.com>
To: <ralph>
Subject: re: http://troff.org/history.html
Date: Tue, 26 Mar 2002 22:09:05 -0800

Actually, the -mm macros were mostly designed and implemented by Dale
Smith and I, with a lot of input/requirements and some code (footnotes)
by Ted Dolotta (who was our boss, and a typesetting expert).  [Even
better, he sold me his California UNIX license plate when he moved back
to NJ.]

Also, -mm was preceded by Mike Lesk's -ms macros, which also got wide
use.  We did -mm because we had a bunch of additional format
requirements, and we couldn't figure out how to extend -ms.

1) We had several existing format specs (which were *not* Bell Labs
TM's or MFs) that had to be matched [to help a massive conversion of
BTL typing pools].  We also had much bigger manuals, not just memos.

2) We had documents whose source needed to be printed in several
different formats.

All of this led to the design (a predecessor of style sheets) that
emphasized structural descriptions (like .P or .H level), whose
appearance was easily changed by a few parameters.

At the time, -mm stretched troff to the utmost, and Joe O was extremely
helpful in fixing bugs that only Dale & I managed to encounter!

...and later...

From: "John R. Mashey" <mash@heymash.com>
To: <ralph>
Subject: RE: http://troff.org/history.html
Date: Sat, 30 Mar 2002 09:31:38 -0800

Sure, use as you like.
MF = memorandum for file

TMs were done for things you wanted ‘published’ inside Bell Labs,
going though a formal distribution system that people subscribed to.
MF's were more like departmental internal memos.

History of UNIX Manpages has quite a lot about troff's history too.

Copyright Ralph Corderoy, 2001, 2002, 2003, 2012.