diff --git a/rfcs/0180-broken-package-removal.md b/rfcs/0180-broken-package-removal.md new file mode 100644 index 000000000..a93d669ce --- /dev/null +++ b/rfcs/0180-broken-package-removal.md @@ -0,0 +1,73 @@ +--- +feature: broken-package-removal +start-date: 2024-07-14 +author: Jörg "Mic92" Thalheim +co-authors: +shepherd-team: +shepherd-leader: +related-issues: +--- + +# Summary +[summary]: #summary + +This RFCs defines under what conditions we remove broken and unmaintained leaf packages. +The RFC does not have the ambition to define all reasons to remove a package but +instead focuses on simple rules that can be automated. + +# Motivation +[motivation]: #motivation + +Broken and unmaintained packages still cost us valuable time. +Broken packages still have to be evaluated to some extend +and unmaintained packages might still have to rebuild when one of their dependencies changes. +Because it is easy to add packages, it should be also easy to remove them, ideally automated + +# Detailed design +[design]: #detailed-design + +## Broken Packages + +Packages that are marked as broken on all platforms should be removed after one full NixOS release cycle. +If the package had dependencies, those dependencies are also marked as indirectly broken. +If they are not functional without the broken package, they should be removed as well. + +## Unmaintained packages + +Packages with an empty maintainer field that does not have packages depending on it, should +be removed after 2 months. Ideally we have an automation or semi-automation that creates pull requests for that. + +If a NixOS module depends on any of removed package, this module gets removed as well, if it is non-functional. + +# Examples and Interactions +[examples-and-interactions]: #examples-and-interactions + +- + +# Drawbacks +[drawbacks]: #drawbacks + +Some maintained packages might still have users that won't be able to use the package, +but the hope is that the removal of unmaintained package will lead to these people +stepping up as a maintainer. Recovering from the git history should be easy in that case. + +# Alternatives +[alternatives]: #alternatives + +Keep all packages. + +# Prior art +[prior-art]: #prior-art + +- [Nixpkgs eval time is increasing too fast](https://github.com/NixOS/nixpkgs/issues/320528): + This issue discusses how we can improve the evaluation time. + +# Unresolved questions +[unresolved]: #unresolved-questions + +? + +# Future work +[future]: #future-work + +?