[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[groff] 03/07: roff(7): Update intro and expand early history.
G. Branden Robinson
[groff] 03/07: roff(7): Update intro and expand early history.
Sat, 5 Sep 2020 16:06:01 -0400 (EDT)
gbranden pushed a commit to branch master
in repository groff.
Author: G. Branden Robinson <firstname.lastname@example.org>
AuthorDate: Sat Sep 5 11:55:33 2020 +1000
roff(7): Update intro and expand early history.
(Description): Tweak style and remove some puffery.
(Description/History): Greatly expand coverage of early RUNOFF, roff,
and nroff _language_ history; the focus of most historical discussion
seems to be more on authors and environments (operating systems,
programming languages). Also make corrections based on primary sources
curated by Dzosons.
(See Also): Annotate bibliographic entry for Dzosons's site.
man/roff.7.man | 532 ++++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 360 insertions(+), 172 deletions(-)
diff --git a/man/roff.7.man b/man/roff.7.man
index 044986c..235010e 100644
@@ -4,6 +4,8 @@
roff \- concepts and history of roff typesetting
+.\" TODO: Synchronize this material with introductory section(s) of our
+.\" Texinfo manual, and then keep it that way.
.\" Legal Terms
@@ -31,14 +33,14 @@ roff \- concepts and history of roff typesetting
-is the general name for a set of text formatting programs, known under
+describes a family of document formatting systems known by names like
.IR troff ,
.IR nroff ,
.IR ditroff ,
-.IR groff ,
-and so on.
+.IR groff .
@@ -53,242 +55,416 @@ system as a core package.
The most common
-system today is the free software implementation \f[CR]GNU\f
+system today is GNU
.IR roff ,
-.BR groff (@MAN1EXT@).
+.IR groff (@MAN1EXT@).
-implements the look-and-feel and functionality of its ancestors, with
+retains the input conventions and functionality of its ancestors,
+with many extensions.
The ancestry of
is described in section \[lq]History\[rq] below.
In this document, the term
-always refers to the general class of roff programs, not to the
+always refers to this general class of programs,
+not to the
command provided in early Unix systems.
In spite of its age,
-is in wide use today, for example, the manual pages on Unix systems
-.RI ( man\~pages ),
-many software books, system documentation, standards, and corporate
-documents are written in roff.
-output for text devices is still unmatched, and its graphical output
-has the same quality as other free type-setting programs and is better
-than some of the commercial systems.
-is used to format Unix
-.IR "manual pages" ,
-.IR "man pages" ),
-the standard documentation system on many Unix-derived operating
+remains in wide use today;
+the manual pages on Unix systems
+books about software and programming,
+and technical memoranda are written in
+.IR roff .
-This document describes the history of the development of the
-.IR "roff system" ;
-some usage aspects common to all
+This document describes the history of the development of the \[lq]roff
+typographical concepts that form the common background of all
-versions, details on the
+details on the
-pipeline, which is usually hidden behind front-ends like
-.BR groff (@MAN1EXT@);
-a general overview of the formatting language; some tips for editing
+which is usually hidden behind front-ends like
+.IR groff (@MAN1EXT@),
+a general overview of the formatting language,
+some tips for editing
-files; and many pointers to further readings.
+and many suggestions for further reading.
-Document formatting by computer dates back to the 1960s.
+Computer-driven document formatting dates back to the 1960s.
-system itself is intimately connected to the Unix operating system, but
-its roots go back to the earlier operating systems CTSS and Multics.
+system itself is intimately connected with the Unix operating system,
+but its roots go back to the earlier operating systems CTSS and Multics.
.SS "The predecessor RUNOFF"
-.BR roff 's
+.IR roff 's
-was written in the MAD language by
-.I Jerry Saltzer
-.IR "Compatible Time Sharing System (CTSS)" ,
-a project of the Massachusetts Institute of Technology (MIT), in 1963
-and 1964\[em]note that CTSS commands were all uppercase.
-In 1965, MIT's Project MAC teamed with Bell Telephone Laboratories
-(BTL) and General Electric to begin the
+was written in the MAD language by Jerry Saltzer
+to prepare his Ph.D.\& thesis using the Compatible Time Sharing System
+a project of the Massachusetts Institute of Technology (MIT).
+The program is generally referred to in full capitals,
+both to distinguish it from its many descendants,
+and because bits were expensive in those days;
+five- and six-bit character encodings were still in widespread usage,
+and mixed-case alphabetics seen as a luxury.
+introduced s syntax of inlining formatting directives amid document
+by beginning a line with a period
+(an unlikely occurrence in human-readable material)
+followed by a \[lq]control word\[rq].
+Control words with obvious meaning like \[lq].line length
+.IR n \[rq]
+were supported as well as an abbreviation system;
+the latter came to overwhelm the former in popular usage and later
+derivatives of the program.
+A sample of control words from a
+manual of December 1966
+was documented as follows with only a slight update to parameter syntax.
-A command called
-was written for Multics in the late 60s in the BCPL language, by
-.IR "Bob Morris" ,
-.IR "Doug McIlroy" ,
-and other members of the Multics team.
+They will be familiar to
-Like its CTSS ancestor, Multics
-formatted an input file consisting of text and command lines; commands
-began with a period and were two letters.
-Output from these commands was to terminal devices such as IBM Selectric
-had additional features added, such as the ability to do two-pass
-formatting; it became the main format for Multics documentation and text
+.ne 10 \" why is tbl ****ing with me?
+Abbreviation Control word
+\&.bp .begin page
+\&.in .indent \f[I]n\f
+\&.ll .line length \f[I]n\f
+\&.pl .paper length \f[I]n\f
+\&.sp .space [\f[I]n\f]
-were ported to the GCOS system at Bell Labs when BTL left the
-development of Multics.
+MIT's Project MAC teamed with Bell Telephone Laboratories and General
+Electric (GE) to inaugurate the
-There is a free archive about
-.I historical RUNOFF
+After a few years,
+Bell Labs discontinued its participation in Multics,
+famously prompting the development of Unix.
-You can get it anonymously by the shell command
-$git clone https://github.com/bwarken/RUNOFF_historical.git
+seeing many ports and derivations elsewhere.
-As well, there is a new project for writing a program that can read
-.I "RUNOFF files" ,
-but it does not yet work so far.
-You can get an early version anonymously by the shell command
-$git clone https://github.com/bwarken/runoff.git
-.SS "The classical nroff/troff system"
-At BTL, there was a need to drive the
-.I Graphic Systems CAT
-typesetter, a graphical output device from a PDP-11 computer running
+Doug McIlroy wrote one such reimplementation of
+in the BCPL language for a GE 645 running GECOS at the Bell Labs
+location in Murray Hill,
+In its manual,
+the control commands were termed \[lq]requests\[rq],
+their two-letter names were canonical,
+and the control character was configurable with a
-was too limited for this task it was further developed into a more
-powerful text formatting system by
-.IR "Joseph F.\& Ossanna" ,
-who already programmed several runoff ports.
+Other familiar requests emerged at this time;
+.RB ( .na ),
+.RB ( .ne ),
+.RB ( .po ),
+.RB ( .ta ,
+though it worked differently),
+.RB ( .ti ),
+.RB ( .tr ),
+and automatic underlining
+.RB ( .ul ;
+you had to backspace and underscore in the input yourself).
+to turn on fill mode got the name it retains to this day.
+.\" GBR can't find a source for this claim (of Bernd's).
+.\"added features such as the ability to do two-pass formatting;
+.\"it became the main system for Multics documentation and text
-was shortened to
-.IR roff .
-The greatly enlarged language of Ossanna's version already
-included all elements of a full
-.IR "roff system" .
+had been rewritten in DEC PDP-11 assembly language by Dennis Ritchie
+and seen its name shortened to
+(perhaps under the the influence of Ken Thompson),
+but had added support for automatic hyphenation with
+a generalization of line spacing control with the
+and what later
+.IR roff s
+would call diversions,
+with \[lq]footnote\[rq] requests.
-systems try to implement compatibility to this system.
+indirectly funded operating systems research at Murray Hill,
+for it was used to prepare patent applications for AT&T to the U.S.\&
-So Joe Ossanna can be called the father of all
+This enabled the group to acquire the aforementioned PDP-11;
+promptly proved equal to the task of typesetting the manual for
+what would later become known as First Edition Research Unix,
+dated November 1971.
-.I roff system
-had three formatter programs.
+Output from all of the foregoing programs was limited to line printers
+and paper terminals such the IBM 2471
+(based on the Selectric line of typewriters)
+and the Teletype Corporation Model 37.
-.RI ( "typesetter roff\/" )
-generated a graphical output for the
-typesetter as its only device.
+Proportionally-spaced type was unknown.
-produced text output suitable for terminals and line printers.
-was the reimplementation of the former
-program with its limited features; this program was abandoned in later
+.SS New roff and Typesetter roff
+The first years of Unix were spent in rapid evolution.
-Today, the name
+The practicalities of preparing standardized documents like patent
+(and Unix manual pages),
+combined with McIlroy's enthusiasm for macro languages,
+perhaps created an irresistible pressure to make
-is used to refer to a
-system as a whole.
+.IR nroff ,
+literally a \[lq]new roff\[rq],
+was the outlet for this pressure.
+By the time of Version 3 Unix
+(February 1973)\[em]and still in PDP-11 assembly language\[em]it sported
+a swath of features now considered essential to
+definition of macros
+.RB ( .de ),
+diversion of text thence
+.RB ( .di ),
+and removal thereof
+.RB ( .rm );
+.RB ( .wh ;
+.RB ( .ch ;
+.RB ( .if );
+.RB ( .ev ).
+Incremental improvements included
+assignment of the next page number
+.RB ( .pn );
+.RB ( .ns )
+and restoration of vertical spacing
+.RB ( .rs );
+.RB ( .sv )
+.RB ( .os )
+of vertical space;
+specification of replacement characters for tabs
+.RB ( .tc )
+.RB ( .lc );
+configuration of the no-break control character
+.RB ( .c2 );
+shorthand to disable automatic hyphenation
+.RB ( .nh );
+a condensation of what were formerly six different requests for
+configuration of page \[lq]titles\[rq]
+(headers and footers)
+.RB ( .tl )
+with a length controlled separately from the line length
+.RB ( .lt );
+automatic line numbering
+.RB ( .nm );
+.RB ( .rd ),
+which necessitated buffer-flushing
+.RB ( .fl ),
+and was made convenient with early program cessation
+.RB ( .ex );
+source file inclusion in its modern form
+.RB ( .so ;
+had an \[lq].append\[rq] control for a similar purpose)
+and early advance to the next file argument
+.RB ( .nx );
+.RB ( .ig );
+and programmable abort
+.RB ( .ab ).
-Ossanna's first version was written in the PDP-11 assembly
-language and released in 1973.
-.I Brian Kernighan
-development by rewriting it in the C\~programming language.
+Third Edition Unix had also brought the
+.IR pipe (2)
+and the explosive growth of a componentized system based around it and a
+\[lq]filter model\[rq] that remains perceptible today.
-The C\~version was released in 1975.
+Around this time
+.I tbl \" AT&T
+was developed. \" judging by "CSTR #17"
+the Bell Labs site in Murray Hill acquired a Graphic Systems C/A/T
+and with it came the necessity of expanding the capabilities of a
+system to cope with proportionally-spaced type,
+multiple point sizes and font styles.
+Ossanna wrote a parallel implementation of
+for the C/A/T,
+(for \[lq]typesetter roff\[rq]).
+suriving documentation does not illustrate what requests were
+implemented at this time for C/A/T support;
+.IR troff (1) \" AT&T
+man pages in Fourth Edition Unix
+even Sixth (1975)\[em]do not feature a request list,
+.IR nroff (1). \" AT&T
+Apart from typesetter-driven features,
+version 4 Unix
+.IR roff s
+added string definitions
+.RB ( .ds );
+made the escape character configurable
+.RB ( .ec );
+and enabled the user to write diagnostics to the standard error stream
+.RB ( .tm ).
+empowered with scalable fonts,
+and a symbol font specially commissioned by Bell Labs from
+Brian Kernighan and Lorinda Cherry implemented
+.I eqn \" AT&T
+for typesetting mathematics.
+In the same year,
+for Fifth Edition Unix,
+Ossanna combined and reimplemented the programs in C,
+using preprocessor conditions of that language to generate both programs
+from a single source tree.
+.\" XXX GBR leaves off here
The syntax of the formatting language of the
.BR nroff /\: troff
programs was documented in the famous
.I "Troff User's Manual"
-first published in 1976, with further revisions up to 1992 by Brian
+first published in 1976,
+with further revisions up to 1992 by Brian
This document is the specification of the
@@ -1189,14 +1365,27 @@ are documented in great detail.
-History of Unix Manpages
-The history page
+\[lq]History of Unix Manpages\[rq]
+online article maintained by the mdocml project
-of the mdocml project provides an overview of
+provides an overview of
-development up to date, with links to original documentation
-and comments of the original authors.
+development from Salzer's
+with links to original documentation and recollections of the authors
+and their contemporaries.
+this page has contributed to the widespread misconception that original
+author James Clark's surname is spelled \[lq]Clarke\[rq].
+It is not.
@@ -1380,15 +1569,14 @@ implementations.
.IR groff ,
the man page
-.BR groff (@MAN1EXT@)
+.IR groff (@MAN1EXT@)
contains a survey of all documentation available in
.IR groff .
On other systems, you are on your own, but
-.\" page maintainers: don't @MAN1EXT@ this reference to a foreign troff.
-.BR troff (1)
+.IR troff (1) \" foreign troff
might be a good starting point.
|[Prev in Thread]
||[Next in Thread]|
- [groff] 03/07: roff(7): Update intro and expand early history.,
G. Branden Robinson <=