On 9/30/25 15:55, G. Branden Robinson wrote:
Hi Arsen,
At 2025-09-30T21:57:00+0200, Arsen Arsenović wrote:
In the original Unix v1 programmers manual (or, at least, the copy I
could find),
As far as I know all copies of the First Edition manual on the Internet
descend from one scan. They all are missing ascii(VII); presumably some
CSRC person tore that page out and taped it up next to their Teletype.
It was Dennis Ritchie's personal copy, so probably him:
https://www.nokia.com/bell-labs/about/dennis-m-ritchie/1stEdman.html
If someone locates a different scan, especially one with that man page
in it, consider the groff mailing list interested.
Last I checked Ken Thompson, Doug McIlroy, and Brian Kernighan are still
alive. The computer history museum in mountain view might also have
something in its exhibits.
This is the first I've heard of the missing bits, and
https://landley.net/history/mirror is 25 years old at this point.
(Computer history's a hobby of mine, somewhere between "fascinating" and
"a big soap opera".)
(A funny side note: subconsciously, I chose the name "fildes.7" as to
not go over eight characters; it came to me naturally after many years
of working with and on Unix-like systems, this archaic element simply
lodged itself into my instincts after some time.)
Eight's an odd choice for that, though. As I understand it, the Fortran
linker that Unix originally used (C did not exist yet) had a limit of 6
characters for externally resolvable symbols, because that was all some
IBM operating system could handle. File names (or "path name
components", if one insists) were limited to 14 characters until the
Berkeley "fast" file system. The tuhs at tuhs dot org is a more
reliable resource than I can be here, though.
DOS was 8.3 (which it copied from cp/m). That lodged in a lot of brains.
CP/M is quite formative in its own way, too many people overlook it:
https://www.landley.net/history/mirror/cpm/history.html
Also, in my opinion, it is obvious that the term "file descriptor" is
a misnomer or misabstraction and that "descriptor" or "handle" - which
are significantly broader terms - would result in a far clearer
abstraction (where a file descriptor is one such descriptor or
handle).
"Handle" _is_ a better term. So let us politely applaud Microsoft
managing to not make the wrong choice at _every_ turn.
That was Paul Allen, who left in 1983.
CP/M had File Control Blocks and QDOS was a 16 bit reimplementation of
CP/M otherwise trying to be a bug-for-bug clone you could easily port
existing software to, a bit like linux was to unix. Paul Allen added
file handles and subdirectories in DOS 2.0 because he was trying to move
the userbase over to unix, specifically xenix.
Just most.
In my mind, this basic failure in design was a result of someone
chanting something like "everything is a file", and hence attaching a
read and write operation to all OS "objects" instead of understanding
that the filesystem hierarchy also contained within itself an "object"
hierarchy. I have no way of knowing if my head-canon is correct,
though.
I don't either, but my impression is that much documentary work at the
Bell Labs CSRC was the work of exigetes attempting to divine Ken
Thompson's hermetic source code.
Ken Thompson was still at bell labs until 2000.
https://www.cs.princeton.edu/courses/archive/spring03/cs333/thompson
AT&T stopped externally publishing bell labs' work after Unix v7 because
they were trying to commercialize system III/V, but the labs made it to
version 10 before starting over on Plan 9.
https://github.com/Alhadis/Research-Unix-v10
Thus the value of the Lions book.
Nah, that samizdat was mostly about post-1983 copyright enforcement.
(Heck, it was unix v6 not even v7.) Maurice J. Bach's "The design of the
unix operating system" from 1986 and Andrew Tanenbaum's Minix were both
direct responses to the Apple vs Franklin decision of 1983, unix was
pretty darn well understood ever since the ACM publication in 1974.
*cracks knuckles*
Paul Allen wanted to put Unix on the IBM PC as soon as he heard about
it, and went out and got a Unix license from AT&T and hired a garage
operation in Santa Cruz to port it to the two platforms IBM was likely
to use, m68k and 8086, back when it was still a rumor. (The book
"Accidental empires" and corresponding documentary "Triumph of the
Nerds" were written by someone who worked with them at microsoft, and
interviewed them on camera for the documentary.)
Then when they signed the NDA and got the specs, they saw IBM was
clearly making a 16 bit CP/M clone: "16-64k of ram" was NOT gonna run
xenix, and the ISA bus was literally a condensed version of the S-100
bus with unused wires removed so it could be physically smaller, but
there were adapter cards to plug S-100 cards into 8-bit ISA slots. IBM
was only talking to them because all the CP/M machines ran Microsoft
Basic. (And because Bill's mother was on the board of directors of the
Red Cross alongside IBM's CEO, so he made an exception for "Mary's boy".
This is all in the 1993 book "Big Blues" by Paul Carrol by the way.)
But Paul Allen knew a guy in Seattle (Tim Patterson) who had recently
created Microsoft's first hardware product for them (an Apple II
expansion card that stuck an 8080 CPU in it so it could run MS-DOS) and
knew that at Tim's current job he was making a 16-bit 8086 board and had
needed an OS to test the hardware with, and had gotten tired of waiting
for Digital Research to do their long promised 16 bit CP/M port (Gary
Kildall thought SMP was the next big thing and focused on MP/M instead,
but the limiting factor wasn't CPU it was memory so that didn't take off
until decades later)... anyway, Tim bought a CP/M programming book and
implemented all the system calls it listed himself, promoting arguments
to larger types where appropriate, and used THAT "quick and dirty
operating system" to test the board.
In the IBM meeting, Paul told Bill Gates about this, and Bill's eyes lit
up at the idea of owning not just the default programming language in
ROM on the new system but the whole operating system, and Bill sold them
on this "new OS" they had, and bought Paul time to actually go GET it by
screwing up the meeting with Gary Kildall. (The story is he said that he
knew the guy and could arrange the meeting, and he "arranged" it so IBM
to showed up midmorning but told Gary that the meeting wasn't until the
afternoon, so Gary was out at the airport flying his plane to blow off
nerves. Gary's wife of course called Bill about IBM showing up early,
and Bill suggested an easy way to delay them was going looking over the
NDA IBM insisted everybody sign with Digital Research's company lawyer,
and of course the lawyer threw up all over it because that's what
lawyers do and they did NOT sign it... so by the time Gary got back from
the airport the meeting was off and the relationship needed weeks of
repair work.)
The reason IBM was making the PC in the first place was their sales reps
had been seeing Apple II with Visicalc on every secretary's desk and
went "this is an IBM-only shop, how DARE..." and decided they had 1 year
to kill it by flooding the niche with 250,000 units of an IBM product
before it became entrenched. (And after those 250k they'd have killed
off the competition and could stop, obviously.) But an audit of their
internal processes had recently revealed it took them 9 months to ship
an empty box so there was NO TIME to develop something, so the CEO got
all the department heads together and went "who can do this impossible
thing" and the head of the Boca Raton department said "my guys can if we
have carte blance to violate every IBM policy to do it" and the CEO went
"anybody who interferes with you will be fired". (Boca is halfway
between palm beach and Ft. Lauderdale, it existed as some place
executives could fly to and hold meetings on a beach with a margarita,
and what it actually did the rest of the time was secondary, so it wound
up being an accidental basic research facility full of maveric hobbyists
following the shiny thing, while the rest of IBM was obedient corporate
drones or got fired.)
The theory behind the PC was "what already EXISTS in warehouses that we
can order 250k units of to be in our loading dock next week", and they
constructed a system entirely out of existing parts. And they chose CP/M
parts, and convinced Intel to do the 8088 so a 16-bit CPU could fit in
the 8-bit bus of existing motherboards. (Intel was doing
https://timeline.intel.com/1979/operation-crush so happily agreed to
ANYTHING to another sales win, even licensing their crown jewel design
to AMD so IBM had a second source. Motorola refused to license their IP
to a competitor just to get a sales contract, which is why IBM went with
Intel. GPL co-author Eben Moglen was IBM's lawyer during these
negotiations, he told me about it one time I shared a cab with him at a
Linux event in NYC. I also met Motorola's then-lawyer in 2001 and got
his side of the story.)
Part of Bill Gates' argument to IBM to convince them to license MS-DOS
(I.E. QDOS) was ALSO being a "second source" so IBM had no upstream
monopoly vendors. (IBM _being_ a monopoly understood about being
squeezed and wanted to DO it, not receive it.) IMSAI had already
convinced Kildall to split CP/M into the "BIOS" and "BDOS" halves, with
the first being a driver package provided by the hardware vendor and the
second being hardware-agnotic-ish, and IBM went "as long as we're the
sole source of the BIOS, that's our propietary lynch pin"... until
Compaq clean-room cloned it and won in court. (Franklin, makers of the
speak-and-spell, did NOT clean room clone the Apple II roms when they
made Franklin Ace, and lost to Apple in court in 1983. They thought they
didn't NEED to because at the time the law said only source code was
copyrightable and binaries were "just a number", and they won in court
on that argument, but the appeals court pointed to the ASCII signatures
of the design team at the end of the ROM which Franklin had copied
verbatim and said they didn't know where the line was Franklin was over
it, and this changed the law to extend copyright to cover binaries,
which is why everybody went proprietary all at once with shrinkwrap
software everywhere and IBM's "object code only" initiative and AT&T
agreeing to divest a lot of stuff in part because it thought
commercializing unix could make up for it, and of course Stallman's GNU
project announcement being another consequence. (Well, more the
cancellation of the Jupiter project really, but Apple vs Franklin was
probably why anybody cared. Ok, Ed Zander unbundling the compiler in
1987 during the sunos->solaris transition flooding users into gcc...
AHEM. Tangent.)
Anyway, Microsoft sold DOS to IBM and Paul Allen made sad noises holding
Xenix, and immediately set about working on a DOS 2.0 cramming as much
unix as possible into DOS so that eventually he could ship Xenix as the
next release of DOS and have all the users just migrate over seamlessly.
And THAT'S where DOS File Descriptors came from. (And it's also why DOS
used \ instead of / as the directory separator, because 'dir /s' was how
cp/m indicated command line options, and as a migration path Paul made
it accept - or / interchangeably, and also allowed the directory
syscalls to accept / and \ interachangeably until all the users were
weaned off of saying /s instead of -s. He had a plan! (And Digital
Research NOT adding all those unix features for several years meant DOS
became a different programming environment than CP/M and gave Microsoft
the monopoly Bill wanted and IBM feared. Their first big
embrace-and-extend.)
And THEN Paul Allen came down with Hodgins Lymphoma in 1983 and nearly
killed himself getting out DOS 3.0 (basically a driver pack adding
support for hard drives and more memory) before getting diagnosed, and
one night Paul heard Bill and Steve Ballmer in the next room talking
about how to get his stock back if he died (so his wife wouldn't inherit
it), and when Steve took a leave of absence for cancer treatment he
never came back because fuck those guys. Which left his drive towards
xenix kinda orphaned, and meant that DOS 4.0, 5.0, and 6.0 were... kinda
irrelevant?
Meanwhile, AT&T was commercializing unix which meant replacing Bell
Labs' "Unix Version 7" with AT&T corporate's "System V"... except
everybody was using BSD because Ken Thompson took 1975 off to teach at
his alma mater (the University of California at Berkeley) and used the
OS he'd written as his teaching material (and since he worked with the
patent and licensing department they gave him a very simple license to
this academic thing the 1957 antitrust consent decree didn't let them
commercialize anyway until the 1984 breakup)... And ken taught a
generation of students who went on to maintain the "Berkeley Software
Distribution". And then in 1979 at the 10 year anniversary of the
internet DARPA wanted to replace Bolt Beraneck and Newman's original IMP
routers (based on a computer designed for use in submarines, the main
advantage of which is it was locked in a pressurized steel safe. DARPA
was founded in 1957 in the wake of sputnik as a way of Throwing Money At
the Problem to calm everybody who was panicking that the big wall of
radars the USA had built over canada to detect bombers taking the polar
route from russia couldn't stop russia from dropping a nuke OUT OF THE
SKY, and it used its money to buy lots of computers for universities but
there were different manufacturers running incompatible software so each
univerity wanted like 4 different computers. The arpanet was a way of
getting everybody to SHARE computers by telnetting into other people's
machines to run software you couldn't run on your local one, and the
sf-lovers mailing list got a BUNCH of people who otherwise wouldn't care
participating and darpa turned a blind eye because driving adoption of
apanet meant saved a ton on hardware acquisition. But every time you
gave a computer to a university the students took it apart to see how it
worked and broke it, and the IMP was literally locked in a safe to avoid
downtime.
The other problem with the original IMP machines is they used 8 bit
addresses for a maximum of 256 machines, and thanks to the sf-lovers
mailing list they had more places wanting to connect to the network than
they had addresses, so they wanted to switch to 32 bit addresses (which
was one address for every person on the planet back then), and DARPA had
BB&N write a new network stack and wanted to use DEC's new "Virtual
Address Extension" (VAX) upgrade to the PDP-11 and just stick a network
card into an existing cheap (for the time) machine. They went to the
University of California at Berkeley to get a 32-bit port of Unix for
the VAX, and Bill Joy barfed all over BB&N's network driver/stack (which
ate 100% of the CPU routing packets) and wrote one that used like 2%,
and embarassed the defense contractors but got BSD Unix deployed as
_the_ operating system on all the vaxes connected to the arpanet after
the switch to IPv4. (Sigh. Go read Where Wizards Stay Up Late, and
https://www.salon.com/2000/05/16/chapter_2_part_one/ and A Quarter
Century of Unix, and...)
Which MEANT AT&T spent its first few years fighting to get all the
exsiting unix licensees to switch from a BSD base to a System V base,
which they were ruthless about (see the book "Under the Radar", which is
mostly about the history of Red Hat but goes into this a lot), which is
why the sunos->solaris transition happened that made gcc relevant in 1987.
Anyway, as part of AT&T trying to make System V outdo BSD, they sucked
in a lot of code from forks into the earlier System III with the
copyright notices removed (which got them in trouble in the BSDI lawsuit
circa 1990), and one of the things they sucked code in from was Xenix,
and when Bill Joy found out about that he flipped out and declared unix
anathema and unloaded Xenix on the porting house (SCO) that had been
subcontracted to maintain it, and hired Dave Cutler (chief unix hater at
Digital Equipment Corporation) to do a new OS (windows NT) to kill unix
with, and...
Of course, this is tangental to the manpage discussion;
I believe I have out-tangented you.
this is caused
by other forces also, such as the set of concerns usually lumped under
"operating system" in other communities being broken up between
occasionally-adverse groups.
...an easier problem to have when said groups share the common notion
that microkernels are stupid.
Microkernels made sense back before cpu caches. Manipulating page tables
flushed cache entries so "handing over" pages was as expensive as
copying, you HAD to have shared memory between contexts or you took a
big performance hit.
Bog standard idea undermined by advances in technology which the ivory
tower academics refused to give up for decades. (The difference between
theory and practice is that in practice there is no difference and in
theory there is.)
I love how in the 90's and 2000s the microkernel guys kept pointing to
the Amiga as an example of how you could get great interactive
performance out of a microkernel architecture, when Commodore convinced
motorola to do a special nommu version of the 68030 because amigaos
_couldn't_ use the mmu. (It was a nommu microkernel system that handled
"message passing" by just passing pointers around in a single address
space and reaching out and accessing the memory directly. THAT is how it
got good performance out of a microkernel.)
http://oldwww.nvg.ntnu.no/amiga/amigafaq/AmigaFAQ_2.html
IMO, it is clear that developers, especially in the Unix sphere, are
unwilling to write documentation. Washing machines from '80s tend to
have more comprehensive documentation than the documentation in Unix
and Unix-like systems.
I think documentation quality (or existence) has rotted in both the
software and appliance/consumer electronics domains.
Kids these days...
Rob