* Re: [TUHS] *roff history as told to GNU @ 2022-01-12 20:48 Noel Chiappa 0 siblings, 0 replies; 11+ messages in thread From: Noel Chiappa @ 2022-01-12 20:48 UTC (permalink / raw) To: tuhs; +Cc: jnc > From: Dan Cross > a port of the _CTSS_ BCPL ROFF sources purportedly written by Doug. I > wonder if that was actually a thing, or an error? > ... > Fortunately, the source [of the original CTSS runoff] is online: > ... > Indeed; one finds the following in at least one of the Multics RUNOFF > source files: It sounds like all the steps in the chain have pretty definitive evidence - _except_ whether there was ever a CTSS RUNOFF in BCPL, from Doug. Happily, we have someone here who should be able to answer that! :-) Noel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] TeX and groff (was: roff(7))
@ 2022-01-01 3:15 Larry McVoy
2022-01-10 19:00 ` Blake McBride
0 siblings, 1 reply; 11+ messages in thread
From: Larry McVoy @ 2022-01-01 3:15 UTC (permalink / raw)
To: Greg 'groggy' Lehey; +Cc: TUHS main list, Douglas McIlroy
On Sat, Jan 01, 2022 at 11:56:05AM +1100, Greg 'groggy' Lehey wrote:
> > The only negative reaction was table of contents complaints, LaTex is
> > 2 pass so it can do them, roff is one pass so you have to fiddle with
> > things. A lot.
>
> I solved that issue in later documents with two passes in the Makefile
> targets, frobbing things like references and contents in between.
I was troff friends with W Richard Stevens, he shared with me a lot of
what he did in troff. He did the two pass thing. Nice guy and got as
much out of roff that anyone could, all of his books were troff.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] TeX and groff (was: roff(7)) 2022-01-01 3:15 [TUHS] TeX and groff (was: roff(7)) Larry McVoy @ 2022-01-10 19:00 ` Blake McBride 2022-01-11 1:59 ` [TUHS] Demise of " Greg 'groggy' Lehey 0 siblings, 1 reply; 11+ messages in thread From: Blake McBride @ 2022-01-10 19:00 UTC (permalink / raw) To: Larry McVoy; +Cc: TUHS main list, Douglas McIlroy [-- Attachment #1: Type: text/plain, Size: 2962 bytes --] I've used nroff/troff/TeX with many of their various macro packages over about a 35 years span. During that time, I've done many single-page documents as well as documents as long as 350 pages. I also modified a version of nroff to create business forms for Laster printers. This is still being used commercially. This is one person's opinion: 1. Perhaps owing to my limited intelligence, and in spite of the fact that I've used TeX successfully on many documents, I have never been able to fully understand TeX. Apparently, it is too much for me. Troff, on the other hand, has made full sense to me. I was able to make it do what I wanted almost always. I enjoy using troff more because I find it simpler, and therefore, more pleasant to use. 2. Looking at the output, it is my opinion that TeX produces better-looking documents. Perhaps this is just no more than one man's esthetic opinion. I do not know what it is that I find better. It's just the sense I get. On the other hand, I find troff output to be sufficiently good in nearly all cases. 3. troff is a good and reasonable tool. TeX is too big and complex an environment in most cases. Although it is true that all of the complexity of the TeX environment is successfully hidden in virtually all cases. I find the huge and complex environment offputting. Very unfortunately, I see troff disappearing. I've worked with a number of teams over the last ten years. In every case, I was the oldest engineer. Also, in each case, I was the only engineer who had even heard of troff. They understand the problems of binary formats such as Word and OpenOffice. Their solutions are things like markdown, AsciiDoc, et al. They are doing this development and making use of these tools without knowledge of troff. The same is true to a greater or lesser degree with TeX, except that I've seen TeX used at universities. I like that groff and TeX are rock solid and well supported. In fact, I wrote a report generator for a modern web development framework using troff. I use it to develop reports on a routine basis. (kissweb.org) Sadly, however, if word of their existence doesn't get out there, I see them both disappearing in not much longer than a generation. This would be sad indeed. Blake McBride On Fri, Dec 31, 2021 at 9:16 PM Larry McVoy <lm@mcvoy.com> wrote: > On Sat, Jan 01, 2022 at 11:56:05AM +1100, Greg 'groggy' Lehey wrote: > > > The only negative reaction was table of contents complaints, LaTex is > > > 2 pass so it can do them, roff is one pass so you have to fiddle with > > > things. A lot. > > > > I solved that issue in later documents with two passes in the Makefile > > targets, frobbing things like references and contents in between. > > I was troff friends with W Richard Stevens, he shared with me a lot of > what he did in troff. He did the two pass thing. Nice guy and got as > much out of roff that anyone could, all of his books were troff. > [-- Attachment #2: Type: text/html, Size: 3622 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* [TUHS] Demise of TeX and groff (was: roff(7)) 2022-01-10 19:00 ` Blake McBride @ 2022-01-11 1:59 ` Greg 'groggy' Lehey 2022-01-11 2:13 ` Lyndon Nerenberg (VE7TFX/VE6BBM) 0 siblings, 1 reply; 11+ messages in thread From: Greg 'groggy' Lehey @ 2022-01-11 1:59 UTC (permalink / raw) To: Blake McBride; +Cc: TUHS main list, Douglas McIlroy [-- Attachment #1: Type: text/plain, Size: 950 bytes --] On Monday, 10 January 2022 at 13:00:15 -0600, Blake McBride wrote: > I like that groff and TeX are rock solid and well supported. In fact, I > wrote a report generator for a modern web development framework using > troff. I use it to develop reports on a routine basis. (kissweb.org) > Sadly, however, if word of their existence doesn't get out there, I see > them both disappearing in not much longer than a generation. This would be > sad indeed. As long as man pages are formatted with ?roff, I don't see it going away. I don't suppose many people use troff any more, but there are enough of us, and as long as man pages stay the way they are, I don't think we're in any danger. Greg -- Sent from my desktop computer. Finger grog@lemis.com for PGP public key. See complete headers for address and phone numbers. This message is digitally signed. If your Microsoft mail program reports problems, please read http://lemis.com/broken-MUA.php [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 163 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] Demise of TeX and groff (was: roff(7)) 2022-01-11 1:59 ` [TUHS] Demise of " Greg 'groggy' Lehey @ 2022-01-11 2:13 ` Lyndon Nerenberg (VE7TFX/VE6BBM) 2022-01-11 2:42 ` Larry McVoy 0 siblings, 1 reply; 11+ messages in thread From: Lyndon Nerenberg (VE7TFX/VE6BBM) @ 2022-01-11 2:13 UTC (permalink / raw) To: Greg 'groggy' Lehey; +Cc: TUHS main list, Douglas McIlroy Greg 'groggy' Lehey writes: > As long as man pages are formatted with ?roff, I don't see it going > away. I don't suppose many people use troff any more, but there are > enough of us, and as long as man pages stay the way they are, I don't > think we're in any danger. Well there is mandoc(1). But as time goes by they just seem to be re-implementing nroff. Of course that *must* be easier than just learning n/troff in the first place :-P I really don't understand this need to throw troff overboard. The code, both GNU and AT&T implementations, has been rock solid for decades. It's not like there are portability issues moving it between platforms. Provided the kiddies don't get in there and linuxify the code, of course. --lyndon ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] Demise of TeX and groff (was: roff(7)) 2022-01-11 2:13 ` Lyndon Nerenberg (VE7TFX/VE6BBM) @ 2022-01-11 2:42 ` Larry McVoy 2022-01-11 15:47 ` Clem Cole 0 siblings, 1 reply; 11+ messages in thread From: Larry McVoy @ 2022-01-11 2:42 UTC (permalink / raw) To: Lyndon Nerenberg (VE7TFX/VE6BBM); +Cc: TUHS main list, Douglas McIlroy On Mon, Jan 10, 2022 at 06:13:43PM -0800, Lyndon Nerenberg (VE7TFX/VE6BBM) wrote: > Greg 'groggy' Lehey writes: > > > As long as man pages are formatted with ?roff, I don't see it going > > away. I don't suppose many people use troff any more, but there are > > enough of us, and as long as man pages stay the way they are, I don't > > think we're in any danger. > > Well there is mandoc(1). But as time goes by they just seem to be > re-implementing nroff. Of course that *must* be easier than just > learning n/troff in the first place :-P > > I really don't understand this need to throw troff overboard. It's docs. The *roff docs were locked up with the Unix license. Those docs were awesome, terse but full of info like the C book. Unlike the C book they were not readily available. My Uni had a Unix license so I still have the stack of docs, decades later, still useful. I firmly believe if those docs had been open source, freely available, whatever, we would all be using an evolved roff. I tried to get Microsoft, weakly, to make Word spit out roff. Never went anywhere and I think they would have screwed it up, there was a UI, Gremlin maybe? Don't remember, but it spit out pic. Horrible pic. The world would be a better place if Word spit out readable and modifiable roff. Imagine being in Word and going, yeah, I know what it is trying to do, let me drop down to -ms and do it. And Word took your changes. Tim O'Reilly got it, wrote a book about it but I think it was too little too late. Roff is not going to take over the world but Greg is right, man pages will keep it here. Some of us will help. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] Demise of TeX and groff (was: roff(7)) 2022-01-11 2:42 ` Larry McVoy @ 2022-01-11 15:47 ` Clem Cole 2022-01-11 19:20 ` John Cowan 0 siblings, 1 reply; 11+ messages in thread From: Clem Cole @ 2022-01-11 15:47 UTC (permalink / raw) To: Larry McVoy; +Cc: TUHS main list, Douglas McIlroy [-- Attachment #1: Type: text/plain, Size: 1507 bytes --] On Mon, Jan 10, 2022 at 9:43 PM Larry McVoy <lm@mcvoy.com> wrote: > It's docs. The *roff docs were locked up with the Unix license. Larry point taken but ... I'm not so sure that specific statement is true. It may have >>seemed<< that way to you, but I'm fairly sure that in fact, it was not. The documents were published independently to the source and use of the binary license. I do think that some had an AT&T copyright on them, but I'm not even sure all of them had a copyright associated. The AT&T license in fact explicitly allowed replication of the documents that came with UNIX could be duplicated and distributed without violating the license. Numerous people sold copies of them. Any (student or not) could go into the MIT or Harvard Coop and buy a copy. Same in the Berkeley area, IIRC Stacy's [a famous Telgraph ave bookstore] had the BSD (as well as other systems) manuals. Beyond base duplication, numerous companies published parts of them and in particular parts if not all of the roff manual. For instance, a firm in Seattle called CSSC published a number of reference guides and use guides based on them [I just found a number of copies of some of them this weekend as I'm resetting up my basement. I have a number of duplicates that I am offering to the hive BTW]. I do believe that you are correct that both the sources (and associated binaries) to original nroff/groff and ditroff were licensed and needed and an AT&T license, but not the documents themselves. Clem [-- Attachment #2: Type: text/html, Size: 3536 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] Demise of TeX and groff (was: roff(7)) 2022-01-11 15:47 ` Clem Cole @ 2022-01-11 19:20 ` John Cowan 2022-01-11 20:06 ` Clem Cole 0 siblings, 1 reply; 11+ messages in thread From: John Cowan @ 2022-01-11 19:20 UTC (permalink / raw) To: Clem Cole; +Cc: TUHS main list, Douglas McIlroy [-- Attachment #1: Type: text/plain, Size: 667 bytes --] On Tue, Jan 11, 2022 at 10:48 AM Clem Cole <clemc@ccc.com> wrote: > I do believe that you are correct that both the sources (and associated > binaries) to original nroff/groff and ditroff were licensed and needed and > an AT&T license, but not the documents themselves. > I assume you mean s/groff/troff/. There must have been some public access to the documentation like this that allowed James Clark to develop groff in the 1987-91 time frame, though. It's still the *roff shipped with *BSD. dformat, a pic preprocessor by Jon Bentley that displays bits-in-a-word pictures, is now available at <https://github.com/arnoldrobbins/dformat>; it's written in awk. [-- Attachment #2: Type: text/html, Size: 1684 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] Demise of TeX and groff (was: roff(7)) 2022-01-11 19:20 ` John Cowan @ 2022-01-11 20:06 ` Clem Cole 2022-01-12 8:54 ` arnold 0 siblings, 1 reply; 11+ messages in thread From: Clem Cole @ 2022-01-11 20:06 UTC (permalink / raw) To: John Cowan; +Cc: TUHS main list, Douglas McIlroy [-- Attachment #1: Type: text/plain, Size: 3935 bytes --] On Tue, Jan 11, 2022 at 2:20 PM John Cowan <cowan@ccil.org> wrote: > I assume you mean s/groff/troff/. There must have been some public access > to the documentation like this that allowed James Clark to develop groff in > the 1987-91 time frame, though. It's still the *roff shipped with *BSD. > No, I mean troff... troff was written by Joseph Ossanna <https://en.wikipedia.org/wiki/Joe_Ossanna> for early version of UNIX. It output was for the CAT4 typesetter [which Wang eventually was the owner, although I believe when BTL bought the typesetter, the C/A/T folk was an independent company from Wang]. The output is funky binary format. The docs describing troff can be found in some of the early distributions [for look in Warrens archives]. IIRC V6 had the nroff sources [ https://minnie.tuhs.org/cgi-bin/utree.pl?file=V6/usr/source/s7], and v7 has the nroff/troff source [ https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/troff]. I've forgotten which earlier version had the binary in /bin (maybe v6 but possibly v5 too) and I'm fairly certain the original source leaked to the Universities before V7. I know we had the binary at CMU, before V7, but I don't remember when we got the source - but I suspect one our OYOC students brought it. I'll Let Noah speak for MIT and some one like Mary Ann speak for UCB before I got there. After Joe died and the BTL crew got a new APS5 typesetter, Brian set out to rewrite the code base to support any typesetting by using traditional compiler technology of converting the input to an ASCII representation that is walked by a seperate program that generates the device specific output. In fact it was this work (original done on V6) that forced Dennis (and I assume Steve Johnson) to update the C language a bit - which is what is described in K&R1. Brian's code and a version of DMR's updated C compiler was released independently as a package - hence the term 'typesetter C.' This compiler and the new document system took a seperate license. I had it at both CMU in the 70s and Tektronix -- I think Steve Glaser had it at Rice also - again ask someone else for other sites, including some of the early European ones. Later Brian's work was updated after V7 and included some new tools, and became known as Writer's Workbench, which eventually was entered in the 'toolchest.' At the time of the first release Brian published a paper / TR that describes the new version of troff (a.ka. ditroff), including some level of documentation for the intermediate language. That was published and would have been officially available to James. Clark certainly had access to both the papers as well as binaries. His work would eventually be called groff. I personally saw a version of it before it was taken into the Gnu project, in the early 1980s. I do not know if he had access to Brian's actual code under license when he reimplemented it in C++ creating a new implementation, as UCB did when they started to rewrite many of the utilities and main OS itself. The AT&T case basically said that once the implementations was released, AT&T could no longer call anything a trade secret, although they *do the own the IP and copyright* [and please not start a GPL/BSD license flame here -- the horse is so dead - please go back into the TUHS archives and read all about it if you are new here]. Larry is correct, that I do not believe that AT&T ever released that IP directly -- although the sources are certainly available at: The Heirloom Documentation Tools <https://n-t-roff.github.io/heirloom/doctools.html> I personally do not know the history. *But I believe* the concept is that when Sun bought out its license and was able to open source Solaris, the code base that goes back to Brian's original implementation became available at that point. Some one like Larry or Rob Gingell who lived some of that transition might be able to offer those details. [-- Attachment #2: Type: text/html, Size: 6158 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] Demise of TeX and groff (was: roff(7)) 2022-01-11 20:06 ` Clem Cole @ 2022-01-12 8:54 ` arnold 2022-01-12 16:33 ` Dan Cross 0 siblings, 1 reply; 11+ messages in thread From: arnold @ 2022-01-12 8:54 UTC (permalink / raw) To: clemc; +Cc: tuhs Clem, Once again, you have the timeline wrong on all this. The ditroff work was started in the summer of 1979, well after V6, Typesetter C and V7. Details are available at https://www.cs.princeton.edu/~bwk/202/202paper.pdf and https://www.cs.princeton.edu/~bwk/202/summer.reconstructed.pdf. Perhaps Doug can set the history straight on troff. Here is my understanding, corrections (from Doug) welcome: - Ossanna wrote the original nroff in assembly language - He rewrote it in C when the C/A/T was acquired At that time nroff/troff were built from mostly the same sources (as can be seen in the archives). Thanks, Arnold Clem Cole <clemc@ccc.com> wrote: > After Joe died and the BTL crew got a new APS5 typesetter, Brian set out to > rewrite the code base to support any typesetting by using traditional > compiler technology of converting the input to an ASCII representation that > is walked by a seperate program that generates the device specific output. > In fact it was this work (original done on V6) that forced Dennis (and I > assume Steve Johnson) to update the C language a bit - which is what is > described in K&R1. Brian's code and a version of DMR's updated C compiler > was released independently as a package - hence the term 'typesetter C.' > This compiler and the new document system took a seperate license. I had > it at both CMU in the 70s and Tektronix -- I think Steve Glaser had it at > Rice also - again ask someone else for other sites, including some of the > early European ones. > > Later Brian's work was updated after V7 and included some new tools, and > became known as Writer's Workbench, which eventually was entered in the > 'toolchest.' > > At the time of the first release Brian published a paper / TR that > describes the new version of troff (a.ka. ditroff), including some level of > documentation for the intermediate language. That was published and would > have been officially available to James. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] Demise of TeX and groff (was: roff(7)) 2022-01-12 8:54 ` arnold @ 2022-01-12 16:33 ` Dan Cross 2022-01-12 18:06 ` [TUHS] *roff history as told to GNU G. Branden Robinson 0 siblings, 1 reply; 11+ messages in thread From: Dan Cross @ 2022-01-12 16:33 UTC (permalink / raw) To: Aharon Robbins; +Cc: The Eunuchs Hysterical Society [-- Attachment #1: Type: text/plain, Size: 2413 bytes --] On Wed, Jan 12, 2022 at 3:55 AM <arnold@skeeve.com> wrote: > [snip] > Perhaps Doug can set the history straight on troff. Here is my > understanding, > corrections (from Doug) welcome: > > - Ossanna wrote the original nroff in assembly language > - He rewrote it in C when the C/A/T was acquired > At that time nroff/troff were built from mostly the same sources (as > can be seen in the archives). > I have some questions about the earlier history. As I understand it, in the beginning there was RUNOFF, which I believe originated on CTSS? The CTSS sources contain a RUNOFF program that's made up of ~1100 lines of MAD and ~1300 lines of assembler. There is certainly a RUNOFF in Multics, written in BCPL (there's a small "outer module transfer vector" program in ALM). This is where it gets muddy for me; I understand this was roughly ported to unix as `roff` by Ken and that at this point, formatting was fairly primitive: suitable for hardcopy terminals and line printers, and could do things like center lines and so forth, but nothing fancy (https://www.cs.dartmouth.edu/~doug/reader.pdf). Ossanna then took over and greatly expanded the capabilities of `roff`, adding macros and traps and making it Turing-complete; this was `nroff`, which grew to become `troff` once the C/A/T typesetter was acquired. Section 4.1 ("Text Processing") of Doug's "Research Unix Reader" above includes some tantalizing tidbits, particularly this, regarding `troff`: "It blew the manufacturer’s mind, and touched off a flurry of homemade documents in flamboyant layouts—good enough, however, to fool referees into suspecting that the manuscripts had been published before." Ooo, that last bit sounds like a good story! Doug, can you tell us more? - Dan C. PS: Something came up on the Multics mailing list recently that may be of local interest. Someone was looking for a set of troff macros used internally by Honeywell for the preparation of technical documentation and memoranda and it was asked whether this had been done on Multics? Apparently, `troff` never made it back to its ancestor's home, even though at some point circa the SVR2 era a C compiler was ported and it would have been, perhaps, possible. The answer to the original question was that that documentation had been prepared on a Unix machine of some kind; the macros seem lost to time. [-- Attachment #2: Type: text/html, Size: 2965 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* [TUHS] *roff history as told to GNU 2022-01-12 16:33 ` Dan Cross @ 2022-01-12 18:06 ` G. Branden Robinson 2022-01-12 18:34 ` Dan Halbert ` (3 more replies) 0 siblings, 4 replies; 11+ messages in thread From: G. Branden Robinson @ 2022-01-12 18:06 UTC (permalink / raw) To: The Eunuchs Hysterical Society [-- Attachment #1: Type: text/plain, Size: 14428 bytes --] Hi, Dan, At 2022-01-12T11:33:35-0500, Dan Cross wrote: > I have some questions about the earlier history. I've been collecting a detailed narrative history not just of the *roff _programs_ but also of the development on the language in the roff(7) manual page. Below I'll share a current chunk of it that is planned for the next release (groff 1.23). It has been heavily revised since groff 1.22.4. Many of my revisions have been motivated by accounts from this list, from the "history of man pages" (more of a history of troff) at manpages.bsd.lv, and the minnie TUHS archive. > As I understand it, in the beginning there was RUNOFF, which I believe > originated on CTSS? The CTSS sources contain a RUNOFF program that's > made up of ~1100 lines of MAD and ~1300 lines of assembler. This is a detail I hadn't encountered before; instead I've read claims that distorted it into being a solely high-level language project. > There is certainly a RUNOFF in Multics, written in BCPL (there's a > small "outer module transfer vector" program in ALM). As I understand it, _this_ RUNOFF is undisputedly Doug McIlroy's. > This is where it gets muddy for me; I understand this was roughly > ported to unix as `roff` by Ken and that at this point, It is hard to find an account of this period that _isn't_ muddy. Claims from Murray Hill luminaries suggest that V0 and V1 Unix roffs were the collective work of Thompson, Ritchie, Ossanna, a fourth person who contributed the hyphenation algorithm (does someone have the name?), and McIlroy, because in Ritchie's words[1], this roff was "transliterated" from Doug's BCPL codebase. > formatting was fairly primitive: suitable for hardcopy terminals and > line printers, and could do things like center lines and so forth, but > nothing fancy (https://www.cs.dartmouth.edu/~doug/reader.pdf). Yes. My contributions to groff's roff(7) page attempt to shed more light on this sort of thing. Sadly, at crucial periods sources and even documentation are missing. For example, there is an nroff entry in the Unix V2 manual table of contents, but no man page is present. In other early editions the reader is asked to see Ossanna for documentation, and it seems the corresponding artifacts might be lost to time. > Ossanna then took over and greatly expanded the capabilities of > `roff`, adding macros and traps and making it Turing-complete; this > was `nroff`, which grew to become `troff` once the C/A/T typesetter > was acquired. Yes. Here's what I have, though it looks better typeset[2]. Corrections from witnesses are warmly welcomed. Name roff - concepts and history of roff typesetting Description The term roff describes a family of document formatting systems known by names like troff, nroff, ditroff, and groff. A roff system consists of an extensible text formatting language and a set of programs for printing and converting to other text formats. Unix-like operating systems often distribute a roff system as a core package. [snip] History Computer-driven document formatting dates back to the 1960s. The roff system itself is intimately connected with the Unix operating system, but its roots go back to the earlier operating systems CTSS and Multics. The predecessor--RUNOFF roff's ancestor RUNOFF was written in the MAD language by Jerry Saltzer to prepare his Ph.D. thesis using the Compatible Time Sharing System (CTSS), 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. RUNOFF introduced a syntax of inlining formatting directives amid document text, by beginning a line with a period (an unlikely occurrence in human-readable material) followed by a "control word". Control words with obvious meaning like ".line length n" 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 RUNOFF manual of December 1966 <http:// web.mit.edu/Saltzer/www/publications/ctss/AH.9.01.html> was documented as follows (with the parameter notation slightly altered). The abbreviations will be familiar to roff veterans. Abbreviation Control word .ad .adjust .bp .begin page .br .break .ce .center .in .indent n .ll .line length n .nf .nofill .pl .paper length n .sp .space [n] In 1965, MIT's Project MAC teamed with Bell Telephone Laboratories and General Electric (GE) to inaugurate the Multics <http://www.multicians.org> project. After a few years, Bell Labs discontinued its participation in Multics, famously prompting the development of Unix. Meanwhile, Saltzer's RUNOFF proved influential, seeing many ports and derivations elsewhere. In 1969, Doug McIlroy wrote one such reimplementation of RUNOFF in the BCPL language for a GE 645 running GECOS at the Bell Labs location in Murray Hill, New Jersey. In its manual, the control commands were termed "requests", their two-letter names were canonical, and the control character was configurable with a .cc request. Other familiar requests emerged at this time; no-adjust (.na), need (.ne), page offset (.po), tab configuration (.ta, though it worked differently), temporary indent (.ti), character translation (.tr), and automatic underlining (.ul; on RUNOFF you had to backspace and underscore in the input yourself). .fi to enable filling of output lines got the name it retains to this day. Unix and roff roff was one of the first Unix programs. McIlroy's runoff was, in Dennis Ritchie's term, "transliterated" from BCPL to DEC PDP-7 assembly language for the fledgling Unix operating system. It saw its name shortened to roff (perhaps under the influence of Ken Thompson), while adding 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 a PDP-11; roff promptly proved equal to the task of typesetting the first edition of the manual for what would later become known as "Unix Version 1", 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 Unix Version 3 (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). Incremental improvements included assignment of the next page number (.pn); no-space mode (.ns) and restoration of vertical spacing (.rs); the saving (.sv) and output (.os) of vertical space; specification of replacement characters for tabs (.tc) and leaders (.lc); configuration of the no-break control character (.c2); shorthand to disable automatic hyphenation (.nh); a condensation of what were formerly six different requests for configuration of page "titles" (headers and footers) into one (.tl) with a length controlled separately from the line length (.lt); automatic line numbering (.nm); interactive input (.rd), which necessitated buffer-flushing (.fl), and was made convenient with early program cessation (.ex); source file inclusion in its modern form (.so; though RUNOFF had an ".append" control word for a similar purpose) and early advance to the next file argument (.nx); ignorable content (.ig); and programmable abort (.ab). Third Edition Unix also brought the pipe(2) system call, the explosive growth of a componentized system based around it, and a "filter model" that remains perceptible today. Equally importantly, the Bell Labs site in Murray Hill acquired a Graphic Systems C/A/T phototypesetter, and with it came the necessity of expanding the capabilities of a roff system to cope with proportionally-spaced type, multiple type sizes, and a variety of fonts. Ossanna wrote a parallel implementation of nroff for the C/A/T, dubbing it troff (for "typesetter roff"). Unfortunately, surviving documentation does not illustrate what requests were implemented at this time for C/A/T support; the troff(1) man page in Fourth Edition Unix (November 1973) does not feature a request list, unlike nroff(1). Apart from typesetter-driven features, Unix Version 4 roffs added string definitions (.ds); made the escape character configurable (.ec); and enabled the user to write diagnostics to the standard error stream (.tm). Around 1974, empowered with multiple type sizes, italics, and a symbol font specially commissioned by Bell Labs from Graphic Systems, Brian Kernighan and Lorinda Cherry implemented eqn for typesetting mathematics. In the same year, for Fifth Edition Unix, Ossanna combined and reimplemented the two roffs in C, using preprocessor conditions of that language to generate both from a single source tree. Ossanna documented the syntax of the input language to the nroff and troff programs in the "Troff User's Manual", first published in 1976, with further revisions as late as 1992 by Kernighan. (The original version was entitled "Nroff/Troff User's Manual", which may partially explain why roff practitioners have tended to refer to it by its AT&T document identifier, "CSTR #54".) Its final revision serves as the de facto specification of AT&T troff, and all subsequent implementors of roff systems have done so in its shadow. A small and simple set of roff macros was first used for the manual pages of Unix Version 4 and persisted for two further releases, but the first macro package to be formally described and installed was ms by Lesk in Version 6. He also wrote a manual, "Typing Documents on the Unix System", describing ms and basic nroff/troff usage, updating it as the package accrued features. Sixth Edition additionally saw the debut of the tbl preprocessor for formatting tables, also by Lesk. For Unix Version 7 (January 1979), McIlroy designed, implemented, and documented the man macro package, introducing most of the macros described in groff_man(7) today, and edited volume 1 of the Version 7 manual using it. Documents composed using ms featured in volume 2, edited by Kernighan. Ossanna had passed away unexpectedly in 1977, and after the release of Version 7, with the C/A/T typesetter becoming supplanted by alternative devices such as the Mergenthaler Linotron 202, Kernighan undertook a revision and rewrite of troff to generalize its design. To implement this revised architecture, he developed the font and device description file formats and the device-independent output format that remain in use today. He described these novelties in the article "A Typesetter-independent TROFF", last revised in 1982, and like the troff manual itself, it is widely known by a shorthand, "CSTR #97". Kernighan's innovations prepared troff well for the introduction of the Adobe PostScript language in 1982 and a vibrant market in laser printers with built-in interpreters for it. An output driver for PostScript, dpost, was swiftly developed. However, due to AT&T software licensing practices, Ossanna's troff, with its tight coupling to the capabilities of the C/A/T, remained in parallel distribution with device-independent troff throughout the 1980s, leading some developers to contrive translators for C/A/T-formatted documents to other devices. An example was vtroff for Versatec and Benson-Varian plotters. Today, however, all actively maintained troffs follow Kernighan's device- independent design. Regards, Branden [1] "The Evolution of the Unix Time-Sharing System", Ritchie, 1984 [2] Formatted with: groff -man -P-c -Tascii -rLL=72n -rHY=0 -dAD=l build/man/roff.7 (The `AD` string is new to groff 1.23 man(7).) [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] *roff history as told to GNU 2022-01-12 18:06 ` [TUHS] *roff history as told to GNU G. Branden Robinson @ 2022-01-12 18:34 ` Dan Halbert 2022-01-12 22:48 ` Clem Cole 2022-01-12 20:01 ` Dan Cross ` (2 subsequent siblings) 3 siblings, 1 reply; 11+ messages in thread From: Dan Halbert @ 2022-01-12 18:34 UTC (permalink / raw) To: tuhs On 1/12/22 13:06, G. Branden Robinson wrote: > Hi, Dan, > > At 2022-01-12T11:33:35-0500, Dan Cross wrote: >> I have some questions about the earlier history. >> >> I've been collecting a detailed narrative history not just of the *roff >> _programs_ but also of the development on the language in the roff(7) >> manual page. Below I'll share a current chunk of it that is planned for >> the next release (groff 1.23). It has been heavily revised since >> groff 1.22.4. Many of my revisions have been motivated by accounts from >> this list, from the "history of man pages" (more of a history of troff) >> at manpages.bsd.lv, and the minnie TUHS archive. I used RUNOFF on TOPS-10 in 1971, I think, and eventually also on TENEX and TOPS-20. It probably was available earlier than that. Your history is covering the Unix side, but there is also a pretty robust DEC side. It was available on pretty much all the DEC machines. https://en.wikipedia.org/wiki/TYPSET_and_RUNOFF has some mentions. Dan H. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] *roff history as told to GNU 2022-01-12 18:34 ` Dan Halbert @ 2022-01-12 22:48 ` Clem Cole 2022-01-12 23:27 ` Charles H. Sauer 0 siblings, 1 reply; 11+ messages in thread From: Clem Cole @ 2022-01-12 22:48 UTC (permalink / raw) To: Dan Halbert; +Cc: tuhs [-- Attachment #1: Type: text/plain, Size: 2472 bytes --] Dan/Branden -- don't forget that IBM had a flavor of the runoff family also at least by the early 1970s when I saw it. In fact, I learned it before either the DEC ones for the PDP-10s which I saw next, and only after that the UNIX family. We ran the IBM doc tool on TSS [often of 2741 style devices], and I think it ran on MTS. Pre-laser printer days, although CS an XGP, it was only 200 dpi (and was on the PDP-10s). So CMU computer center (IBM shop) even had a very high end printer with a golf ball (serial) output device that was in a locked room that was connected the 360 that they used to print 'special' letters on a fan folded paper that was super high quality and then run through the 'burster' to remove the edges and make it single sheets [Acceptance letters and other special things got printed on it by the computer center for the administration]. I don't remember much about that part of the process, other than the input/prep was from the IBM version of a runoff like program and as an operator, we had to learn to make it go and run things out on it as needed. But I do remember it was a PITA to output to that thing, but the SW also worked on a traditional 2741. As a member of the computer staff I had access to the 2741 in my office (for APL work), but could set it up as a standard 2741 and type papers on it late at night. On Wed, Jan 12, 2022 at 1:42 PM Dan Halbert <halbert@halwitz.org> wrote: > On 1/12/22 13:06, G. Branden Robinson wrote: > > Hi, Dan, > > > > At 2022-01-12T11:33:35-0500, Dan Cross wrote: > >> I have some questions about the earlier history. > >> > >> I've been collecting a detailed narrative history not just of the *roff > >> _programs_ but also of the development on the language in the roff(7) > >> manual page. Below I'll share a current chunk of it that is planned for > >> the next release (groff 1.23). It has been heavily revised since > >> groff 1.22.4. Many of my revisions have been motivated by accounts from > >> this list, from the "history of man pages" (more of a history of troff) > >> at manpages.bsd.lv, and the minnie TUHS archive. > > I used RUNOFF on TOPS-10 in 1971, I think, and eventually also on TENEX > and TOPS-20. It probably was available earlier than that. Your history > is covering the Unix side, but there is also a pretty robust DEC side. > It was available on pretty much all the DEC machines. > https://en.wikipedia.org/wiki/TYPSET_and_RUNOFF has some mentions. > > Dan H. > [-- Attachment #2: Type: text/html, Size: 3228 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] *roff history as told to GNU 2022-01-12 22:48 ` Clem Cole @ 2022-01-12 23:27 ` Charles H. Sauer 2022-01-13 0:35 ` Adam Thornton 0 siblings, 1 reply; 11+ messages in thread From: Charles H. Sauer @ 2022-01-12 23:27 UTC (permalink / raw) To: tuhs I try to avoid inserting non-Unix IBM stuff into TUHS, but since Clem opened the door, ... When I was at Yorktown 1975-77 and 1979-82, using Script (IBM's runoff) on VM/370 was very pleasant from my perspective, for papers, manuals and my three performance modeling books. IIRC when I got there Script output went to Versatecs for draft output and to APS5 for camera ready. By 1979, DCF superseded Script and 6670s superseded Versatecs for draft output. https://en.wikipedia.org/wiki/SCRIPT_(markup) and https://en.wikipedia.org/wiki/IBM_Generalized_Markup_Language seem fair to me. While I'm inserting non-Unix stuff, and presuming some parallel between Yorktown and Murray Hill, the culture discussions make me point out that I intentionally avoided ties and suits my first couple of years, wearing a turtleneck for my initial interviews. Then my wife insisted I start wearing three piece wool suits, which were fine in the cold months requiring driving, but I avoided them when the weather was warm enough for me to cycle the five miles to the lab (https://technologists.com/songs/swans.html). CHS On 1/12/2022 4:48 PM, Clem Cole wrote: > Dan/Branden -- don't forget that IBM had a flavor of the runoff family > also at least by the early 1970s when I saw it. In fact, I learned it > before either the DEC ones for the PDP-10s which I saw next, and only > after that the UNIX family. We ran the IBM doc tool on TSS [often of > 2741 style devices], and I think it ran on MTS. Pre-laser printer days, > although CS an XGP, it was only 200 dpi (and was on the PDP-10s). So > CMU computer center (IBM shop) even had a very high end printer with a > golf ball (serial) output device that was in a locked room that was > connected the 360 that they used to print 'special' letters on a fan > folded paper that was super high quality and then run through the > 'burster' to remove the edges and make it single sheets [Acceptance > letters and other special things got printed on it by the computer > center for the administration]. I don't remember much about that part > of the process, other than the input/prep was from the IBM version of a > runoff like program and as an operator, we had to learn to make it go > and run things out on it as needed. But I do remember it was a PITA to > output to that thing, but the SW also worked on a traditional 2741. As > a member of the computer staff I had access to the 2741 in my office > (for APL work), but could set it up as a standard 2741 and type papers > on it late at night. > > On Wed, Jan 12, 2022 at 1:42 PM Dan Halbert <halbert@halwitz.org > <mailto:halbert@halwitz.org>> wrote: > > On 1/12/22 13:06, G. Branden Robinson wrote: > > Hi, Dan, > > > > At 2022-01-12T11:33:35-0500, Dan Cross wrote: > >> I have some questions about the earlier history. > >> > >> I've been collecting a detailed narrative history not just of > the *roff > >> _programs_ but also of the development on the language in the > roff(7) > >> manual page. Below I'll share a current chunk of it that is > planned for > >> the next release (groff 1.23). It has been heavily revised since > >> groff 1.22.4. Many of my revisions have been motivated by > accounts from > >> this list, from the "history of man pages" (more of a history of > troff) > >> at manpages.bsd.lv <http://manpages.bsd.lv>, and the minnie TUHS > archive. > > I used RUNOFF on TOPS-10 in 1971, I think, and eventually also on TENEX > and TOPS-20. It probably was available earlier than that. Your history > is covering the Unix side, but there is also a pretty robust DEC side. > It was available on pretty much all the DEC machines. > https://en.wikipedia.org/wiki/TYPSET_and_RUNOFF > <https://en.wikipedia.org/wiki/TYPSET_and_RUNOFF> has some mentions. > > Dan H. > -- voice: +1.512.784.7526 e-mail: sauer@technologists.com fax: +1.512.346.5240 Web: https://technologists.com/sauer/ Facebook/Google/Twitter: CharlesHSauer ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] *roff history as told to GNU 2022-01-12 23:27 ` Charles H. Sauer @ 2022-01-13 0:35 ` Adam Thornton 0 siblings, 0 replies; 11+ messages in thread From: Adam Thornton @ 2022-01-13 0:35 UTC (permalink / raw) To: Charles H. Sauer; +Cc: The Eunuchs Hysterical Society > On Jan 12, 2022, at 4:27 PM, Charles H. Sauer <sauer@technologists.com> wrote: > > I try to avoid inserting non-Unix IBM stuff into TUHS, but since Clem opened the door, ... > > When I was at Yorktown 1975-77 and 1979-82, using Script (IBM's runoff) on VM/370 was very pleasant from my perspective, for papers, manuals and my three performance modeling books. IIRC when I got there Script output went to Versatecs for draft output and to APS5 for camera ready. By 1979, DCF superseded Script and 6670s superseded Versatecs for draft output. https://en.wikipedia.org/wiki/SCRIPT_(markup) and https://en.wikipedia.org/wiki/IBM_Generalized_Markup_Language seem fair to me. BookMaster might still be my favorite documentation-creation tool. Adam ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] *roff history as told to GNU 2022-01-12 18:06 ` [TUHS] *roff history as told to GNU G. Branden Robinson 2022-01-12 18:34 ` Dan Halbert @ 2022-01-12 20:01 ` Dan Cross 2022-01-12 22:32 ` Clem Cole 2022-01-13 2:38 ` John Labovitz 3 siblings, 0 replies; 11+ messages in thread From: Dan Cross @ 2022-01-12 20:01 UTC (permalink / raw) To: G. Branden Robinson; +Cc: The Eunuchs Hysterical Society [-- Attachment #1: Type: text/plain, Size: 3094 bytes --] On Wed, Jan 12, 2022 at 1:07 PM G. Branden Robinson < g.branden.robinson@gmail.com> wrote: > Hi, Dan, > > At 2022-01-12T11:33:35-0500, Dan Cross wrote: > > I have some questions about the earlier history. > > I've been collecting a detailed narrative history not just of the *roff > _programs_ but also of the development on the language in the roff(7) > manual page. Below I'll share a current chunk of it that is planned for > the next release (groff 1.23). It has been heavily revised since > groff 1.22.4. Many of my revisions have been motivated by accounts from > this list, from the "history of man pages" (more of a history of troff) > at manpages.bsd.lv, and the minnie TUHS archive. > Very interesting. The email mentioning DSR from Dan Halbert linked to a wikipedia article that in turn links here: https://manpages.bsd.lv/history/saltzer_23_10_2011.txt This is an email from Jerry Saltzer that refers to a port of the _CTSS_ BCPL ROFF sources purportedly written by Doug. I wonder if that was actually a thing, or an error? > As I understand it, in the beginning there was RUNOFF, which I believe > > originated on CTSS? The CTSS sources contain a RUNOFF program that's > > made up of ~1100 lines of MAD and ~1300 lines of assembler. > > This is a detail I hadn't encountered before; instead I've read claims > that distorted it into being a solely high-level language project. > Fortunately, the source is online: https://github.com/rcornwell/ctss/tree/master/src/runoff The `.fap` files are assembly; for example https://github.com/rcornwell/ctss/blob/master/src/runoff/lmio12.fap Brief inspection shows the FAP code mostly dealing with very low-level details either interfacing with the system for IO/memory or character handling. Without further examination, I'd be willing to believe the bulk of the program's logic is in MAD. > There is certainly a RUNOFF in Multics, written in BCPL (there's a > > small "outer module transfer vector" program in ALM). > > As I understand it, _this_ RUNOFF is undisputedly Doug McIlroy's. > Indeed; one finds the following in at least one of the Multics RUNOFF source files: From https://github.com/dancrossnyc/multics/blob/main/library_dir_dir/system_library_standard/source/bound_runoff_.s.archive/runoff_mr1.bcpl : // Roff for MULTICS // // The first ROFF for Multics was written in March, 1969, by // Doug McIlroy of Bell Labs. Art Evans made extensive // modifications to it in May and June, 1969, adding many // comments and making various changes. // Footnoting added by Dennis Capps in 1970. // Maintained by Harwell Thrasher in 1971. // Many new features added and bugs fixed by R Mabee in 1971-1972. // RUNOFF and BCPL were brought over to the 6180 Multics (from 645) in May of 1973 by R F Mabee. The copyright statements on all of the runoff source files seem to be dated 1974 (I haven't looked at every one). > [snip] > Here's what I have, though it looks better typeset[2]. Corrections from > witnesses are warmly welcomed. [snip] > Thank you; that was very interesting. - Dan C. [-- Attachment #2: Type: text/html, Size: 4720 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] *roff history as told to GNU 2022-01-12 18:06 ` [TUHS] *roff history as told to GNU G. Branden Robinson 2022-01-12 18:34 ` Dan Halbert 2022-01-12 20:01 ` Dan Cross @ 2022-01-12 22:32 ` Clem Cole 2022-01-13 2:38 ` John Labovitz 3 siblings, 0 replies; 11+ messages in thread From: Clem Cole @ 2022-01-12 22:32 UTC (permalink / raw) To: G. Branden Robinson; +Cc: The Eunuchs Hysterical Society [-- Attachment #1: Type: text/plain, Size: 15837 bytes --] Looks excellent -- friendly edit -- ditroff had nothing to do with vcat/vpr/vtroff. Tom Ferrin wrote the original at UCSF in the mid/late 70s -- the reasons was the the CAT typesetter was expensive and actually kinda nasty run. Many of us had plotters in those days and Tom's hack was a welcomed addition to the tool set. instead of: leading some developers to contrive translators for C/A/T-formatted documents to other devices. An example was vtroff for Versatec and Benson-Varian plotters. I offer: In mid/late 70s, Tom Ferrin a graphics researcher at UCSF using the font set released in the late 1960s, from Alan Hershey [ https://en.wikipedia.org/wiki/Hershey_fonts], wrote a program to simulate the C/A/T typesetter allowing the output of the original troff program to be 'plotted'. This program originally called vcat for virtual cat typesetter, was first distributed as part of an early USENIX distribution tape, but was eventually re-released in 3BSD and later BSD distributions as the UCB vpr(1) command and associated wrapper that call it was created called vtroff. On Wed, Jan 12, 2022 at 1:07 PM G. Branden Robinson < g.branden.robinson@gmail.com> wrote: > Hi, Dan, > > At 2022-01-12T11:33:35-0500, Dan Cross wrote: > > I have some questions about the earlier history. > > I've been collecting a detailed narrative history not just of the *roff > _programs_ but also of the development on the language in the roff(7) > manual page. Below I'll share a current chunk of it that is planned for > the next release (groff 1.23). It has been heavily revised since > groff 1.22.4. Many of my revisions have been motivated by accounts from > this list, from the "history of man pages" (more of a history of troff) > at manpages.bsd.lv, and the minnie TUHS archive. > > > As I understand it, in the beginning there was RUNOFF, which I believe > > originated on CTSS? The CTSS sources contain a RUNOFF program that's > > made up of ~1100 lines of MAD and ~1300 lines of assembler. > > This is a detail I hadn't encountered before; instead I've read claims > that distorted it into being a solely high-level language project. > > > There is certainly a RUNOFF in Multics, written in BCPL (there's a > > small "outer module transfer vector" program in ALM). > > As I understand it, _this_ RUNOFF is undisputedly Doug McIlroy's. > > > This is where it gets muddy for me; I understand this was roughly > > ported to unix as `roff` by Ken and that at this point, > > It is hard to find an account of this period that _isn't_ muddy. Claims > from Murray Hill luminaries suggest that V0 and V1 Unix roffs were the > collective work of Thompson, Ritchie, Ossanna, a fourth person who > contributed the hyphenation algorithm (does someone have the name?), and > McIlroy, because in Ritchie's words[1], this roff was "transliterated" > from Doug's BCPL codebase. > > > formatting was fairly primitive: suitable for hardcopy terminals and > > line printers, and could do things like center lines and so forth, but > > nothing fancy (https://www.cs.dartmouth.edu/~doug/reader.pdf). > > Yes. My contributions to groff's roff(7) page attempt to shed more > light on this sort of thing. Sadly, at crucial periods sources and even > documentation are missing. For example, there is an nroff entry in the > Unix V2 manual table of contents, but no man page is present. In other > early editions the reader is asked to see Ossanna for documentation, and > it seems the corresponding artifacts might be lost to time. > > > Ossanna then took over and greatly expanded the capabilities of > > `roff`, adding macros and traps and making it Turing-complete; this > > was `nroff`, which grew to become `troff` once the C/A/T typesetter > > was acquired. > > Yes. > > Here's what I have, though it looks better typeset[2]. Corrections from > witnesses are warmly welcomed. > > Name > roff - concepts and history of roff typesetting > > Description > The term roff describes a family of document formatting systems > known by names like troff, nroff, ditroff, and groff. A roff > system consists of an extensible text formatting language and a > set of programs for printing and converting to other text > formats. Unix-like operating systems often distribute a roff > system as a core package. > > [snip] > > History > Computer-driven document formatting dates back to the 1960s. The > roff system itself is intimately connected with the Unix > operating system, but its roots go back to the earlier operating > systems CTSS and Multics. > > The predecessor--RUNOFF > roff's ancestor RUNOFF was written in the MAD language by Jerry > Saltzer to prepare his Ph.D. thesis using the Compatible Time > Sharing System (CTSS), 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. RUNOFF introduced a syntax of > inlining formatting directives amid document text, by beginning a > line with a period (an unlikely occurrence in human-readable > material) followed by a "control word". Control words with > obvious meaning like ".line length n" 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 RUNOFF manual of December 1966 <http:// > web.mit.edu/Saltzer/www/publications/ctss/AH.9.01.html> was > documented as follows (with the parameter notation slightly > altered). The abbreviations will be familiar to roff veterans. > > Abbreviation Control word > .ad .adjust > .bp .begin page > .br .break > .ce .center > .in .indent n > .ll .line length n > .nf .nofill > .pl .paper length n > .sp .space [n] > > In 1965, MIT's Project MAC teamed with Bell Telephone > Laboratories and General Electric (GE) to inaugurate the Multics > <http://www.multicians.org> project. After a few years, Bell > Labs discontinued its participation in Multics, famously > prompting the development of Unix. Meanwhile, Saltzer's RUNOFF > proved influential, seeing many ports and derivations elsewhere. > > In 1969, Doug McIlroy wrote one such reimplementation of RUNOFF > in the BCPL language for a GE 645 running GECOS at the Bell Labs > location in Murray Hill, New Jersey. In its manual, the control > commands were termed "requests", their two-letter names were > canonical, and the control character was configurable with a .cc > request. Other familiar requests emerged at this time; no-adjust > (.na), need (.ne), page offset (.po), tab configuration (.ta, > though it worked differently), temporary indent (.ti), character > translation (.tr), and automatic underlining (.ul; on RUNOFF you > had to backspace and underscore in the input yourself). .fi to > enable filling of output lines got the name it retains to this > day. > > Unix and roff > roff was one of the first Unix programs. McIlroy's runoff was, > in Dennis Ritchie's term, "transliterated" from BCPL to DEC PDP-7 > assembly language for the fledgling Unix operating system. It > saw its name shortened to roff (perhaps under the influence of > Ken Thompson), while adding 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 a PDP-11; roff > promptly proved equal to the task of typesetting the first > edition of the manual for what would later become known as "Unix > Version 1", 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 > Unix Version 3 (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). Incremental improvements included > assignment of the next page number (.pn); no-space mode (.ns) and > restoration of vertical spacing (.rs); the saving (.sv) and > output (.os) of vertical space; specification of replacement > characters for tabs (.tc) and leaders (.lc); configuration of the > no-break control character (.c2); shorthand to disable automatic > hyphenation (.nh); a condensation of what were formerly six > different requests for configuration of page "titles" (headers > and footers) into one (.tl) with a length controlled separately > from the line length (.lt); automatic line numbering (.nm); > interactive input (.rd), which necessitated buffer-flushing > (.fl), and was made convenient with early program cessation > (.ex); source file inclusion in its modern form (.so; though > RUNOFF had an ".append" control word for a similar purpose) and > early advance to the next file argument (.nx); ignorable content > (.ig); and programmable abort (.ab). > > Third Edition Unix also brought the pipe(2) system call, the > explosive growth of a componentized system based around it, and a > "filter model" that remains perceptible today. Equally > importantly, the Bell Labs site in Murray Hill acquired a Graphic > Systems C/A/T phototypesetter, and with it came the necessity of > expanding the capabilities of a roff system to cope with > proportionally-spaced type, multiple type sizes, and a variety of > fonts. Ossanna wrote a parallel implementation of nroff for the > C/A/T, dubbing it troff (for "typesetter roff"). Unfortunately, > surviving documentation does not illustrate what requests were > implemented at this time for C/A/T support; the troff(1) man page > in Fourth Edition Unix (November 1973) does not feature a request > list, unlike nroff(1). Apart from typesetter-driven features, > Unix Version 4 roffs added string definitions (.ds); made the > escape character configurable (.ec); and enabled the user to > write diagnostics to the standard error stream (.tm). Around > 1974, empowered with multiple type sizes, italics, and a symbol > font specially commissioned by Bell Labs from Graphic Systems, > Brian Kernighan and Lorinda Cherry implemented eqn for > typesetting mathematics. In the same year, for Fifth Edition > Unix, Ossanna combined and reimplemented the two roffs in C, > using preprocessor conditions of that language to generate both > from a single source tree. > > Ossanna documented the syntax of the input language to the nroff > and troff programs in the "Troff User's Manual", first published > in 1976, with further revisions as late as 1992 by Kernighan. > (The original version was entitled "Nroff/Troff User's Manual", > which may partially explain why roff practitioners have tended to > refer to it by its AT&T document identifier, "CSTR #54".) Its > final revision serves as the de facto specification of AT&T > troff, and all subsequent implementors of roff systems have done > so in its shadow. > > A small and simple set of roff macros was first used for the > manual pages of Unix Version 4 and persisted for two further > releases, but the first macro package to be formally described > and installed was ms by Lesk in Version 6. He also wrote a > manual, "Typing Documents on the Unix System", describing ms and > basic nroff/troff usage, updating it as the package accrued > features. Sixth Edition additionally saw the debut of the tbl > preprocessor for formatting tables, also by Lesk. > > For Unix Version 7 (January 1979), McIlroy designed, implemented, > and documented the man macro package, introducing most of the > macros described in groff_man(7) today, and edited volume 1 of > the Version 7 manual using it. Documents composed using ms > featured in volume 2, edited by Kernighan. > > Ossanna had passed away unexpectedly in 1977, and after the > release of Version 7, with the C/A/T typesetter becoming > supplanted by alternative devices such as the Mergenthaler > Linotron 202, Kernighan undertook a revision and rewrite of troff > to generalize its design. To implement this revised > architecture, he developed the font and device description file > formats and the device-independent output format that remain in > use today. He described these novelties in the article "A > Typesetter-independent TROFF", last revised in 1982, and like the > troff manual itself, it is widely known by a shorthand, "CSTR > #97". > > Kernighan's innovations prepared troff well for the introduction > of the Adobe PostScript language in 1982 and a vibrant market in > laser printers with built-in interpreters for it. An output > driver for PostScript, dpost, was swiftly developed. However, > due to AT&T software licensing practices, Ossanna's troff, with > its tight coupling to the capabilities of the C/A/T, remained in > parallel distribution with device-independent troff throughout > the 1980s, leading some developers to contrive translators for > C/A/T-formatted documents to other devices. An example was > vtroff for Versatec and Benson-Varian plotters. Today, however, > all actively maintained troffs follow Kernighan's device- > independent design. > > Regards, > Branden > > [1] "The Evolution of the Unix Time-Sharing System", Ritchie, 1984 > [2] Formatted with: > groff -man -P-c -Tascii -rLL=72n -rHY=0 -dAD=l build/man/roff.7 > (The `AD` string is new to groff 1.23 man(7).) > [-- Attachment #2: Type: text/html, Size: 20167 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] *roff history as told to GNU 2022-01-12 18:06 ` [TUHS] *roff history as told to GNU G. Branden Robinson ` (2 preceding siblings ...) 2022-01-12 22:32 ` Clem Cole @ 2022-01-13 2:38 ` John Labovitz 2022-01-13 7:42 ` Lars Brinkhoff 3 siblings, 1 reply; 11+ messages in thread From: John Labovitz @ 2022-01-13 2:38 UTC (permalink / raw) To: G. Branden Robinson; +Cc: The Eunuchs Hysterical Society On Jan 12, 2022, at 13:06, G. Branden Robinson <g.branden.robinson@gmail.com> wrote: > I've been collecting a detailed narrative history not just of the *roff > _programs_ but also of the development on the language in the roff(7) > manual page. Before RUNOFF was Peter Samson’s TJ-2 in 1963. It seems to have been the first program that incorporated the idea of input lines being interpreted as either control (with a prefix of a dot or other character) or text. I dug up this history when I wrote ‘The Electric Typesetter: The Origins of Computing in Typography’ for the American Printing History Association’s journal _Printing History_ (issue 21, 2017). Sadly they don’t have online archives; my PDF of the article is here: https://johnlabovitz.com/publications/The-electric-typesetter--The-origins-of-computing-in-typography.pdf It’s about more than markup languages, but here’s the relevant bit: > The earliest known text-formatting software, TJ-2, was created by MIT-trained computer scientist Peter Samson in 1963. Its design and architecture set the stage for text-formatting and typesetting programs for the next several decades. > > […] > > TJ-2 read lines of text as its input. Each line was collected and formatted to make justified paragraphs (of monospaced type). However, if a line started with a special control code (“overbar,” in the lingo of the PDP-1 system, its host computer), the program interpreted it as a command. There were only a few commands, including a primitive line-centering mode, some simplistic indentation, and a command that left a specific amount of vertical space for a figure (e.g., illustration) to be inserted later. > > […] > > Note that TJ-2 did not interface with a phototypesetter — or any typesetter. Its output was destined to be printed on what was essentially an automatic typewriter outfitted only with monospaced fonts. While this seems a limitation, perhaps it was a necessary constraint at the time. But the TJ-2 went on to inspire (directly or indirectly) a long branch of typesetting software beginning with RUNOFF (“A Right-Justifying Type Out Program”) in 1964, a program that used “control words scattered in the text [to] provide detailed control over the format” of text. RUNOFF substituted TJ-2’s proprietary “overbar” control code with a simple period, and expanded the set of commands to produce line and page breaks and folios (page numbers). Then, in a fairly confusing list of technical begats over a decade or so, RUNOFF (capitals) led to “runoff” (lowercase), then to “rf,” “roff,” “nroff,” and “troff” — all software programs that utilized the same basic idea as TJ-2. Links from the footnotes: TJ-2: http://www.dpbsmith.com/tj2.html RUNOFF: http://web.mit.edu/Saltzer/www/publications/CC-244.html Best, —John ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] *roff history as told to GNU 2022-01-13 2:38 ` John Labovitz @ 2022-01-13 7:42 ` Lars Brinkhoff 2022-01-13 13:47 ` John Labovitz 0 siblings, 1 reply; 11+ messages in thread From: Lars Brinkhoff @ 2022-01-13 7:42 UTC (permalink / raw) To: John Labovitz; +Cc: The Eunuchs Hysterical Society John Labovitz wrote: > The earliest known text-formatting software, TJ-2, was created by > MIT-trained computer scientist Peter Samson in 1963. I see claimed predecessors are JUSTIFY and TJ-1. How do you feel about those? ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [TUHS] *roff history as told to GNU 2022-01-13 7:42 ` Lars Brinkhoff @ 2022-01-13 13:47 ` John Labovitz 0 siblings, 0 replies; 11+ messages in thread From: John Labovitz @ 2022-01-13 13:47 UTC (permalink / raw) To: Lars Brinkhoff; +Cc: The Eunuchs Hysterical Society On Jan 13, 2022, at 02:42, Lars Brinkhoff <lars@nocrew.org> wrote: > John Labovitz wrote: >> The earliest known text-formatting software, TJ-2, was created by >> MIT-trained computer scientist Peter Samson in 1963. > > I see claimed predecessors are JUSTIFY and TJ-1. How do you feel about > those? I’m sure I looked for TJ-1 when I did this research — an obvious question, given the ‘2’ suffix — but didn’t find anything then. I’m not familiar with JUSTIFY. Do you have links/info for those? —John ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2022-01-13 13:48 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-01-12 20:48 [TUHS] *roff history as told to GNU Noel Chiappa -- strict thread matches above, loose matches on Subject: below -- 2022-01-01 3:15 [TUHS] TeX and groff (was: roff(7)) Larry McVoy 2022-01-10 19:00 ` Blake McBride 2022-01-11 1:59 ` [TUHS] Demise of " Greg 'groggy' Lehey 2022-01-11 2:13 ` Lyndon Nerenberg (VE7TFX/VE6BBM) 2022-01-11 2:42 ` Larry McVoy 2022-01-11 15:47 ` Clem Cole 2022-01-11 19:20 ` John Cowan 2022-01-11 20:06 ` Clem Cole 2022-01-12 8:54 ` arnold 2022-01-12 16:33 ` Dan Cross 2022-01-12 18:06 ` [TUHS] *roff history as told to GNU G. Branden Robinson 2022-01-12 18:34 ` Dan Halbert 2022-01-12 22:48 ` Clem Cole 2022-01-12 23:27 ` Charles H. Sauer 2022-01-13 0:35 ` Adam Thornton 2022-01-12 20:01 ` Dan Cross 2022-01-12 22:32 ` Clem Cole 2022-01-13 2:38 ` John Labovitz 2022-01-13 7:42 ` Lars Brinkhoff 2022-01-13 13:47 ` John Labovitz
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).