Skip to content
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

IDEA: BiocManager::install() to fall back to CRANhaven for recently archived CRAN packages #190

Open
HenrikBengtsson opened this issue Mar 9, 2024 · 0 comments

Comments

@HenrikBengtsson
Copy link
Contributor

HenrikBengtsson commented Mar 9, 2024

I'm creating this issue to have a place to discuss CRANhaven that I presented to the Bioconductor Technical Advisor Board (TAB) on 2024-03-07.

Background

The gist is that CRANhaven is a package repository (served via R-universe) that hosts recently archived CRAN packages. Our analyses show that 36% of all archived packages return to CRAN at some point. The median return time is ~30 days.

When a package is archived on CRAN, there is no prior notice to the community. This is disruptive and confusing to end users, including those using Bioconductor. The basically get an installation error saying that one or more packages are not available. For someone who doesn't understand how CRAN works, this may result in unnecessary troubleshooting and request for support. The CRANhaven package repository is designed to mitigate these problems, but allow the user to fall back to install also recently archive CRAN packages by using:

options(repos = c(getOption("repos"), "https://cranhaven.r-universe.dev"))
install.packages("somepkg")

Proposal

Have BiocManager::install() append CRANhaven as a fallback repository to install from.

On the Bioc Slack, and during the TAB meeting, one suggestion was to not do this for the Bioc devel version. One argument was that it is important that the problem of archived CRAN packages is noticed immediately, so that Bioconductor package maintainers can take immediate action if needed.

I've created PR #189 to illustrate what it takes to implement this - spoiler: it's a single if-statement.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant