composer / composer/packagist

Add API+button to archive a tag

Open
#938 12 comments 5 reactions 0 assignees View on GitHub
Dominant language
PHP
Stars
1.8k
Forks
488
Avg merge
2d 21h
Merged PRs (30d)
32

Description

It was recently identified that Composer consumes high CPU + memory on packages that have a lot of historical tags. See e.g. https://github.com/composer/composer/issues/7577 for some numbers + pointers.

This means the composer+packagist infrastructure has a scalability issue: as time passes, the list of tags per packages grows, and the "Composer experience" degrades. This is significant for `symfony/*` today, and will become also a pain for any other packages over time.

It would be great to just remove old tags from the provider jsons sent to composer (e.g https://repo.packagist.org/p/symfony/security-http.json should not list older tags.)

I think the most flexible way to achieve this would be to allow package authors to mark tags as "archived". If such feature existed, we would use it immediately for all older Symfony tags (e.g. <2.7) and everyone would benefit from it.

The outcome would be that composer could not resolve these old tags when solving dependency graphs. But composer.lock would still work so old projects could still be installed with no issues.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the provider JSON example at repo.packagist.org/p/symfony/security-http.json and the Composer issue linked in the report to understand the scalability and resolution constraints. Define the API and package-author button needed to mark tags as archived, then verify that archived tags are excluded from provider metadata while existing composer.lock files still install.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
api, backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.