CFEP 21 - conda-forge / Bioconda Transfer Policy - DRAFT#52
CFEP 21 - conda-forge / Bioconda Transfer Policy - DRAFT#52mfansler wants to merge 16 commits intoconda-forge:mainfrom
Conversation
| 1. Packages on BC considered for transfer should be marked with a ["Move to Conda Forge" label](https://github.com/bioconda/bioconda-recipes/labels/Move%20to%20Conda-Forge) in the `bioconda-recipes` repository. This label can be applied either in an Issue or a Pull Request. | ||
| 2. A Pull Request should be create on CF's `staged-recipes` repository to add the | ||
| 3. The linter will flag when adding a recipe already hosted by BC. This will trigger a message to [the **conda-forge/bioconda-recipes** team](https://github.com/orgs/conda-forge/teams/bioconda-recipes). | ||
| 4. Upon approval by a **conda-forge/bioconda-recipes** team member, the Pull Request can then be reviewed and merged. |
There was a problem hiding this comment.
I guess we should get sign off from bioconda members in this CFEP too. cc @conda-forge/bioconda-recipes
There was a problem hiding this comment.
Are you thinking a specific number? @bgruening and I are both members.
| ### Conda Forge to Bioconda (CF-to-BC) Transfers | ||
|
|
||
| 1. An Issue should be created on the CF feedstock with the title "Move to Bioconda". The **conda-forge/bioconda-recipes** team can also be pinged for their input. | ||
| 2. A Pull Request should be created on the `conda-forge/admin-requests` feedstock to label all previous builds of this feedstock with a `transferred-to-bioconda` label. It should also initiate a request from the Core team to archive the feedstock. The **conda-forge/bioconda-recipes** should be pinged to review. |
There was a problem hiding this comment.
We might need to add code for this.
But I do see one issue: the package will disappear from main for those that do not use bioconda. What's the recommended practice here? Them adding the label after experience breakage? Is there a way to avoid the breakage from happening?
There was a problem hiding this comment.
Yes, users would experience an inability to find the package and would have to add the label to use it again. I don't think there is a way around this. It would be discoverable on Anaconda Cloud web searching, but perhaps something should be added to the archived feedstock itself. Can a message be added to the README? or create a pinned Issue with a link to documentation?
Maybe I can put some numbers together on what packages actually have moved before, but in my experience they are already bioinformatics oriented, so my expectation is that most users of such packages will already have Bioconda configured.
There was a problem hiding this comment.
I mention in the Implementation section that we would add a section under "User Documentation > FAQ" to cover how to use the label.
|
I wasn't aware that conda-forge recipes were being migrated to bioconda. I would have expected that a better solution was to onboard maintainers to the (I presume) outdated feedstocks, and this way we don't have to deal with these priority issues. Is this extended practice or just a new case found in this |
I can try to add more examples at some point. The ones I see are driven by R packages adding a Bioconductor dependency, none of which we host. It is acutely problematic for An alternative solution could be that Bioconda creates an ability for recipes to optionally build with |
Co-authored-by: jaimergp <jaimergp@users.noreply.github.com>
Co-authored-by: jaimergp <jaimergp@users.noreply.github.com>
Co-authored-by: jaimergp <jaimergp@users.noreply.github.com>
Co-authored-by: jaimergp <jaimergp@users.noreply.github.com>
Co-authored-by: jaimergp <jaimergp@users.noreply.github.com>
Co-authored-by: jaimergp <jaimergp@users.noreply.github.com>
Co-authored-by: jaimergp <jaimergp@users.noreply.github.com>
|
Ah, I see, not a matter of lack of maintenance, but new requirements not found in conda-forge and available in bioconda. I see. Even if you manage to build with flexible, downstream users would have to also realize that, and they might be using strict, so yes, I don't think there's a way around 😬 If only conda could tell you why your package disappeared... I envision a |
Co-authored-by: Björn Grüning <bjoern@gruenings.eu>
|
@bgruening sorry for the delay in this. I'll try to touch it up to move it from Draft to Proposed.
No, it does not work. In |
|
@bgruening @conda-forge/bioconda-recipes I've updated this. Please review. Note that the @beckermr is it necessary to prototype an implementation (e.g., a PR to |
|
cc @mbargull |
|
Hi @mfansler, thanks for looking into that. Is there any progress here, as the issue with our two recipes still persists. |
|
Last I checked in on this (January), there was openness in Bioconda to enable recipes to override strict channel priority to use flexible solve instead. In the end, that would likely be a more simple implementation, but I haven't yet looked into what work would need to be done to make this possible. |
|
We need to double check support for "flexible" solver priority across mamba and rattler. We may not have it in all cases. |
|
@mfansler @beckermr I see that it would be advantageous to rather archive the old conda-forge recipes than allow flexible solve within bioconda, as also @jaimergp pointed out "even if you manage to build with flexible, downstream users would have to also realize that, and they might be using strict". They would then be using a very outdated version. |
jaimergp
left a comment
There was a problem hiding this comment.
Sorry for dropping this, adding this to my list!
I think we need a clearer discussion on how this will impact end-users that only want to install packages and don't care where they come from. They should not need to change the configured channel priority and, at most, add a new channel to the list in a way that doesn't impact the environment resolution. This should be added to Rationale. Example cases I'd like to see discussed:
- How a conda-forge user may be able to install the package that moved to conda-forge. e.g. add
biocondato the channel list in which position and with which priority. - How a bioconda user may use the package that moved to conda-forge. Probably no changes, because it's already part of their config.
| ## Other sections | ||
|
|
||
| Other relevant sections of the proposal. Common sections include: | ||
|
|
||
| * Specification -- The technical details of the proposed change. | ||
| * Motivation -- Why the proposed change is needed. | ||
| * Rationale -- Why particular decisions were made in the proposal. | ||
| * Backwards Compatibility -- Will the proposed change break existing | ||
| packages or workflows. | ||
| * Alternatives -- Any alternatives considered during the design. | ||
| * Sample Implementation -- Links to prototype or a sample implementation of | ||
| the proposed change. | ||
| * FAQ -- Frequently asked questions (and answers to them). | ||
| * Resolution -- A short summary of the decision made by the community. | ||
| * Reference -- Any references used in the design of the CFEP. |
There was a problem hiding this comment.
| ## Other sections | |
| Other relevant sections of the proposal. Common sections include: | |
| * Specification -- The technical details of the proposed change. | |
| * Motivation -- Why the proposed change is needed. | |
| * Rationale -- Why particular decisions were made in the proposal. | |
| * Backwards Compatibility -- Will the proposed change break existing | |
| packages or workflows. | |
| * Alternatives -- Any alternatives considered during the design. | |
| * Sample Implementation -- Links to prototype or a sample implementation of | |
| the proposed change. | |
| * FAQ -- Frequently asked questions (and answers to them). | |
| * Resolution -- A short summary of the decision made by the community. | |
| * Reference -- Any references used in the design of the CFEP. |
|
|
||
| ### Bioconda to conda-forge (BC-to-CF) Transfers | ||
|
|
||
| 1. Packages on BC considered for transfer should be marked with a ["Move to conda-forge" label](https://github.com/bioconda/bioconda-recipes/labels/Move%20to%20Conda-Forge) in the `bioconda-recipes` repository. This label can be applied either in an Issue or a Pull Request. |
There was a problem hiding this comment.
I'd suggest not using too specific terms or guidelines in the Specification, in case those specifics change over time. For example, I'd remove the label details here, and then add an "Example workflow" section where those details are mentioned. The Specification should only say "Create an issue in bioconda/bioconda-recipes to notify the intent of transferring a package to conda-forge".
| ### Bioconda to conda-forge (BC-to-CF) Transfers | ||
|
|
||
| 1. Packages on BC considered for transfer should be marked with a ["Move to conda-forge" label](https://github.com/bioconda/bioconda-recipes/labels/Move%20to%20Conda-Forge) in the `bioconda-recipes` repository. This label can be applied either in an Issue or a Pull Request. | ||
| 2. A Pull Request should be create on CF's `staged-recipes` repository to add the recipe. A link to the labeled BC Issue/Pull Request should be included in the body of the CF Pull Request. |
There was a problem hiding this comment.
This should only happen once the bioconda team has agreed to allow the transfer to minimize noise. The reference to the comment in the bioconda org allowing the transfer should be mandatory.
|
|
||
| 1. Packages on BC considered for transfer should be marked with a ["Move to conda-forge" label](https://github.com/bioconda/bioconda-recipes/labels/Move%20to%20Conda-Forge) in the `bioconda-recipes` repository. This label can be applied either in an Issue or a Pull Request. | ||
| 2. A Pull Request should be create on CF's `staged-recipes` repository to add the recipe. A link to the labeled BC Issue/Pull Request should be included in the body of the CF Pull Request. | ||
| 3. The linter will flag when adding a recipe already hosted by BC. This will trigger a message to [the **conda-forge/bioconda-recipes** team](https://github.com/orgs/conda-forge/teams/bioconda-recipes). |
There was a problem hiding this comment.
This is an implementation detail we don't need in the specification. Perhaps in the Example workflow section.
| 1. Packages on BC considered for transfer should be marked with a ["Move to conda-forge" label](https://github.com/bioconda/bioconda-recipes/labels/Move%20to%20Conda-Forge) in the `bioconda-recipes` repository. This label can be applied either in an Issue or a Pull Request. | ||
| 2. A Pull Request should be create on CF's `staged-recipes` repository to add the recipe. A link to the labeled BC Issue/Pull Request should be included in the body of the CF Pull Request. | ||
| 3. The linter will flag when adding a recipe already hosted by BC. This will trigger a message to [the **conda-forge/bioconda-recipes** team](https://github.com/orgs/conda-forge/teams/bioconda-recipes). | ||
| 4. Upon approval by [the **conda-forge/bioconda-recipes** team](https://github.com/orgs/conda-forge/teams/bioconda-recipes), the Pull Request can then be reviewed and merged. |
There was a problem hiding this comment.
This is implicit if the suggestions to point 2 are applied.
| ### conda-forge to Bioconda (CF-to-BC) Transfers | ||
|
|
||
| 1. An Issue should be created on the CF feedstock with the title "Move to Bioconda". [The **conda-forge/bioconda-recipes** team](https://github.com/orgs/conda-forge/teams/bioconda-recipes) can also be pinged for their input. | ||
| 2. A Pull Request should be created on the `conda-forge/admin-requests` feedstock to label all previous builds of this feedstock with a `transferred-to-bioconda` label. It should also initiate a request from the Core team to archive the feedstock. [The **conda-forge/bioconda-recipes** team](https://github.com/orgs/conda-forge/teams/bioconda-recipes) should be pinged to review. |
There was a problem hiding this comment.
This should only happen after explicit approval by the feedstock maintainers and the bioconda team. I think I'm inclined to mark them as broken instead of relabeling. Not sure what happens with the original URL once they are relabeled, but we want to avoid 404s in lockfiles.
|
|
||
| 1. An Issue should be created on the CF feedstock with the title "Move to Bioconda". [The **conda-forge/bioconda-recipes** team](https://github.com/orgs/conda-forge/teams/bioconda-recipes) can also be pinged for their input. | ||
| 2. A Pull Request should be created on the `conda-forge/admin-requests` feedstock to label all previous builds of this feedstock with a `transferred-to-bioconda` label. It should also initiate a request from the Core team to archive the feedstock. [The **conda-forge/bioconda-recipes** team](https://github.com/orgs/conda-forge/teams/bioconda-recipes) should be pinged to review. | ||
| 3. A Pull Request on BC's `bioconda-recipes` should be created to add the recipe there. A link to this Pull Request should be added to the above Issue and Pull Request. |
There was a problem hiding this comment.
This should happen before the admin-requests PR. Once approved (but before the merge), then the admin-requests PR should be submitted. Both PRs should be merged as simultaneously as possible.
| 1. An Issue should be created on the CF feedstock with the title "Move to Bioconda". [The **conda-forge/bioconda-recipes** team](https://github.com/orgs/conda-forge/teams/bioconda-recipes) can also be pinged for their input. | ||
| 2. A Pull Request should be created on the `conda-forge/admin-requests` feedstock to label all previous builds of this feedstock with a `transferred-to-bioconda` label. It should also initiate a request from the Core team to archive the feedstock. [The **conda-forge/bioconda-recipes** team](https://github.com/orgs/conda-forge/teams/bioconda-recipes) should be pinged to review. | ||
| 3. A Pull Request on BC's `bioconda-recipes` should be created to add the recipe there. A link to this Pull Request should be added to the above Issue and Pull Request. | ||
| 4. Once a link is provided and a [**conda-forge/bioconda-recipes**](https://github.com/bioconda/bioconda-recipes) member has reviewed the Pull Request on [`conda-forge/admin-requests`](https://github.com/conda-forge/admin-requests), **conda-forge/core** should proceed to review and merge. |
There was a problem hiding this comment.
We need an extra step here where all the conda-forge packages for that named are copied to bioconda. I think this can be done programmatically with little effort.
| 4. Once a link is provided and a [**conda-forge/bioconda-recipes**](https://github.com/bioconda/bioconda-recipes) member has reviewed the Pull Request on [`conda-forge/admin-requests`](https://github.com/conda-forge/admin-requests), **conda-forge/core** should proceed to review and merge. | ||
| 5. The BC `bioconda-recipes` Pull Request can be merged after [the **conda-forge/bioconda-recipes** team](https://github.com/orgs/conda-forge/teams/bioconda-recipes) has approved the `conda-forge/admin-requests` Pull Request. | ||
|
|
||
| ### Expected Implementation |
There was a problem hiding this comment.
| ### Expected Implementation | |
| ### Recommended Implementation |
| - A section on BC-to-CF transfer will be added under "Maintainer Documentation > Contributing packages". | ||
| - A section on CF-to-BC transfer will be added under "Maintainer Documentation > Maintaining packages". | ||
| - A section on using the `label/transferred-to-bioconda` label to solve environments requiring the labelled artifacts will be added under "User Documentation > FAQ". |
There was a problem hiding this comment.
I don't think we need to discuss the documentation sections that explicitly.
|
|
||
| ## Alternatives | ||
|
|
||
| Transferring artifacts (e.g., as in [CFEP-3](https://github.com/conda-forge/cfep/blob/main/cfep-03.md), followed by removal) would also solve the end-user issues. However, this would can be regarded as a more drastic change compared to a labeling approach. |
There was a problem hiding this comment.
Yes, this sounds like a viable alternative.
|
|
||
| ## Motivation | ||
|
|
||
| BC package builds use a `strict` channel priority with the channels `conda-forge > bioconda > defaults`. This creates a situation that when a package transfers from CF to BC the presence of builds with `main` label in `conda-forge` masks the solver from considering builds in a lower priority channel. |
There was a problem hiding this comment.
Why is conda-forge placed before bioconda?
There was a problem hiding this comment.
Because previously, packages have only migrated from bioconda to conda-forge, especially CRAN packages that don't have any bioconda dependencies. To properly resolve them, the channel order is recommended in that way. At least I think that was the motivation, but I gladly stand corrected by anybody with more in-depth knowledge.
|
I ran into the same issue, a CRAN package adding a Just to cross-reference in my attempts, here is the attempt to create an Looking into this repeatedly, I think the two viable options I see would be the following. I would prefer the first one over the second, but wanted to put this up for reviving the discussion here:
|
So a third, somewhat simpler proposal that would not require a CFEP would be to:
I think this would:
Thoughts? |
|
Yes, this actually does sound like it seamlessly solves the all issues for users. Thanks for thinking this through with the extra insights you have into conda-forge workings and capabilities. I wouldn't have known about the broken label, or the ability to backfill old package versions. Only the migration process is still a bit lengthy, with multiple steps. So maybe it does make sense to update this CFEP with all of these steps, fleshing out how exactly they are done and who will do what? Is there anything I can do to help with this? |
|
Let's try it once and see how it goes. If it actually works, then I think we add the steps to the docs and call it good. CFEPs are about policy, and this stuff is all about details. |
|
Ah, OK. The docs probably are more discoverable, as well. Should we try it out with The only caveat is, that I will be starting parental leave any day now, and would then be away for 6 weeks. But until then I would make this a priority. And the Also, to give a little context: The package version I propose for |
|
Yes we can start with this package for sure. Let's make a tracking issue and try to get as far as we can when folks have time. You should definitely not worry about this though. Lots of changes coming your way! |
|
See conda-forge/conda-forge.github.io#2809. As we finish steps, we can mark them as done there. |
I am proposing we formalize transfers between Conda Forge and Bioconda. Conda Forge to Bioconda transfers create problems for other packages on Bioconda that need the newer versions. I am suggesting Conda Forge creates a dedicated label that will be applied to all builds from a transferred feedstock. This would alleviate solving issues by moving the older builds off the
mainlabel.@conda-forge/bioconda-recipes
Example Impacted Feedstocks
r-ggmbioconda/bioconda-recipes#50793Checklist
0(if the version changed)conda-smithy(Use the phrase@conda-forge-admin, please rerenderin a comment in this PR for automated rerendering)