Coda File System

Re: is it implemented?

From: Brian Bartholomew <>
Date: Fri, 10 Oct 1997 02:16:48 -0400
> I don't know what a /depot scheme is.

There are as many depot schemes as there are sysadmins, however, the
goals of depot are as follows.  Coda has the opportunity to make huge
improvements in the implementation of goal four:

	1. Don't mix packages with the OS or each other.

	   The old Unix style was to collect everything of one type
	   into one place - all include files go into /usr/include,
	   all libraries go into /usr/lib, etc.  This is a totally
	   mindblowing maintenance disaster.  The new style is to
	   collect everything that versions together in one place.
	   You can have 12 versions of emacs installed at once in
	   /depot/emacs-19.{1,2,3,4,5,6,7,8,9,10,11,12}/bin/emacs and
	   none of them will interfere with each other.  Actually
	   emacs versions collide on ports, env vars, and .emacs
	   files, but these are versioning limitations of emacs, not
	   of the depot scheme.

	2. All tools are available at once.

	   The most appropriate version of all tools is integrated and
	   available by name to users, without extra steps to enable
	   packages.  I type "emacs" and the path chooses which emacs
	   I get.  Often SAs implement this with a symlink tree from
	   /usr/local/bin.  This eliminates automounter storms when
	   the shell's path is hashed and reduces visibility of
	   nonresponding nfs servers.

	3. Architecture differences are hidden.

	   /depot/emacs-19.1/bin/emacs is the proper binary on
	   every system I access the pathname from.

	4. Presentation path is decoupled from storage path and server.

	   As a user I care about the directory /depot/emacs-19.1/bin.
	   However, that directory may be nfs served from
	   alpha:/exp/depot1/emacs-19.1/bin.sun4 on one machine and
	   beta:/exp/depot2/emacs-19.1/bin.x86 on another.  In the
	   mature form this is implemented using the amd automouter to
	   map nfs server directories to depot directories, and a
	   /usr/local/bin symlink tree with links to each executable
	   in each /depot/*/bin directory.  However, this
	   implementation has lots of problems, among them pwd(1)
	   returning unexpected results and 'ls /depot' only
	   displaying the packages currently in use.  Coda could
	   replace all this crap with a mapping implemented
	   transparently within Coda.  Each directory would be mapped
	   to multiple servers so users don't see failures unless all
	   servers are down.  The mapping must be changable at run
	   time without disrupting service for processes other than
	   the ones using the affected paths.  It must be possible to
	   force a mapping change, killing processes if necessary.

Another member of the League for Programming Freedom (LPF)
Brian Bartholomew - - - Working Version, Cambridge, MA
Received on 1997-10-10 15:03:42