Hi 9fans, Since I have now released what I am calling Advanced Namespace Tools, I want to offer proper credit and citation for the primary design idea in ANTS. Let me clarify that Nemo and lsub did not directly advise or contribute, but the Plan B and Octopus papers provided foundational ideas and insights which I tried to build on in ANTS. The ANTS paper does not (yet) have proper citations, and because the debt to Nemo's work is so large I want to make sure to offer proper credit to his ideas and design work.
Two specific things should be cited - the first is the general principle of adapting Plan 9 design to a more dynamic and changing environment, where services may come and go without notice. Nemo has written on this topic very clearly, and in my paper written about ANTS, there are several short sections which paraphrase his ideas as I understand them. The final ANTS paper will have appropriate citations; since this theme of "adapting to changes in the environment" is written about in many of Nemo's papers, I'm not sure which one would be considered definitive. On the design level, the central change in ANTS - booting and not attaching to any root file descriptor - was directly inspired by section 2.2 of the "Give me back my personal mainframe" paper (http://lsub.org/ls/export/mainframe.pdf) about the transition from Plan B to Octopus. In this section, Nemo writes about recovering from file server crashes and switching the root file system as aspects of Plan B which he said did not work well for them, despite the attempts of the Bns program to support these things. It was when reading this section of the paper that a fairly famous sentence from original Plan 9 paper jumped into my mind: "it is fair to say that the Plan 9 kernel is primarily a 9P multiplexer." it struck me that the core function of the Plan 9 kernel - multiplex 9P - did not imply that any given 9P stream had to be made more important than any other, from the kernel's point of view. The user needs a root file system to build a userspace on; once the kernel is booted, the job of the kernel is to multiplex 9P to clients, and it makes the system more reliable if the kernel itself is NOT dependent on any of the 9P streams it is multiplexing in order to continue performing that function. Because Plan 9 already was built around per process namespaces, the system already has the built in capability to host processes with any number of different roots simultaneously - couldn't this principle be used to solve the same problem that Bns was trying to solve, but in a different way? Rather than trying to do extra work to protect a particular file descriptor because the whole system depended on it, why not remove the single point of failure (one primary root fs) and instead have multiple independent roots. If one of them breaks, just switch to another one! The kernel doesn't care, it just sits back happily multiplexing 9P to clients. If one fd happens to go dead, it doesn't hurt the ability of the kernel to serve all the other 9P connections that are still alive. One of the best ways to understand ANTS is as another approach to the same issues that Nemo says Plan B did not handle successfully - problems with the root filesystem. The ANTS approach is to say "if we can't protect the root filesystem, let's have multiple roots so if one breaks we have another." This means that the the ability of the kernel to do its job of multiplexing 9P to clients - and the function of the grid as a whole - is much less dependent on any external conditions. Another way to express this idea is "decoupling". The Plan 9 design of per process namespace and kernel-as-9p-muxer allows us to easily decouple the construction of the user's namespace from the ability of the kernel to control the system and provide namespace to the user on demand. To put it in imperative form: "The ability of the kernel to provide an environment to the users should not depend on the userspace file descriptors." The ANTS 9pcram kernel implements this design principle by creating the service namespace with no non-kernel dependencies. Understanding this is a way to summarize the "big picture" on ANTS: "ANTS is an attempt to bring my understanding of Nemo's designs into standard Plan 9. It take a different approach than the Octopus to dealing with the issues which Nemo described in Plan B." Also, I would like to say that Nemo and the lsub are much more skilled programmers and their projects are much more sophisticated and technically challenging than what I implemented for ANTS. ANTS tries to bring a simple subset of the "lsub concepts" to the main Plan 9 from Bell Labs distribution, to help make standard grids more reliable and easier to administer. Because my debt to Nemo's ideas for what I was trying to do with ANTS is so large, I wanted to offer this statement of credit and great thanks for his extensive work on Plan 9, and I hope the Giant ANTS are a welcome addition to the growing menagerie of Plan 9 monsters. Ben Kidwell "mycroftiv" (ants tutorials http://antfarm.9gridchan.org/tutorial) (ants VM images and links http://9gridchan.org) (ants software and documentation http://ants.9gridchan.org) (ants software also served via 9p and ftp at ants.9gridchan.org)
