Manifesto

Our Philosophy

We believe in…

We don’t believe in moving fast and breaking things…

Sustainable And Correct Software

[Describe some of the ideas from our brainstorming sessions]

  • Simple systems are more elegant AND more sustainable
  • Container technology made a giant leap forward for reproducibility, but modern container orchestration systems add lots of complexity that is not needed for many “typical” use cases.
  • Continuous integration and release processeas shouldn’t require an entire team of engineers.

Why We Love Nix

[Get some of the good material from Joe’s talk]

  • Nix (and Nix flakes!) significantly improve build and deployment reproducibility via features of the ecosystem:

    • Build and install “recipes” use pure functions that cannot do I/O.
    • The contents of all inputs to these recipes are hashed and input hashes are compared on every build. If any input changes, it will be detected, and the build will result in a different component.
    • The execution of the receipts (i.e., “realizing a derivation”) happens in a sandbox to prevent builds from “working” by chance due to idiosyncrasies of the system where the build is running.
  • Nix improves composability of artifacts through some key features:

    • All components run as native processes – there is no rooted file system, separate name spaces, etc. This makes it easier for Nix components to even interact with other components not packaged with Nix.
    • Flakes, in particular, make it easy to compose Nix “recipes” together – simply specify a flake as the input to another flake.