[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: roff(7)

From: G. Branden Robinson
Subject: Re: roff(7)
Date: Sat, 1 Jan 2022 00:06:28 +1100
User-agent: NeoMutt/20180716

Hi, Doug!

At 2021-12-30T21:18:04-0500, Douglas McIlroy wrote:
> The man page roff(7) incorrectly attributes roff to Joe Ossanna.

I agree, that's true of the roff(7) man page in groff 1.22.4 (and some
number of releases before that I haven't taken the trouble to count).

> Ossanna wrote nroff and troff, but roff preceded that work. The name
> roff was first used to distinguish a rewrite for Multics from the
> original runoff, probably because both were maintained on CTSS.  I
> wrote an extended roff in BCPL for GECOS and kept the Multics name.
> Ken and/or Dennis rewrote the BCPL program in assembly language for
> Unix. There never was a pure runoff for Unix.

Thanks, Doug!  I _think_ all of your statements here are consistent with
what I've had in the roff(7) page since commit f28c837d2c on 5 September

Here are the current paragraphs of the page relating to *roffs and early
Unix history.

   Unix and roff
       By 1971, McIlroy’s runoff had been rewritten in DEC PDP-11
       assembly language by Dennis Ritchie for the fledgling Unix
       operating system and seen its name shortened to roff (perhaps
       under the influence of Ken Thompson), but had added support for
       automatic hyphenation with .hc and .hy requests; a generalization
       of line spacing control with the .ls request; and what later
       roffs would call diversions, with “footnote” requests.  This roff
       indirectly funded operating systems research at Murray Hill, for
       it was used to prepare patent applications for AT&T to the U.S.
       government.  This arrangement enabled the group to acquire the
       aforementioned PDP-11; roff promptly proved equal to the task of
       typesetting the first edition of the manual for what would later
       become known as “v1 Unix”, dated November 1971.

       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.  Proportionally-spaced type was unknown.

   New roff and Typesetter roff
       The first years of Unix were spent in rapid evolution.  The
       practicalities of preparing standardized documents like patent
       applications (and Unix manual pages), combined with McIlroy’s
       enthusiasm for macro languages, perhaps created an irresistible
       pressure to make roff extensible.  Joe Ossanna’s nroff, literally
       a “new roff”, was the outlet for this pressure.  By the time of
       Version 3 Unix (February 1973)—and still in PDP-11 assembly
       language—it sported a swath of features now considered essential
       to roff systems; definition of macros (.de), diversion of text
       thence (.di), and removal thereof (.rm); trap planting (.wh;
       “when”) and relocation (.ch; “change”); conditional processing
       (.if); and environments (.ev).

I welcome your corrections of this material and anything else in the
page.  If groff Git it troublesome for you to get to, Michael Kerrisk's
Linux man-pages project web page takes snapshots of groff when he does
releases of the man-pages package proper.  For this page, little has
changed since his last snapshot, and nothing substantive about the

Two things I should admit to in frankness...

1.  Kerrisk's snapshot of our pages has some partial ECMA-48 escapes
    leaking into the text due to the grotty-output scraping he does to
    obtain HTML.  I guess if grohtml worked better, he wouldn't have had
    to do that.  My recent changes to support bold italics in
    (sub)section headings have surprised his tool.

2.  It sure would be nice to release groff 1.23.0.  We haven't heard
    from Bertrand in a long time so I guess I'll have to volunteer as
    the release guy--for one cycle anyway.  People might have noticed me
    taking baby steps toward this by learning more about GNU Autotools,
    resolving some issues with portability to non-GNU/Linux systems, and
    starting a release checklist document in the tree.

Happy New Year!


Attachment: signature.asc
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]