-
Notifications
You must be signed in to change notification settings - Fork 18.5k
Open
Labels
Milestone
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-packageflimzy, earthboundkid, jamietanna, kowaltek, shabbyrobe and 3 more
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Incoming