"Now if we could get a solution to the home directory dotfile hell!"Andrei Warkentin
Unix environments have traditionally been multiuser and diverse multicomputer configurations, backed by expensive network-attached storage. The recent growth and proliferation of desktop- and single machine- centric GUI environments, however, has made it very difficult to share a network-mounted home directory across multiple machines. This is especially noticeable in the context of concurrent graphical logins or logins into systems with a different installed software base. The typical offenders are modern bits of software such as desktop environments (e.g., GNOME), services (dbus, PulseAudio), and applications (Firefox), which all abuse dotfiles. Frequent changes to configuration format mean the same set of configuration files cannot be easily used across even close versions of the same software. And whereas dotfiles historically contained read-once configuration, they are now misused for runtime lock files and writeable configuration databases, with no effort to guarantee correctness across concurrent accesses and differently-versioned components. Running such software concurrently, across different machines with a network mounted home directory, results in corruption, data loss, misbehavior and deadlock, as the majority of configuration is system-, machine- and installation- specific, rather than user-specific. This paper explores a simpler alternative to rewriting all existing broken software, namely, implementing separate host-specific profiles via filesystem redirection of dotfile accesses. Several approaches are discussed and the presented solution, the Host Profile File System, although Linux-centric, can be easily adapted to other similar environments such as OS X, Solaris and the BSDs.