-
Notifications
You must be signed in to change notification settings - Fork 10
Description
EDIT: After @tarcieri comment I added "Deprecated"
I've been thinking of formal definitions
- Maintained (currently exists as Unmaintained) and
- Deprecated (currently does not exist)
As well as the implications and potential future implications of those two
Most of the open items in RustSec are maintenance related and I think they provide distraction.
Proposal
I propose to add distinction between "Deprecated" and "Unmaintained" by introducing "Deprecated" -
I think we should also run a parallel db for "Deprecated" crates where as for the unmaintained with "probably insecure" status could be relayed to Dependabot via GHSA where Deprecated fits the purpose of nudging users gently to consider alternatives.
I think that defining between these two with more clarity would give us benefit of being able to streamline the advisories around what crates not to use with appropriate levels of nudging -
Like for example sodiumoxide would be much better in a Deprecated database:
rustsec/advisory-db#1090
I believe the maintainer promised to merge security related patches but actively maintained is still "kind of bad" but not bad enough that it justifies necessarily an advisory entry -
If we keep "Maintained" strictly with "until proven / probably insecure" security focus - cargo audit would still continue to read the advisory-db where as "Deprecated" could be something else that could be early warning to switch before audit / Dependabot screams at you that it's insecure.
Community crates.io reflector #42 could also deter Deprecator use automatically -
Deprecated status could give maintainers incentitive to announce the crates they are not actively maintained or on other words graceful exit and signal potential to get someone to take over the maintenance.
Also we could perhaps have a definition to flag "Inactive" that by itself has no value but could flag further manual investigation with appropriate scoring from below factors
Say for example "Inactive" definition could involve -
- No commits in repository for a year
- No automatic dependency advisory workflow
- Maintainers no commits for a year
- Pending Issues with no Closed issues for x months
- ... ?
Refs