
The file system of an integrated local network – Apollo File System (1985) - flummox
https://dl.acm.org/doi/abs/10.1145/320599.320696
======
kiwidrew
What I find most interesting about Apollo and DOMAIN/OS is that by 1983 (at
the latest, see the Getting Started document [1]) the designers had managed to
peer into the future and come up with network filename syntax that matches
what would eventually become known as the scheme-relative URI:

    
    
      //node/directory/subdir/file
    

This is also (as far as I can tell) the rationale for a rather interesting
caveat in the POSIX specifications [2] section 4.13 (Pathname Resolution):

 _> If a pathname begins with two successive <slash> characters, the first
component following the leading <slash> characters may be interpreted in an
implementation-defined manner, although more than two leading <slash>
characters shall be treated as a single <slash> character._

[1]
[http://www.bitsavers.org/pdf/apollo/002348-01_Getting_Starte...](http://www.bitsavers.org/pdf/apollo/002348-01_Getting_Started_With_Your_Domain_System_Oct83.pdf)

[2]
[https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1...](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html)

~~~
chadcmulligan
//node/directory was pretty common in network file systems, I remember using
that on SunOS in the early 80's. I think it was called 'remote file system' on
Sunos at the time

~~~
kiwidrew
Ah, interesting, I wasn't aware that this syntax was also in use with SunOS...

~~~
chadcmulligan
I got curious - SunOS 2 introduced NFS, that was in May 1985, and I was
incorrect - it used hostname:/path/... thought I remembered a colon in there
somewhere

SunOS history:
[https://en.wikipedia.org/wiki/SunOS](https://en.wikipedia.org/wiki/SunOS)

and NFS originally started in 1984
[https://en.wikipedia.org/wiki/Network_File_System](https://en.wikipedia.org/wiki/Network_File_System)

examples
[https://www.systutorials.com/docs/linux/man/5-nfs/](https://www.systutorials.com/docs/linux/man/5-nfs/)

------
djthorpe
I used to use Apollo workstations in the late 1980's (probably around 1988). I
used to have a DN3000 on my desk with a massive CRT monitor.

They were pretty heavily used in my company for CAE work, designing printed
circuit boards, schematics and later VLSI design. We moved from software
called "Racal Redac Visula" to Mentor Graphics at some point.

They were indeed well ahead of their time. I could open a "pad" in the window
manager from any machine in the network. The pad was like a infinite text
shell, but it was quite elaborate. You could also open up a UNIX shell within
the same environment. At the time, I don't think there were many other
graphics-rich workstations which were as comprehensive and focussed on
computer-aided engineering.

Apollo was acquired by HP after I stopped using them, and ultimately Mentor
Graphics software was likely ported to other systems like commodity PC's and
Sun Workstations.

~~~
imglorp
The Unix flavor wars were in progress, so as a response they had another
interesting innovation, which was a complete set of executables for each
different flavor, including I think Domain, BSD, and SysV variants.

Each flavor had some bin directories with a text oriented symlink like
/usr/$OS_FLAVOR/bin (I forget the path) but the interesting thing is that
symbolic links were always resolved per process, every access, using the
environment.

Oh and they also were waging the windowing wars at the time, so they tried to
support all of X10 and maybe X11, as well as that Pad arrangement.

~~~
dn3500
These were officially called "variant" links. Within Apollo R&D they were
known as "deviant" links. They got the idea from Pyramid.

Apollo's downfall was that they clung to their proprietary OS long after
everyone else had switched to Unix. They kept putting more lipstick
(compatibility layers) on the pig (Domain/OS) but it wasn't enough. To be
fair, at the time Apollo was founded commercial Unix wasn't possible because
of licensing issues. By the time Sun was founded just a couple years later
Unix was the way to go.

------
tankenmate
I remember using DOMAIN/OS computers at university in 1990, by then it had
been acquired by HP. The biggest difference from Unix I first ran into was
that you couldn't always kill processes with kill -9, sometimes you had to
"Blast" the process if it was waiting / hung on a network lock.

~~~
LargoLasskhyfv
Seems similar to having zombies when doing that under Linux and the BSDs.

~~~
tankenmate
A zombie process is a process that has exit()ed but hasn't been reaped
(wait(), et al) by its parent yet; a different mechanic that has to do with
keeping the child's exit status and process statistics due to wait() being
asynchronous, not to do with network locks.

~~~
LargoLasskhyfv
From an endusers point of view(who couldn't care less about the internals),
_killdashnining_ anything which had open files over NFS resulted in _Z_ in ps,
pstree, top, htop etc. in my experience.

------
jacobush
Windows file sharing (and by extension Samba) came from Apollo. It's little
known:

[https://www.oocities.org/zuhair_ali/linux/samba.html](https://www.oocities.org/zuhair_ali/linux/samba.html)

~~~
EvanAnderson
A nit to pick - MSRPC came from Apollo RPC, but SMB came from IBM:
[http://ubiqx.org/cifs/SMB.html](http://ubiqx.org/cifs/SMB.html)

~~~
jacobush
Another little tidbit which is not much known:

 _Furthermore, I didn 't find out that Samba inter-operated at all with any
version of DOS or Windows until nearly two years after I did that first
release. The earliest versions of Samba were aimed at being compatible with
clients for the Digital Equipment Corporation "Pathworks" product suite, which
was an early implementation of the SMB protocol that was quite popular at the
time, and that ran on Ultrix and VMS systems. My initial motivation was to
implement the same protocol on SunOS, so that I could use my desktop system to
access the departmental Unix server._ \-- Andrew Tridgell

(Weird - my hospital also has those IBM Type-1 token ring jacks.)

------
jz391
Domain/OS on Apollo DN3500 software emulator (a little fiddly to set up):
[http://mess.redump.net/howto/apollo](http://mess.redump.net/howto/apollo)

