-
-
Notifications
You must be signed in to change notification settings - Fork 27
Add CFEP for package renames #64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jaimergp
wants to merge
11
commits into
main
Choose a base branch
from
renames
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 3 commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
baa7687
Add CFEP for package renames
jaimergp 1fcdaed
feat: add feedstock epoch labels
beckermr 940455d
Update cfep-XX.md
beckermr b4c76f1
Update guidelines for renaming packages
beckermr a47396e
Update cfep-XX.md
beckermr 2aaae47
Apply suggestions from code review
beckermr 3b72c42
Update cfep-XX.md
beckermr fafe245
Update cfep-XX.md
beckermr 705ba84
Update cfep-XX.md
beckermr de127f9
Update cfep-XX.md
beckermr f229a2b
Apply suggestion from @beckermr
beckermr File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
|
|
||
| <table> | ||
| <tr><td> Title </td><td> Guidelines for renaming packages </td> | ||
| <tr><td> Status </td><td> Draft </td></tr> | ||
| <tr><td> Author(s) </td><td> | ||
| Jaime Rodríguez-Guerra <jaime.rogue@gmail.com> Matthew R. Becker <becker.mr@gmail.com> | ||
| </td></tr> | ||
| <tr><td> Created </td><td> Oct 26, 2025 </td></tr> | ||
| <tr><td> Updated </td><td> Oct 26, 2025 </td></tr> | ||
| <tr><td> Discussion </td><td> https://github.com/conda-forge/admin-requests/pull/1711 </td></tr> | ||
| <tr><td> Implementation </td><td> NA </td></tr> | ||
| </table> | ||
|
|
||
| ## Abstract | ||
|
|
||
| This CFEP describes the principles informing how and when to rename a package in conda-forge. | ||
| Two cases are described depending on the status of the target name: | ||
|
|
||
| - Unclaimed names: A package already present in conda-forge wants to use a new name currently unclaimed. | ||
| - Names in use: A package, already present or about to be submitted, wishes to use a name already in use. | ||
|
|
||
| ## Specification | ||
|
|
||
beckermr marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| This CFEP follows [RFC 2119](https://datatracker.ietf.org/doc/html/rfc2119) in its use of certain keywords (e.g., MUST). | ||
|
|
||
| ### Feedstock Epochs | ||
|
|
||
| In order to track how feedstocks are reused, we define the concept of the `feedstock epoch` and a `feedstock epoch label`. | ||
|
|
||
| - When a feedstock is first created, its epoch is 0. | ||
| - If a feedstock is reused for a new project (see below), the `feedstock epoch` MUST be incremented by 1. | ||
| - A `feedstock epoch label` is a label of the form `{feedstock name without '-feedstock'}_feedstock_epoch{N}`. When the label is applied to an artifact, the label MUST reflect epoch of the feedstock at the time it produced the given artifact. | ||
| - All artifacts uploaded from a feedstock which do not otherwise have a `feedstock epoch label` are assumed to be from the current `feedstock epoch`. | ||
| - A `feedstock epoch label` MUST be applied to any artifact from the previous epoch of the feedstock. | ||
| - The current `feedstock epoch` for a given feedstock is determined as follows. The set of all labels for all artifacts produced by the feedstock is searched for any label matching the form of a `feedstock epoch label` for that feedstock. If no label matches, then the current `feedstock epoch` is 0. If labels do match, then the current `feedstock epoch` is one plus the maximum `feedstock epoch` over all matching labels. | ||
|
|
||
| ### Unclaimed names | ||
|
|
||
| When an existing package wants to be renamed to a currently unclaimed name, the process is uncontroversial and straight-forward. Two approaches are possible: | ||
beckermr marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| - The new name needs to be registered to the originating feedstock in `feedstock-outputs` (or equivalent). Once approved, a PR in the feedstock adding the new output may proceed normally. The old name MUST be kept as an alias output for backwards compatibility. In this case, the feedstock retains the name of the original name. | ||
beckermr marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - The original feedstock is archived and the package is re-submitted to `staged-recipes` (or equivalent) under the new name. The old package name MUST be added as an alias output for backwards compatibility, and MUST be registered as a valid output of the new feedstock in `feedstock-outputs`. | ||
beckermr marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ### Names in use | ||
|
|
||
| The blanket policy in this case is that an existing package name may not be used by a different project. In exceptional cases, the old name may be reallocated provided that: | ||
|
|
||
| - The old project is abandoned. Factors that can help to indicate if a project is abandoned include, but are not limited to, the project's git repo being archived, the project's distributions no longer being available (e.g., yanked artifacts on PyPI), etc. | ||
beckermr marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - There are ways to install both projects without conflicts or unintentionally installing one project versus the other. | ||
beckermr marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - The version number ranges of the projects do not intersect. | ||
| - The repodata patches for the old project (if any) do not change the repodata of the new project. Adjustments to the patches for the old project can be made, but they MUST produce the same modifications to the old artifacts. | ||
| - The old project's artifacts are all marked with the `broken` label. | ||
| - The old project's artifacts are all marked with the correct `feedstock epoch label` (see above). | ||
|
|
||
| The original feedstock MUST NOT be reused, and MUST be archived. | ||
|
|
||
| The core team may resolve any ambiguities or disagreements on feedstock reuse at their sole discretion. Further, the core team reserves the right to refuse to allow a feedstock to be reused at their sole discretion. | ||
|
|
||
| ## Copyright | ||
|
|
||
| All CFEPs are explicitly [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/). | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.