Search papers, labs, and topics across Lattice.
This paper reviews the challenges in software deployment, focusing on reproducibility and dependency resolution, and examines how Nix, a purely functional package manager, addresses these issues. It analyzes build systems, package managers, configuration management, and development environments, using popular software as case studies. The paper then identifies limitations of Nix, including trust issues and challenges with granular incremental builds, while also discussing potential solutions proposed by the Nix community.
Nix solves many software deployment problems but introduces new ones, highlighting the ongoing need for research into trust and granular incremental builds.
Software deployment suffers from numerous problems pertaining, for example, to reproducibility and dependency resolution. Many of these problems have been successfully solved by the purely functional approach to package management implemented in the Nix project. However, Nix does not solve all issues, and it does introduces some novel problems of its own. Therefore, the aim of this thesis is to conduct a literature review on the current state of research on Nix and to determine the direction of future research. The first part of this paper explores the problems historically faced in different areas of software deployment, e.g., irreproducibility and dependency resolution issues. The main four categories of software deployment tools analyzed are build systems, package managers, configuration management, and development environments. Popular software from each category serve as case studies to illustrate the problems. The second part introduces Nix and explains the methods utilized to solve some of the problems introduced in the earlier part. Because Nix is the first large project to utilize the purely functional approach, it is far from a perfect solution. Thus, the third part is dedicated to analyzing the new problems that Nix introduces, as well as old problems, which Nix has been unable to solve, such as trust and granular incremental builds. Furthermore, some proposed state of the art solutions put forth by the Nix community are discussed.