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.