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

Reply via email to