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

 

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

 

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.