On the topic of revision control. A promising thing I've been experimenting with is thinking and building across the three layers we use to compose systems: version control, package managers, build systems.

Starting with the public monorepo which basically includes all of Linux (Nixpkgs), I overlay a monorepo of my own packages. Then I keep my packages very fine grained, so I can blur the distinction between a package manager (like Apt) and a builder (like Make). You end up with something like Make, but everything in your revisions can depend, in a compositional way, on older revisions. This helps decouple changes.

If you think about it, both your package manager and your builder can manage dependencies and build projects, but only the package manager can deal with multiple revisions, and only the builder does fine grained dependencies. This is just an accident of history.

--
Anthony Carrico

Reply via email to