Hacker News new | past | comments | ask | show | jobs | submit login
The file system of an integrated local network – Apollo File System (1985) (acm.org)
32 points by flummox 28 days ago | hide | past | favorite | 17 comments



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

[2] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1...


This is not a coincidence, nor is it an uncanny ability to see into the future. Tim Berners-Lee, who invented the URI/URL naming scheme, worked at CERN, which mostly used Apollos at the time. He modeled URLs after the Apollo naming scheme. "So I just copied Apollo," according to his FAQ.

https://www.w3.org/People/Berners-Lee/FAQ.html


//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


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


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

and NFS originally started in 1984 https://en.wikipedia.org/wiki/Network_File_System

examples https://www.systutorials.com/docs/linux/man/5-nfs/


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.


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.


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.


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.


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


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.


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.


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

https://www.oocities.org/zuhair_ali/linux/samba.html


A nit to pick - MSRPC came from Apollo RPC, but SMB came from IBM: http://ubiqx.org/cifs/SMB.html


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


That's right. The RPC transport names in Windows are still prefixed with "nca", a reference to the Network Computing Architecture from Apollo.

https://docs.microsoft.com/en-us/windows/win32/rpc/choosing-...


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




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: