The objectroot filesystem hierarchy


In the objectroot information model, computing, at its highest level of abstraction, is a ménage à trois between hosts, organizations and users.

Hosts are entities that provide computing services. A host consists of an operating system kernel and its associated service configuration. There can be any number of hosts on a single physical computer.

Organizations are software publishers. An organization is represented on the local computer by a collection of its published software.

Users initiate computing tasks on hosts using software provided by organizations. A user object is often associated to a human individual, but it may also be entirely virtual in nature.

Each of the above three types of objects has its own container directory in the root of the filesystem name space. A central goal in objectroot is to make these object types as decoupled from each other as possible (but not more decoupled), and allow the interplay between them to happen with maximum flexibility.

root (/)

/hosts — Operating system instances.  [ More ... ]
/org   — Application and system software.  [ More ... ]
/users — Users' home directories.  [ More ... ]

/boot  — Second-stage bootloader. Optional.
/mnt   — Temporarily mounted filesystems. Optional.

Symbolic links for backward compatibility:

/bin   /hosts/self/bin
/dev   /hosts/self/dev
/tmp   /hosts/self/tmp

To explore the branches, click the “More ...” link at the end of the description for each directory.

In objectroot, the root directory is universal and, unlike in the classic Unix hier(7) layout, no longer the property of just a single operating system instance. The traditional Unix filesystem root has, in effect, been demoted two directory levels down, to /hosts/self, with the cleaned-up “super root” only containing objects that are shareable between all host instances.

Arrangements for backward compatibility

This reorganization brings the retirement of a number of Unix “totems” from the root. For example, the directories /etc, /usr and /var are gone, while most of the remaining directories exist only as symbolic links pointing to their new locations.

/bin, /dev and /tmp

The /bin directory has been moved. A symbolic link pointing to its new location allows legacy shell scripts with a shebang line of the form #!/bin/cmd to continue to work.

The /dev directory has been moved. A symbolic link pointing to its new location allows references to idiomatic names such as /dev/null to continue to work.

New, canonical references to devices are of the form:
... or, when referring to a device on another computer:

The /tmp directory has been moved. A symbolic link pointing to its new location allows legacy references to the directory to continue to work, for now.

From here on, this document uses the following typographical conventions:

/ when appended to a pathname, indicates that the pathname refers to a directory
italic is used for placeholder values to substitute a pathname component
light is used for example values to illustrate a pathname component
highlight is used to highlight a particularly noteworthy pathname component