Self-sustaining Creation

Alternate title: “Closing the Loop”

The Timeless Stack is about making reliable systems. To do this effectively, it’s important not only to take existing systems and freeze them in amber: it’s important to encourage producing new things which are reliable by design.

This is a point that’s weird to drive home, because it seems almost too obvious. Of course we want to produce new things in the system itself. But consider how many systems don’t do this (and how they shape out over time):

  • Docker tends to be a wrapper that snapshots the products of another package manager – or two! Typically we see either Debian’s apt or Alpine’s apk… plus a language package manager, such as Node’s npm or PHP’s composer, etc. The precise package managers don’t matter: they all have the same flow: they perform some network operations to get the list of packages, select some packages, and then do some operations to “install” those packages.

What does this yield? An unreproducible mess, generally speaking.

Such a build process may produce snapshottable artifacts, and this does make deployment of those artifacts easier since the artifacts are complete… but the builds aren’t reproducible; we’re not all that much better off than we were before the container system entered this story.

// TODO this page may better belong under the “Philosophy” chapter.