The meta-distro reproducible package manager
01 Jan 2023Linux distributions aren’t useful until they hit a critical mass of packaged software.
The problem
If there are n programs and m distributions, then there are O(nm) packages. This is because the easiest way to ensure a package set works together is by creating an ecosystem around them; to guarentee a property about a node in a DAG, you must guarentee the property about it’s children. We need a way to make this O(n).
Introducing: scythe
Underutilized feature: overlayfs
Let’s take a bottom-up approach composing our system. Guarentee that any package works with its isolated dependencies and environment, and it can be composed with other packages. This was the idea behind the original Nix paper. The problem with Nix is that is forces packages to conform to its ecosystem, meaning other distro’s packages cannot be readily used, requiring a great deal of manual labor. We need a way to allow composition without changing the original package, and this can be achieved with the combination of OverlayFS and kernel namespaces. I was inspired by the research package manager, distri, that treats packages as images instead of archives. I want to extend that by making cross-distro packages first class members.