Open
Description
Proposal Details
This is a proposal lifted from our discussions over at Cup o' Go, and is a direct follow-up of cmd/go: list deprecations and newer available major, minor versions by mitar.
Proposal: Highlight Deprecated & Abandoned Packages
This proposal aims to implement a system to highlight packages that have been marked as abandoned by their maintainers, and/or marked as such by a trusted third party. The goal is to improve package discovery and maintenance by clearly indicating modules that you can't really rely on anymore and suggesting potential alternatives.
Key Features
-
Marking "repo archived" on GitHub, GitLab, etc.:
- Automatically detect if a GitHub/GitLab repository is archived.
- Mark the package as abandoned in the Go documentation and package registry.
-
Third-party registry for deprecated packages (Allow for the third party - not necessarily maintain it within the Go team):
- Allow passing a config/flag for
--package-fork-follow-server=https://somewhere/on/the/web
- Establish a third-party registry API, so maintainers can list deprecated packages and their suggested alternatives.
- This will open up opportunities for SSDLC companies to set up their own registries to follow "the good forks" in their opinion
- The registry must provide an API for querying deprecated packages and their alternatives.
- Allow passing a config/flag for
Benefits
- Improves developer awareness of abandoned packages.
- Encourages maintainers to clearly indicate abandonment status and suggest alternatives themselves, allowing for more responsible project sunsetting and better open-source well-being.
- Facilitates smoother transitions to maintained forks or just plain better alternatives.
Example Workflow
- A maintainer decides to abandon their module, because they're moving to Mars.
- They archive the repository on GitHub.
- The Go package index and documentation are updated to reflect the abandonment.
- Developers using the package receive warnings and suggestions for alternatives during their workflow when running
go mod outdated
(or whatever subcommand we end up choosing in the original proposal), perhaps with a flag e.g.go mod outdated -include-abandoned
. - The third-party registry provides additional context and options for finding maintained packages, e.g.:
> export GO_THIRD_PARTY_FORK_FOLLOWER=https://some.company.com/go-forks
> go mod outdated -include-abandoned -suggest-forks
github.com/thecoreman/some-package has been abandoned => replace with github.com/flimzy/some-package
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Incoming