(Illustration by Gaich Muramatsu)
> 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) www.lpf.org ------------------------------------------------------------------------------- Brian Bartholomew - bb_at_wv.com - www.wv.com - Working Version, Cambridge, MAReceived on 1997-10-10 15:03:42