Plan 9

Required reading: Plan 9 from Bell Labs

Big Ideas

everything is a file (more everything than unix - networks, graphics)

one file protocol for accessing remote files

every process gets its own private malleable name space

Other Contributions

dump file system

UTF-8

new programming language

generalized fork

clean compilers

cleaner shell

terminals vs cpu servers

Pros and Cons of Plan 9 Big Ideas

everything is a file + can share files => can share everything

per-process name spaces help move toward "each process thinks it owns the machine" ideal.

per-process name spaces mean that names are now ambiguous (/bin/cat might mean different things for different programs or on different machines)

name spaces allow arbitrary customization

name spaces allow establishing simple conventions - binaries always in /bin - because people can adapt their environment to the conventions instead of vice versa

in plan 9, always know where the resource should be (/net, /dev, /proc, etc), but it might not be there. convention ties everything together.

easy for new users to violate conventions accidentally, with sometimes bizarre results

kind of file system belongs on /net very different from /proc - no type system to check this.

convention-based system: conventions very powerful but only when followed

untyped system: tension between generality (everything is a file + can share files => can share everything) and specificity (not all files are equal: /net vs /proc vs disk files vs pipe files etc).

Benefits of Plan 9 in General

useful testbed for experimentation on part of authors; small ideas have been picked up in other systems - UTF8 everywhere, OldFiles on athena, .snapshot on NetApp, rfork in FreeBSD, clone in Linux, SunRay terminals

other ideas harder to adopt: per-process name spaces don't interact well with setuid programs, for example; unix assumes single name space at many levels

Why are we using Athena instead of Plan 9?

Plan 9 tried to redo everything - too big a step for many people.

Some ideas come over little by little.