Table of Contents
Fetching ...

Reproducibility of Build Environments through Space and Time

Julien Malka, Stefano Zacchiroli, Théo Zimmermann

TL;DR

This paper tackles the reproducibility of software build environments in space and time by evaluating functional package managers, notably Nix, using historical Hydra data. It demonstrates that, under stable Nix expressions, build environments are highly reproducible across machines and over years, with 99.99% identical output paths and the ability to rebuild 99.94% of past package versions from a six-year-old revision. The findings support the claim that functional package management can mitigate dependency-hell and facilitate collaboration, maintenance, and software preservation. The study also identifies practical limits due to sandbox leakage and flaky tests, outlining concrete directions for broader evaluation and non-cache rebuilds to strengthen resilience and long-term reproducibility.

Abstract

Modern software engineering builds up on the composability of software components, that rely on more and more direct and transitive dependencies to build their functionalities. This principle of reusability however makes it harder to reproduce projects' build environments, even though reproducibility of build environments is essential for collaboration, maintenance and component lifetime. In this work, we argue that functional package managers provide the tooling to make build environments reproducible in space and time, and we produce a preliminary evaluation to justify this claim. Using historical data, we show that we are able to reproduce build environments of about 7 million Nix packages, and to rebuild 99.94% of the 14 thousand packages from a 6-year-old Nixpkgs revision.

Reproducibility of Build Environments through Space and Time

TL;DR

This paper tackles the reproducibility of software build environments in space and time by evaluating functional package managers, notably Nix, using historical Hydra data. It demonstrates that, under stable Nix expressions, build environments are highly reproducible across machines and over years, with 99.99% identical output paths and the ability to rebuild 99.94% of past package versions from a six-year-old revision. The findings support the claim that functional package management can mitigate dependency-hell and facilitate collaboration, maintenance, and software preservation. The study also identifies practical limits due to sandbox leakage and flaky tests, outlining concrete directions for broader evaluation and non-cache rebuilds to strengthen resilience and long-term reproducibility.

Abstract

Modern software engineering builds up on the composability of software components, that rely on more and more direct and transitive dependencies to build their functionalities. This principle of reusability however makes it harder to reproduce projects' build environments, even though reproducibility of build environments is essential for collaboration, maintenance and component lifetime. In this work, we argue that functional package managers provide the tooling to make build environments reproducible in space and time, and we produce a preliminary evaluation to justify this claim. Using historical data, we show that we are able to reproduce build environments of about 7 million Nix packages, and to rebuild 99.94% of the 14 thousand packages from a 6-year-old Nixpkgs revision.
Paper Structure (18 sections, 2 figures)