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.
翻译:现代软件工程建立在软件组件的可组合性之上,这些组件依赖越来越多的直接和传递依赖关系来构建其功能。然而,这种可复用原则使得重现项目的构建环境变得更加困难,尽管构建环境的重现性对于协作、维护和组件生命周期至关重要。在本文中,我们认为函数式包管理器提供了使构建环境在时空上可重现的工具,并进行了初步评估以验证这一主张。利用历史数据,我们展示了能够重现约700万个Nix包的构建环境,并从已有6年历史的Nixpkgs版本中成功重建了14000个包中的99.94%。