From 8e898ced0a4570c4522ef475ade2cf29e6bdb3b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?= <7226587+thufschmitt@users.noreply.github.com> Date: Tue, 11 Oct 2022 10:05:54 +0200 Subject: [PATCH] Create a roadmap for Nix First very rough draft of a roadmap as discussed in last week's Nix team meeting. This is merely the output of a 45mins brainstorming session so far, so absolutely nothing is settled --- roadmap.md | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 roadmap.md diff --git a/roadmap.md b/roadmap.md new file mode 100644 index 000000000..8272e28ce --- /dev/null +++ b/roadmap.md @@ -0,0 +1,87 @@ +# Nix is everywhere and invisible + +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 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 + - 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 + - ... + + + + + + + +"Likewise, we want Nix to be everywhere. We want a world where finding a flake.nix at the root of a software project is not a pleasant surprise but something expected and common. And we want the people who design tomorrow’s software distribution mechanism to at least know and recognize the Nix model, and take that into account."