The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
* Re: [TUHS] earliest Unix roff
@ 2019-09-15 22:07 Doug McIlroy
  2019-09-17  0:20 ` Steve Johnson
  0 siblings, 1 reply; 103+ messages in thread
From: Doug McIlroy @ 2019-09-15 22:07 UTC (permalink / raw)
  To: tuhs

> Excellent - thanks for the pointer.   This shows nroff before troff.
>  FWIW: I guess I was miss informed, but I had been under the impression
> that was the other way around.  i.e. nroff was done to be compliant with
> the new troff, replacing roff, although the suggestion here is that he
> wrote it add macros to roff.  I'll note that either way, the dates are all
> possible of course because the U/L case ASR 37 was introduced 1968 so by
> the early 1970's they would have been around the labs.

nroff was in v2; troff appeared in v4, which incidentally was
typeset in troff.

Because of Joe Ossanna's role in designing the model 37, we
had 37's in the Labs and even in our homes right from the
start of production. But when they went obsolete, they were
a chore to get rid of. As Labs property, they had to be
returned; and picking them up was nobody's priority.
Andy Hall had one on his back porch for a year.

Doug

^ permalink raw reply	[flat|nested] 103+ messages in thread
* Re: [TUHS] [OT] Re:  earliest Unix roff
@ 2019-09-19 18:50 Norman Wilson
  2019-09-19 19:00 ` Nemo Nusquam
  0 siblings, 1 reply; 103+ messages in thread
From: Norman Wilson @ 2019-09-19 18:50 UTC (permalink / raw)
  To: tuhs

KatolaZ:
> We can discuss whether the split was necessary or "right" in the first
> instance, as we could discuss whether it was good or not for cat(1) to
> leave Murray Hill in 1979 with no options and come back from Berkley
> with a source code doubled in size and 9 options in 1982.

We needn't discuss that (though of course there are opinions and
mine are the correct ones), but in the interest of historic accuracy,
I should point out by 1979 (V7) cat had developed a single option -u
to turn off stdio buffering.

Sometime before 1984 or so, that option was removed, and cat was
simplified to just
	while ((n = read(fd, buf, sizeof(buf))) > 0)
		write(1, buf, n)
(error checking elided for clarity)
which worked just fine for the rest of the life of the Research
system.

So it's true that BSD added needless (in my humble but correct
opinion) options, but not that it had none before they touched it.
Unless all those other programs were stuffed into cat in an earlier
Berkeley system, but I don't think they were.

Norman Wilson
Toronto ON
(Three cats, no options)

^ permalink raw reply	[flat|nested] 103+ messages in thread
* Re: [TUHS] earliest Unix roff
@ 2019-09-19 18:42 Norman Wilson
  2019-09-19 22:42 ` Rob Pike
  0 siblings, 1 reply; 103+ messages in thread
From: Norman Wilson @ 2019-09-19 18:42 UTC (permalink / raw)
  To: tuhs

Clem Cole:

  Exactly!!!!   That's what Eric did when he wrote more(ucb) -  he *added to
  Unix*.   The funny part was that USG thought more(ucb) was a good idea and
  then wrote their own, pg(att); which was just as arrogant as the info
  behavior from the Gnu folks!!!

======

And others wrote their own too, of course.  The one I know
best is p(1), written by Rob Pike in the late 1970s at the
University of Toronto.  I encountered at Caltech on the
system Rob had set up before leaving for Bell Labs (and
which I cared for and hacked on for the next four years
before following him).  By the time I reached BTL it was
a normal part of the Research system; I believe it's in
all of the Eighth, Ninth, and Tenth Edition manuals.

p is interesting because it's so much lighter-weight, and
because it has rather a different interior design:

Rather than doing termcappy things, p just prints 22 lines
(or the number specified in an option), then doesn't print
the newline after the 22nd line.  Hit return and it will
print the next 22 lines, and so on.  The resulting text just
flows up the glass-tty screen without any fuss, cbreak, or
anything.  (I believe the first version predated V7 and
therefore cbreak.)

Why 22 lines instead of 24, the common height of glass ttys
back then?  Partly because that means you keep a line or two
of context when advancing pages, making reading simpler.
But also because in those days, a standard page destined for
a printer (e.g. from pr or nroff, and therefore from man) was
66 lines long.  22 evenly divides 66, so man something | p
never gives you a screen spanning pages.

p was able to back up: type - (and return) instead of just
return, and it reprints the previous 22-line page; -- (return)
the 22 lines before that; and so on.  This was implemented
in an interesting and clever way: a wrapper around the standard
I/O library which kept a circular buffer of some fixed number
of characters (8KiB in early versions, I think), and a new
call that, in effect, backed up the file pointer by one character
and returned the character just backed over.  That made it easy
to back over the previous N lines: just make that call until
you've seen N newlines, then discard the newline you've just
backed over, and you're at the beginning the first line you want
to reprint.

As I vaguely recall, more was able to back up, but only when
reading from a real file, not a pipeline.  p could do (limited
but sufficient) backup from a pipeline too.

As a creature of its pre-window-system era, you could also type
!command when p paused as well.

I remember being quite interested in that wrapper as a
possible library for use in other things, though I never
found a use for it.

I also remember a wonderful Elements-of-Programming-Style
adventure with Rob's code.  I discovered it had a bug under some
specific case when read returned less than a full bufferful.
I read the code carefully and couldn't see what was wrong.
So I wrote my own replacement for the problematic subroutine
from scratch, tested it carefully in corner cases, then with
listings of Rob's code and mine side-by-side walked through
each with the problem case and found the bug.

I still carry my own version of p (rewritten from scratch mainly
to make it more portable--Rob's code was old enough to be too
clever in some details) wherever I go; ironically, even back to
U of T where I have been on and off for the past 30 years.
more and less and pg and the like are certainly useful programs;
for various reasons they're not to my taste, but I don't scorn
them.  But I can't help being particular fond of p because it
taught me a few things about programming too.

Norman Wilson
Toronto ON

^ permalink raw reply	[flat|nested] 103+ messages in thread
* Re: [TUHS] earliest Unix roff
@ 2019-09-19 18:10 Norman Wilson
  2019-09-19 18:37 ` Clem Cole
                   ` (2 more replies)
  0 siblings, 3 replies; 103+ messages in thread
From: Norman Wilson @ 2019-09-19 18:10 UTC (permalink / raw)
  To: tuhs

Larry McVoy:

  If you have something like perl that needs a zillion sub pages, info
  makes sense.  For just a man page, info is horrible.

=====

This pokes me in one of my longest-standing complaints:

Manual entries, as printed by man and once upon a time in
the Programmers' Manual Volume 1, should be concise references.
They are not a place for tutorials or long-winded descriptions
or even long lists of hundreds of options (let alone descriptions
of why the developer thinks this is the neatest thing since
sliced bread and what bread he had in his sandwiches that day).

For many programs, one or two pages of concise reference is
all the documentation that's needed; no one needs a ten-page
tutorial on how to use cat or rm or ls, for example.  But some
programs really do deserve a longer treatment, either a tutorial
or an extended reference with more detail or both.  Those belong
in separate documents, and are why the Programmers' Manual had
a second volume.

Nowadays people think nothing of writing 68-page-long manual
entries (real example from something I'm working with right now)
that are long, chatty lists of options or configuration-file
directives with tutorial information interspersed.  The result
makes the developer feel good--look at all the documentation
I've written!!--but it's useless for someone trying to figure
out how to write a configuration file for the first time, and
not so great even for someone trying to edit an existing one.

Even the Research system didn't always get this right; some
manual entries ran on and on and on when what was really
needed was a concise list of something and a longer accompanying
document.  (The Tenth Edition manual was much better about
that, mostly because of all the work Doug put in.  I doubt
there has ever been a better editor for technical text than
Doug.)  But it's far worse now in most systems, because
there's rarely any editor at all; the manuals are just an
accreted clump.

And that's a shame, though I have no suggestions on how
to fix it.

Norman Wilson
Toronto ON

^ permalink raw reply	[flat|nested] 103+ messages in thread
* Re: [TUHS] earliest Unix roff
@ 2019-09-15  2:45 Doug McIlroy
  0 siblings, 0 replies; 103+ messages in thread
From: Doug McIlroy @ 2019-09-15  2:45 UTC (permalink / raw)
  To: tuhs

> I'd love to see the docs on that early stuff and see if Joe Ossanna
> added in his own magic or was he carrying forward earlier magic.

Here are scans of non-unix roff in 1971: https://www.cs.dartmouth.edu/~doug/roff71/roff71
I also have 1969, but it's bedtime and that will have to wait.

Relative numbers (+n), roman numerals, .ti, top and bottom margin settings,
.po, running titles, tab settings, hyphenation and footnotes were not in
Saltzer's runoff. Most other features were. 

Doug

^ permalink raw reply	[flat|nested] 103+ messages in thread
* [TUHS] My EuroBSDcon talk (preview for commentary)
@ 2019-09-13  3:20 Warner Losh
  2019-09-13 19:47 ` Clem Cole
  0 siblings, 1 reply; 103+ messages in thread
From: Warner Losh @ 2019-09-13  3:20 UTC (permalink / raw)
  To: The Eunuchs Hysterical Society

[-- Attachment #1: Type: text/plain, Size: 861 bytes --]

OK. I've shared my slides for the talk.

Some of the family trees are simplified (V7 doesn't have room for all its
ports, for example)
Some of it is a little cheeseball since I'm also trying to be witty and
entertaining (we'll see how that goes).
Please don't share them around until after my talk on the September 20th

I'd like feedback on the bits I got wrong. Or left out. Or if you're in
this and don't want to be, etc.

All the slides after the Questions slide won't be presented and will likely
be deleted.

https://docs.google.com/presentation/d/177KxOif5oHARyIdZHDq-OO67_GVtMkzIAlDX-cHxgb4/edit?usp=sharing

Please be kind (but if it sucks, please do tell). I've turned on commenting
on the slides. Probably best if you comment there.

I have a video of me giving this talk, but it's too rough to share...

Thanks for any help you can give me.

Warner

[-- Attachment #2: Type: text/html, Size: 1262 bytes --]

^ permalink raw reply	[flat|nested] 103+ messages in thread

end of thread, other threads:[~2019-10-05 20:01 UTC | newest]

Thread overview: 103+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-15 22:07 [TUHS] earliest Unix roff Doug McIlroy
2019-09-17  0:20 ` Steve Johnson
2019-09-17  1:11   ` Arthur Krewat
2019-09-17  1:17     ` Larry McVoy
2019-09-17  1:26       ` Clem cole
2019-09-17  1:33         ` Larry McVoy
2019-09-17 22:39           ` Dave Horsfall
2019-09-17  1:36         ` Richard Salz
2019-09-17  1:36       ` [TUHS] wizards test [was roff] Clem cole
2019-09-17  1:38         ` Clem cole
2019-09-17  2:34         ` Larry McVoy
2019-09-17  1:57       ` [TUHS] earliest Unix roff Bakul Shah
2019-09-17  1:11   ` [TUHS] Model 37's Ronald Natalie
2019-09-17  1:19   ` [TUHS] earliest Unix roff Bakul Shah
  -- strict thread matches above, loose matches on Subject: below --
2019-09-19 18:50 [TUHS] [OT] " Norman Wilson
2019-09-19 19:00 ` Nemo Nusquam
2019-09-19 20:18   ` Larry McVoy
2019-09-19 20:42     ` [TUHS] " Andy Kosela
2019-09-19 18:42 Norman Wilson
2019-09-19 22:42 ` Rob Pike
2019-09-19 22:55   ` Bakul Shah
2019-09-19 18:10 Norman Wilson
2019-09-19 18:37 ` Clem Cole
2019-09-19 18:44   ` Jon Steinhart
2019-09-19 19:44 ` Steffen Nurpmeso
2019-09-19 20:38   ` John P. Linderman
2019-09-20 13:41     ` Steffen Nurpmeso
2019-09-20 15:03       ` Steffen Nurpmeso
2019-09-19 20:53 ` Bakul Shah
2019-09-15  2:45 Doug McIlroy
2019-09-13  3:20 [TUHS] My EuroBSDcon talk (preview for commentary) Warner Losh
2019-09-13 19:47 ` Clem Cole
2019-09-13 20:02   ` Clem Cole
2019-09-13 20:06     ` Clem Cole
2019-09-13 20:24       ` Jon Steinhart
2019-09-13 20:43         ` Clem Cole
2019-09-13 20:53           ` Diomidis Spinellis
2019-09-13 21:45             ` Clem Cole
2019-09-13 22:13               ` [TUHS] earliest Unix roff Warren Toomey
2019-09-13 22:55                 ` Clem Cole
2019-09-14  2:02                   ` Larry McVoy
2019-09-14  2:44                     ` Warren Toomey
2019-09-15  2:56                       ` U'll Be King of the Stars
2019-09-15  6:54                         ` arnold
2019-09-15  7:01                           ` Dave Horsfall
2019-09-15 16:17                             ` Jon Steinhart
2019-09-15 17:23                               ` Ronald Natalie
2019-09-15 19:48                             ` Clem Cole
2019-09-15 21:16                               ` Dave Horsfall
2019-09-15  7:32                           ` U'll Be King of the Stars
2019-09-15  7:46                             ` arnold
2019-09-15 19:37                           ` Clem Cole
2019-09-16  5:52                             ` arnold
2019-09-16 12:10                               ` Clem Cole
2019-09-16 12:26                                 ` Lars Brinkhoff
2019-09-16 13:42                                   ` Clem Cole
2019-09-16 14:54                                     ` Larry McVoy
2019-09-16 16:09                                     ` Paul Winalski
2019-09-16 22:05                                     ` Dave Horsfall
2019-09-16 22:33                                       ` reed
2019-09-17  0:11                                         ` Dave Horsfall
2019-09-17  0:02                                       ` Nemo Nusquam
2019-09-17  0:21                                         ` Arthur Krewat
2019-09-17 11:12                                         ` Thomas Paulsen
2019-09-17  0:46                                       ` Clem Cole
2019-09-16 13:13                                 ` Chet Ramey
2019-09-16 14:51                                 ` Larry McVoy
2019-09-16 14:57                                   ` Clem Cole
2019-09-16 15:14                                     ` Richard Salz
2019-09-16 15:48                                       ` Ronald Natalie
2019-09-16 16:10                                       ` Larry McVoy
2019-09-16 16:16                                         ` Jon Steinhart
2019-09-16 16:26                                           ` Larry McVoy
2019-09-16 16:31                                             ` Richard Salz
2019-09-16 16:45                                               ` Larry McVoy
2019-09-16 17:19                                                 ` KatolaZ
2019-09-16 17:24                                                   ` Larry McVoy
2019-09-16 17:32                                                     ` Jon Steinhart
2019-09-16 17:35                                                     ` Clem Cole
2019-09-16 17:37                                                   ` Jon Steinhart
2019-09-16 18:04                                                   ` Chet Ramey
2019-09-16 18:19                                                     ` KatolaZ
2019-09-16 23:24                                                     ` Dave Horsfall
2019-09-16 17:24                                                 ` Clem Cole
2019-09-16 17:00                                               ` Clem Cole
2019-09-17 11:20                                         ` Thomas Paulsen
2019-09-16 19:13                                       ` Steffen Nurpmeso
2019-09-16 19:31                                       ` Bakul Shah
2019-09-16 22:35                                     ` Dave Horsfall
2019-09-17  7:53                                   ` arnold
2019-09-17 14:21                                     ` Clem Cole
2019-09-17 15:03                                       ` arnold
2019-09-17 15:58                                     ` Christopher Browne
2019-09-17 18:15                                       ` arnold
2019-09-17 18:32                                         ` Warner Losh
2019-09-18  0:42                                         ` Adam Thornton
2019-09-16 21:42                                 ` Dave Horsfall
2019-09-16 21:48                                   ` Larry McVoy
2019-09-16 21:54                                     ` Jon Steinhart
2019-09-16 21:59                                       ` Larry McVoy
2019-09-17  5:07                                         ` Lars Brinkhoff
2019-09-16 22:10                                       ` Bakul Shah
2019-09-17  0:16                                   ` Greg 'groggy' Lehey
2019-09-17  0:31                                     ` Jon Steinhart
2019-09-17 12:20                                     ` David
2019-10-05 19:44                                 ` Michael Parson
2019-09-15 19:35                         ` Clem Cole
2019-09-15 20:49                           ` U'll Be King of the Stars
2019-09-16  6:20                             ` arnold
2019-09-16 12:13                               ` Clem Cole
2019-09-16 12:34                                 ` arnold
2019-09-16 14:52                                 ` Larry McVoy
2019-09-15 19:27                       ` Clem Cole
2019-09-15 19:31                         ` Jon Steinhart

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).