(#10379) [docs] Policy: remove old package versions

This commit is contained in:
Javier G. Sogo
2022-04-21 14:20:42 +02:00
committed by GitHub
parent 6edc471b21
commit 36f84d6682
2 changed files with 28 additions and 13 deletions

View File

@@ -197,15 +197,15 @@ As a result, all calls to `tools.check_min_cppstd` must be guarded by a check fo
## What is the policy for adding older versions of a package?
We defer adding older versions without a direct requirement. We love to hear why in the opening description of the PR.
This is for historical reasons, when older versions were permitted the overwhelming majority received zero downloads and were never used by the community while still increasing the burden on the build system.
Adding versions that are not used by consumer only requires more resources and time from the CI servers.
## What is the policy for removing older versions of a package?
Keeping many older versions can be a problem, as over time they may become incompatible with newer versions of the package's Python code and/or dependencies. They also become downloaded less often than newer versions, and yet continue to consume CI resources during Pull Requests.
Older versions can be removed from packages given the considerations below. When removing those version, remove everything
that is specific to them: logic from the recipe and references in `config.yml` and `conandata.yml`. In any case, packages
are never removed from ConanCenter remote.
Given a technical limitations and/or incompatibilities emerging from infrastructure changes, removing older versions from `config.yml` and `conandata.yml` may be permitted. The respective recipes and binary packages will not be removed from Conan Center, but they will not receive new updates, as they are not listed to be built.
There is no strict rule for keeping older versions, but we recommend keeping only the latest version of each old major release. For the latest major version available, the last patch version of each minor version should be available. As example, we can list the [CMake](https://github.com/conan-io/conan-center-index/blob/master/recipes/cmake/config.yml) package.
When removing older versions, please take into account [these considerations](docs/reviewing.md#supported-versions).
## Can I install packages from the system package manager?

View File

@@ -188,12 +188,27 @@ having the same naming conventions for the options may help consumers, e.g. they
## Supported Versions
Keeping older versions is needed due to users who are still using legacy versions and can not update their packages. However, some points should be considered:
- Adding older versions should be allowed only in strict cases, when required by a user. The committer should express their needs on the PR.
- Removing older versions is allowed, so long as it keeps:
- for each older major release available, at least one version
- for the latest major version, at least three last versions should be available (if there are more than three such versions).
In this repository we are building a subset of all the versions for a given library. This set of version changes over time as new versions
are released and old ones stop to be used.
Also, consider these FAQs:
- [What is the policy for adding older versions of a package?](faqs.md#what-is-the-policy-for-adding-older-versions-of-a-package)
- [What is the policy for removing older versions of a package?](faqs.md#what-is-the-policy-for-removing-older-versions-of-a-package)
We always welcome latest releases as soon as they are available, and from time to time we remove old versions mainly due to technical reasons:
the more versions we have, the more resources that are needed in the CI and the more time it takes to build each pull-request (also, the
more chances of failing because of unexpected errors).
### Removing old versions
When removing old versions, please follow these considerations:
- keep one version for every major release
- for the latest major release, at least three versions should be available (latest three minor versions)
Logic associated to removed revisions, and entries in `config.yml` and `conandata.yml` files should be removed as well. If anyone needs to
recover them in the future, Git contains the full history and changes can be recovered from it.
Please, note that even if those versions are removed from this repository, **the packages will always be accessible in ConanCenter remote**
associated to the recipe revision used to build them.
### Adding old versions
We usually don't add old versions unless there is a specific request for it. If you need some old version, please
share in the pull-request what is the motivation. Take into account that the version might be removed in future
pull-requests according to the statements above.