diff --git a/roadmap.md b/roadmap.md new file mode 100644 index 00000000000..d15bfdf42d1 --- /dev/null +++ b/roadmap.md @@ -0,0 +1,85 @@ +# Nix is everywhere + +Nix is the universal build and [configuration management] tool. + +[configuration management]: https://www.sebokwiki.org/wiki/Configuration_Management + +Software developers use Nix as a matter of course every day, mostly without even noticing. +Nix runs trivially, anywhere. + +For individuals to large organizations, Nix underpins the entire software supply chain: +- Developer tooling +- Build automation +- Binary distribution + +To this end, the Nix team will work towards the following goals. + +## Make Nix easy to adopt + + - Well-defined target user base + - anyone who wants to manage the complexity of - and build - software + - transform bits in a declarative and reproducible way + - Well-defined core user stories + - Ad hoc environments + - One-liner setup (nix-shell) + - Declarative environments + - One-liner setup ("templates") + - Easy modification/extension + - Easy and transparent usage ("direnv"/"lorri") + - Secret management as first-class citizen + - Configurations as first-class citizens + - Configuration/Modules/Nickel/etc. + - Language bindings + - Supply chain trust solution + - Content-addressed derivation + - Build result signing, key distribution + - SBOM/SLSA + - Unprivileged installation and use + + - Portable store? + - restricted-root + - ACLs + - rewriting + - ... + - Linux, MacOS and Windows support at feature parity + +## Make Nix a tool that users can rely on + + - Reliable installer + - Effective testing + - Test coverage for all major use cases + - Memory safety validation (sanitizers, ...) + - Benchmarking infrastructure + - Test reports published and accessible + - Executable language specification + +## Make Nix a good investment for users + + - Explicit compatibility guarantees (and non-guarantees) + - Commitment to uncompromising reproducibility + - Well-defined release process + - Feature support status + - Deprecation strategy + - LTS commitments + - Close Flakes schism, remove uncertanity/ambiguity/confusion + + - Exemplary contributor and maintainer experience + - Recommended development setup + - Testing guidance + - Formalize review criteria + - Formalize design criteria (technical invariants) + - Well-defined architecture of isolated components + - Swappable store + - Formalize store protocol + - Swappable Nix language evaluator + - Swappable scheduler and remote-build system + - Integrate Hydra (modulo UI) into Nix + - Remote protocol speed and reliability improvements + - Binary cache protocol speed improvements + + - Minimal custom code base (proven off-the-shelf components where possible) + - Git file hashing + - Sandboxing, containers + - Capnproto for RPC + - Bazel RBE protocol + - ...