[TUHS] Census of Early (Pre-C Kernel) UNIX Documents

segaloco via TUHS tuhs at tuhs.org
Thu Feb 15 07:03:43 AEST 2024


Hello everyone, I'm currently laying the groundwork for a restart of my mandiff project, expanding it to encompass not just the manual-proper, but also the documents leading to the "Documents for UNIX" collections as well.  Thus far I'm about halfway done on a ROFF restoration of the earliest surviving draft of Dennis Ritchie's The UNIX Time-Sharing System paper[1], reconstructed from existing, later NROFF text and ROFF conventions from the Third Edition manual[2].

Thus far, the additional documents I've found explicitly referenced in the earlier days are:

User's Reference Manual to B - K. Thompson[3]
C Reference Manual - D. M. Ritchie[4 - see note]
M6 Manual - A. D. Hall[5]
ROFF Manual - J. F. Ossanna[6 - see note]
A Manual for the TMG Compiler-writing Language - M. D. McIlroy[7]
UNIX Assembler Manual - D. M. Ritchie[8 - see note]
NROFF Users' Manual - J. F. Ossanna[9 - see note]
YACC Manual - S. C. Johnson[10 - see note]

Aside from these references, there are two other B papers, one a tutorial[11] by B. W. Kernighan and the other a MH-TSS reference by S. C. Johnson[12].  I don't think I saw either referenced in the manual-proper.  The latter then makes further reference to a "Bell Laboratories BCPL" by R. H. Canaday and D. M. Ritchie, although I suspect this is lost, I can't find it.

Anywho, my plan is to take any known ROFF/NROFF sources for the above documents and reconstruct the earliest versions possible and then add them to my revamped repository in the timeframes that they first start showing up as references in the manual to derive a more holistic view of the creation of manuals and guides in the early days.  A few matters prompted me to start over:

1. Noticing that there is direct lineage between some of the text in the UnixEditionZero paper and later manual pages like as(I), I want to capture the base text as far back as possible, which in this case would mean ensuring a commit in the chain captures the transfer of the text from the UnixEditionZero paper to as(I) to give a more complete history.

2. Al Kossow has now scanned and preserved a UNIX Program Generic II manual, meaning I no longer have to make as many assumptions about what changed and what didn't in the USG/Research split.  Thus far, assumptions about the Program Generic line have been based on the extant MERT manual (which in turn is described as deriving from the Program Generic III manual.)

3. The picture of PWB/2.0 is becoming a bit clearer as time goes on, but is still murky, and that has implications for the changes between the Sixth Edition (where my current mandiff repo[13] ends) and the Seventh Edition.  Rather than having to go back and redo a bunch of work, I think the first pass can stand on its own as a source of guidance on redoing this.

4. The cleanliness of the repository history is not to my liking, there are several instances of multiple commits across pages related to some larger, holistic change that would really be easier to study if they were in one.  Starting over, I now have a much clearer picture of V1->V6 that I can use to produce a tighter history.

Anywho, to summarize what I'm looking for feedback on, first, are there any major documents I'm omitting from this investigation?  Any particular technical memoranda that are crucial to the big picture?  Additionally, is anyone aware whether USG Program Generic I (or earlier?) had a formal edition of the Programmer's Manual or if they would've just referred folks to the research manual prior to PG II?  With the latter question I'm trying to determine if USG manual history starts with the PG II manual Al Kossow has scanned or if I should be considering a hole in the record where a PG I manual goes.

Thanks for following along, hopefully getting this groundwork in place will ensure the next go at this project is even more fruitful than the last!

- Matt G.

--- References ---

1 - https://www.tuhs.org/Archive/Distributions/Research/McIlroy_v0/UnixEditionZero-Threshold_OCR.pdf
2 - https://www.tuhs.org/cgi-bin/utree.pl?file=V3/man
3 - https://www.bell-labs.com/usr/dmr/www/kbman.html

4 - I may have a copy of the earliest version of this I can identify.  The earliest version I can find online is dated January 15th, 1974 (https://www.bell-labs.com/usr/dmr/www/cman74.pdf) and contains the text "C is also available on the HIS 6070 computer at Murray Hill and on the IBM System/370 at Holmdel" whereas this particular copy of the paper states "C is also available on the HIS 6070 computer at Murray Hill, using a compiler written by A. Snyder and currently maintained by S. C. Johnson.  A compiler for the IBM System/360/370 series is under construction."  The manual is TROFF printout and isn't formatted as a memorandum like the link included here.  References to the C Reference Manual begin to show up as early as the Second Edition manual, although these imply the C manual is still being written.  Does anyone know if the C Reference Manual started in ROFF and then moved to NROFF some time before the earliest copies we're aware of?  In any case, I intend to scan this copy, it just hasn't bubbled up in my project list yet.

5 - https://tuhs.pdp-11.org.ru/Documentation/TechReports/Bell_Labs/CSTRs/2.pdf

6 - I have a copy that defers from the one I could find here: https://www.cs.dartmouth.edu/~doug/roff71/roff71.pdf It is not in technical memorandum format and also may be missing a few pages (in mine, the tutorial ends with the "Translation" section but the linked document contains a couple more paragraphs on page offset (.po), merge patterns, and an envoi (conclusion).  The most striking difference is that the linked paper is Doug's version for TSS, but the paper I've got lists the invocation in the UNIX style (roff +N -M name1 name2 ...) and is likely representative of the UNIX version with Joe Ossanna's work.  Doug if you catch this and believe the attribution on this page (https://wiki.tuhs.org/doku.php?id=systems:2nd_edition) should have your by-line or both you and jfo, happy to make the edit.  The text of the UNIX version I have does seem to descend from your original paper.  By the way, an even earlier version of this paper for runoff is available here (https://manpages.bsd.lv/history/runoff69.low.pdf)

7 - https://www.tuhs.org/Archive/Distributions/Research/1972_stuff/tmg.pdf

8 - This is first referenced in the Third Edition manual.  Some of the text may derive from the second Appendix of the "UnixEditionZero" paper linked above, the manpage certainly has influence from that document.  Not sure if any of that implies the manual may have started in ROFF, but in any case, constitutes an early reference.

9 - This reference first appears, verifiably, in the Third Edition.  However, the Second Edition manual does list nroff(I) in the TOC, but this page is not actually included in the extant PDF in the archive.  In any case, the earliest version of the NROFF Users' Manual I'm aware of is the Second Edition, dated 9/11/74.  Is any such First Edition extant on the public record?

10 - The earliest reference to this manual I can find is in the Third Edition.  Not sure if there are any earlier specimens than the text in the Sixth Edition sources.

11 - https://www.bell-labs.com/usr/dmr/www/btut.html

12 - https://www.bell-labs.com/usr/dmr/www/bref.html

13 - https://gitlab.com/segaloco/mandiff


More information about the TUHS mailing list