[TUHS] The origin of /home
clemc at ccc.com
Fri Sep 28 08:04:49 AEST 2018
I wish I could remember exactly everything happened, but I cannot say I
do. Dan Cross, Don and Noel have all said things that line up with what
I remember. I’m actually thinking the /home came out of a set of
discussions that occurred before what would eventually be called UNIX
As, Noel says, I do remember using the term ‘home directory’ as a student,
so it is likely that was a term being used either by the old PDP-10 or IBM
shops; but like Noel, I cannot pin the term down either.
Don noted that the /home does not come to the BSD strain until 1986, which
also makes sense; because one of the goals of 4.3BSD was to try to make BSD
a little less divergent from the other UNIX paths, and one of the things
Keith did was to start to made an effort to try use some of the same
conventions the industry (Sun and AT&T in particular) were using.
Dan Cross made the most important note and that is that in the early days
the size a disk was quite small. UNIX Sixth and Seventh edition often ran
on systems that 2 or 3 RK05 drives of 2.5M each [
https://en.wikipedia.org/wiki/RK05] and as Dan point out, there were limits
to the what got put in the what file system. Simply the guiding principle
at that time was that you stored in the root filesystem; just enough to the
boot the system, pushed everything else to /usr and then used UNIX
mount/name space splicing/path mechanisms to make a uniform set of paths.
BTW: A thing to remember is that symbolic links are not a wide spread when
all of this was going on in the early 1980s, so they really did not have a
lot to do with the /home idea. In the case of symbolic links, Dennis had
created them as part of V8, but 4.1BSD and System III (PWB 3.0) did not
have the idea yet. BSD 4.2 would later get them as part of FFS, but I
don’t remember if 4.1c did (the kernel source was not in Warren’s browsable
archive so I could not check). Dennis had showed them to me on a visit, I
thought they were cool and useful, and put them in Masscomp’s RTU (which
was a System III/4.1 mash up) and then created CDL’s shortly thereafter
which we used for what later Pyramid called Universes (we called it modes
originally but started calling it universes also because it sounded
cooler). Sun picked up symlinks when they went to the 4.2 kernel and BSD
The other missing item was quotas. The universities in particular needed
quotas, which is one of the reasons why Joy added it to 4.2, as it was a
requested feature by the DARPA community. Before 4.2, people used the
partition size within the disk as a way to have some sort of quotas.
So what happened?
The factiod no one has brought up so far is what would become the
/usr/group standards committee (later Unix International (UI) and before
that was the work Heinz Lycklama and Peter Weiner were doing at Interactive
Systems Corp (ISC). Heinz wanted an industry wide ABI and was pretty vocal
about it. He felt the ISVs would never take UNIX seriously if there were
not ‘one true >>binary<< system’ that they compiled too. The /usr/group
API work got started from that and was the compromise, a programming
interface, not an binary one. But during the discussions that led up to
the standards committee was a series of meetings originally at USENIX ATC,
where we began to talk about the naming conventions. They were trying to
agree what needs to be in /bin, /usr/bin, /lib, /usr/lib etc… and to make
them more 'readonly-ish' primarily so that programs that went amok, did the
least amount of damage. This was also where the idea of /usr/opt and
/var were born. /usr/local was a UCB-ism, but people used it for stuff the
built themselves. Most installed systems /usr1 /usr2 … where the actual
user files were stored. The commercial folks wanted it more like other
systems were there were some sorts of fences around things.
But …it was basically agreed by the commercial side, that if there ever
were going to be any hope for the ISVs to be able to ship a binary, each
ISV needed her/his own spot. The idea for them was
/usr/opt/hp, /usr/opt/intel, /usr/opt/msft and then under that the usual
bin, etc, include, lib, … Equally /var was deal with things like logs
which were being to show up (the printer and shell accounting were first),
but that way ISVs and random programs did not step on each other. I
think HP might have actuallybeen the first of the vendors to start to ship
using that convention, but USL did pick it up by the time of System
V. Similarly, at some point the /usr1, /usr2 etc … switched to /home
/home1 /home2 etc… I do remember that there HP guys where pretty vocal
in the arguments when it all went down.
There was (should be) an email/netnews article kicking around with the name
something like ‘standardized UNIX file tree’ or some such. I would think
this was about 1984 or 1985 time frame. This email/article was part of
the model that Keith used for 4.3BSD later on; but it is also where my
memory gets hazy and I lost those notebooks in the flood.
I cannot swear by it, but I do seem to think I remember that /home was one
of the directories that came out of that discussion. The timing is
certainly right, as is the reasoning.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the TUHS