Skip to content

The Definition Of Maintained and Deprecated #44

@pinkforest

Description

@pinkforest

EDIT: After @tarcieri comment I added "Deprecated"

I've been thinking of formal definitions

  1. Maintained (currently exists as Unmaintained) and
  2. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions