Why this matters
Every package eventually reaches a point where its maintainer moves on. That is normal. What matters is whether the people depending on it find out. A package that is quietly abandoned keeps getting installed for years, with nobody left to fix the next vulnerability. A package that is clearly marked abandoned, ideally with a suggested replacement, lets its users plan a migration on their own schedule.
If your package is abandoned, marking it so is the responsible thing to do. If it is not abandoned, make sure it is not marked as if it were. Both Packagist and the repository host carry a flag, and either can be set by accident or left behind after a change of plans.
What good looks like
- An actively maintained package is not marked abandoned on Packagist and its repository is not archived.
- A package that is no longer maintained is marked abandoned on Packagist, names a replacement when one exists, and has an archived repository, so the message is the same everywhere users look.
How to do it
If you still maintain the package
Check both places:
- On Packagist, open your package page. If it shows "This package is abandoned", log in and clear the flag from the package's edit page.
- On GitHub or GitLab, open the repository settings. If the repository is archived, unarchive it. Archiving makes a repository read-only, so it also blocks pull requests and issues.
If you are handing the package over
Transfer the repository and the Packagist package to the new maintainer rather than abandoning them. On Packagist, add the new maintainer from the package page and let them remove you afterwards. On GitHub or GitLab, transfer the repository so the old URL redirects. Users keep working without any change.
If the package is truly finished
- Release any pending fixes first, so the last version is the best version.
- On Packagist, mark the package abandoned and enter the replacement package name if there is one. Composer shows it to anyone who installs or updates the package.
- Write a short note at the top of the README saying the package is no longer maintained and what to use instead.
- Archive the repository on the source host.
Things to watch for
- Marking one place but not the other. Users and tools check both. An archived repository with a live Packagist entry, or the reverse, sends a mixed message.
- Archiving to stop notifications. Archiving means "this is over". If you only want fewer notifications, change your notification settings instead.
- Renaming without a pointer. If you moved the package to a new name, mark the old name abandoned with the new name as its replacement.
- A replacement that does not exist yet. Only name a replacement that is published and installable.