Managing State In APurely Functional Deployment Model

Stc
Date: 2008-02-28

Time: 11:45

Room: BBL room 471

Speaker: Wouter den Breejen

Title: Managing state in a purely functional deployment model (Thesis Defense)

Abstract

Most package management systems are imperative, they perform computations that destructively change the files in locations such as /etc/ and /bin/ of a system configuration. They do not only add new, but also overwrite existing data which can break existing installations. They are inflexible and conflicts often arise when installing multiple versions or variants of a software components. I will first introduce the purely functional package management system called Nix developed by Eelco Dolstra at the University of Utrecht. Nix already addresses many of the problems that plague existing deployment systems. I will then describe an extension that shows how Nix can handle state that components maintain in line with the purely functional model. This result is that Nix becomes more dependable, we get the ability to create multiple 'state instances' (branching) and we can replicate entire services. Our purely functional model does not destructively update state when a component is executed but creates a new revision using a versioning file system. This gives traceability and allows users to reverse the effects on state made by a specific execution. I also propose a database like model to handle concurrency between executions that use shared state.