The first roff system was written by Joe Ossanna around 1973. It supported only two output devices, the nroff program produced text oriented tty output, while the troff program generated graphical output for exactly one output device, the Wang Graphic Systems CAT typesetter.
In 1979, Brian Kernighan rewrote troff to support more devices by creating an intermediate output format for troff that can be fed into postprocessor programs which actually do the printout on the device. Kernighan's version marks what is known as classical troff today. In order to distinguish it from Ossanna's original mono-device version, it was called ditroff (device independent troff) on some systems, though this naming isn't mentioned in the classical documentation.
Today, any existing roff system is based on Kernighan's multi-device troff. The distinction between troff and ditroff isn't necessary any longer, for each modern troff provides already the complete functionality of ditroff. On most systems, the name troff is used to denote ditroff.
The easiest way to use ditroff is the GNU roff system, groff. The groff(1) program is a wrapper around (di)troff that automatically handles postprocessing.
This file is part of groff, the GNU roff type-setting system.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Front-Cover Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package, it is also available on-line at the GNU copyleft site