
The history of documented Unix facilities - matt_d
https://dspinellis.github.io/unix-history-man/
======
ChuckMcM
Fun stuff. My one contribution was the libc function getsubopt() which
originated in what was the first release of Solaris (code named Zeus) and
picked up in the Net-2 release.

I was the engineer responsible for harmonizing the 'mount' command between
SunOS (aka BSD 4.2+) and SysV R3.2. The way that worked _usually_ is that the
command would get options from both sides of the tree and we would argue about
the ones that overlapped, but in the case of mount the AT&T System engineer
was totally appalled that mount had a -all option to mount everything in the
/etc/fstab file. AT&T was pushing a new script named 'mountall' what would
mount all file systems. They also hated multi-letter options like '-o
rw,noatime'. Their argument was that there wasn't a subroutine in the C
library to parse multi-letter options like we had for the mount command.

So I invented getsubopt which, with Bill Shannon's sign off, we made a
'standard part of SunOS'. And then we added it as something to be included in
the consolidated lib C.

Going through that exercise of trying to harmonize System V and SunOS into the
one true UNIX was the weirdest thing. AT&T had 'system engineers' who never
wrote code, and Sun just had engineers who actually wrote code. Some of the
technical disagreements were settled at the 'VP' level (Eric Schmidt at the
time) where Eric and his AT&T counter part would 'trade' concessions that had
escalated to that level. Like I said, very weird.

------
sigil
I was hoping this would answer a recent question about the origin of the
`unlink(1)` command. [1] The table says it appeared in FreeBSD 3.5.0, but in
digging I found that FreeBSD introduced it after NetBSD, who introduced it
"for XCU5's sake, and due to popular demand." [2] So `unlink(1)` must have
existed in some even earlier Unix variant.

So the history of these things remains murky. Part of that is it's difficult
to find old ("superseded") versions of the XCU / XOpen specs, let alone trace
the new things each revision introduced to the sometimes-now-extinct Unix
variants they first appeared in.

I do love the `unix-history-repo` and applaud the ongoing work there!

[1]
[https://twitter.com/alangrow/status/966081208487575552](https://twitter.com/alangrow/status/966081208487575552)

[2]
[https://github.com/NetBSD/src/commit/54af00c6ee446afe395f319...](https://github.com/NetBSD/src/commit/54af00c6ee446afe395f319015194e6946276523)

~~~
sverige
According to the HISTORY section at the bottom of the OpenBSD man page for
unlink() , it first appeared in Version 1 AT&T UNIX. [1]

FWIW, all OpenBSD man pages have a history section at the bottom that notes
when the command first appeared.

[1] [https://man.openbsd.org/unlink](https://man.openbsd.org/unlink)

~~~
jwilk
OpenBSD doesn't have the "unlink" command-line tool.

The manpage you pointed to is about the "unlink" system call.

~~~
sverige
Sorry, I missed that.

------
arca_vorago
For those interested, here is a relevant link:
[http://bhami.com/rosetta.html](http://bhami.com/rosetta.html)

Personally, I tend to focus on GNU coreutils on the gnu/linux
side.([https://www.gnu.org/software/coreutils/manual/coreutils.html](https://www.gnu.org/software/coreutils/manual/coreutils.html))

I can't find my list of non-gnu linux kernel utilities at the moment. I think
it's in the older kernel documentation.

------
korethr
This looks like this only traces the original Unix and the BSD lines. I assume
that's because that's what the sources are available for. It would be cool to
see what came from the SysV side of things over time, but, one would have to
get the sources for a SysV-derived Unix. I'd think Illumos would count, having
come from Solaris. But that doesn't help much either, does it, since Illumos
is a modern Unix, and not a historic version?

------
oneweekwonder
Ah looks interesting. Contains my two favorite things: unix history, and
slickgrid.

------
rambojazz
How do I read this?

