Description
We believe it's about time to move from the old, experimental API (legacy
) to the new one, sketched out in #468 and (partially) implemented in the v1/
directory in the main branch .
The new API is based on drv-parts and does not require flake-enabled nix, but ships examples based on flake parts for those of us who like flakes.
This issue aims to provide an overview of the work we still need to do before deprecating the existing API and moving v1
to the top level of this repo. We've discussed this list in the last weekly call on 2023-04-18, you are welcome to provide feedback either here or in next weeks call (2024-04-25 14h Utc).
Documentation
- update readme
- update manual
- Introduction
- Guides
- Subsystems (those which we'll keep, see below)
- Concepts / API: Explain drv-parts API, lock & eval-cache, nixpkgs-overrides modules
- Contributing
- v1 -> Move to Concepts
- Community Overrides: Implement, document, initialize
Support Policies
- Define a policy for release
We want git tags per release and a changelog announcing breaking changes with categories for the general API and specific subsystems - Write a paragraph or table per subsystem module to describe features, limitations and expected stability of the subsystem.
Update Ecosystems
While there's a proof-of-concept wrapper which wraps the old API in terms of the new one (dream2nix-legacy
module), this would still mean that we need to keep the old API inside our tree. We've decided to instead do a proper port of some subsystems to the new API.
Due to the different completeness, community interest, and maintenance burden of each subsystem, we are probably going to drop some of them:
- nodejs: will be ported, @DavHau
- rust: will be ported, @DavHau
- python: examples will be ported, old API dropped, see init fetchPipMetadata / pip #504 @phaer
The following subsystems would be dropped. Please contact us here, on matrix or in a weekly call if you are interested into maintaining one of them - we'll happily provide mentoring and support.
- debian
- go
- haskell
- php (@aszenz is interested)
- racket
Checklist
- remove legacy code, outside v1
- generalize nixpkgs-overrides to work without python modules
Testing
- We'd like to have a more flexible test runner, allowing selection of tests per name or tag, like pytest cli,
in order to split tests in "slow" and "fast" sets. The idea is to make it easier and faster to run unit tests which primarily checks
api assertions and evaluation, while still being able to run heavier integration tests in CI and locally. - We also would like to automatically test code examples included in our documentation.