The Odin system: an object manager for extensible software environments
The Odin system: an object manager for extensible software environments
Conception, evolution, and application of functional programming languages
ACM Computing Surveys (CSUR)
Space efficient conservative garbage collection
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Caching function calls using precise dependencies
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Selected papers from the ICSE SCM-4 and SCM-5 Workshops, on Software Configuration Management
Post-design Domain-Specific Language Embedding: A Case Study in the Software Engineering Domain
HICSS '02 Proceedings of the 35th Annual Hawaii International Conference on System Sciences (HICSS'02)-Volume 9 - Volume 9
Imposing a Memory Management Discipline on Software Deployment
Proceedings of the 26th International Conference on Software Engineering
Advanced Programming in the UNIX(R) Environment (2nd Edition)
Advanced Programming in the UNIX(R) Environment (2nd Edition)
Why Order Matters: Turing Equivalence in Automated Systems Administration
LISA '02 Proceedings of the 16th USENIX conference on System administration
An Analysis of RPM Validation Drift
LISA '02 Proceedings of the 16th USENIX conference on System administration
ISconf: Theory, Practice, and Beyond
LISA '03 Proceedings of the 17th USENIX conference on System administration
A principled approach to operating system construction in Haskell
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Secure sharing between untrusted users in a transparent source/binary deployment model
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Making system configuration more declarative
HOTOS'05 Proceedings of the 10th conference on Hot Topics in Operating Systems - Volume 10
TCON'95 Proceedings of the USENIX 1995 Technical Conference Proceedings
Experience report: using functional programming to manage a linux distribution
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Package upgrades in FOSS distributions: details and challenges
Proceedings of the 1st International Workshop on Hot Topics in Software Upgrades
Electronic Notes in Theoretical Computer Science (ENTCS)
Unikernels: library operating systems for the cloud
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
Simulating upgrades of complex systems: The case of Free and Open Source Software
Information and Software Technology
Hi-index | 0.00 |
Existing package and system configuration management tools suffer from an imperative model, where system administration actions such as package upgrades or changes to system configuration files are stateful: they destructively update the state of the system. This leads to many problems, such as the inability to roll back changes easily, to deploy multiple versions of a package side-by-side, to reproduce a configuration deterministically on another machine, or to reliably upgrade a system. In this paper we show that we can overcome these problems by moving to a purely functional system configuration model. This means that all static parts of a system (such as software packages, configuration files and system startup scripts) are built by pure functions and are immutable, stored in a way analogous to a heap in a purely functional language. We have implemented this model in NixOS, a non-trivial Linux distribution that uses the Nix package manager to build the entire system configuration from a modular, purely functional specification.