CRANhaven
A repository for recently archived CRAN packages
Please, do not add the CRANhaven repository to Additional_repositories
of your package. It is only meant to be a backup solution for end-users when a package falls of CRAN.
The CRANhaven package repository hosts R packages that were recently archived on CRAN. Those packages can be installed using:
install.packages("pkgname", repos = c("https://cranhaven.r-universe.dev", "https://cloud.r-project.org"))
Packages remain on CRANhaven1 for up to five weeks2, or until they are unarchived on CRAN.
Motivation
Sometimes a package gets archived only because the maintainer did not have time to address the issues before the deadline given by CRAN. Sometimes the deadline is as short as two weeks. In Revilla (2022), it was found that 36% of all archived CRAN package get “unarchived” again at some point in the future. Our results show that the median time for an archived package to reappear on CRAN is ~30 days.
The impact of a CRAN package being archived depends on the package, and how widely used it is, and how many packages depend on it. In some cases it can be rather disruptive for R users and developers when one or more packages are archived on CRAN.
Importantly, any package that has a hard dependency (e.g. Depends:
and Imports:
) on an archived package will automatically be archived too. There is little a developer that is a “victim” of this can do, other than doing a major rewrite, which is only reasonable to do if the developer knows that the archived package will not be fixed anytime soon.
The purpose of this R package repository is to give archived CRAN packages a second chance. As soon as the package is archived on CRAN, it is added to this repository. If the packages is fixed and “unarchived” on CRAN, it is removed from this repository. If the package is not unarchived on CRAN within five weeks, it is removed from this repository. This gives R users, developers, and reverse-dependency maintainers some extra leeway.
Known Limitations
Some of the CRANhaven packages fail to build temporarily only because they depend on another archived CRAN package, which still has not been built on CRANhaven. This will normally resolve itself after a few hours; R-universe re-synchronize once an hour and it might require a few rounds for all packages to be built.
Under the Hood
This repository is updated once an hour. It queries CRANberries for recently archived packages, ignores the ones that have been archived for more than five weeks, or that have since be unarchived on CRAN. The source for the packages built on the CRANhaven R-universe is https://github.com/cran.
References
Footnotes
CRANhaven is served via R-universe. The “Commit” datestamps seen on R-universe show the dates (±1 day) when the packages were archived on CRAN.↩︎
The five-week limit is based on our results showing that the median time for a package to return to CRAN is 30 days.↩︎