CRANhaven

A repository for recently archived CRAN packages

Warning

This is work under development! Please do not rely on it for production and do not add CRANhaven to Additional_repositories of your package.

The CRANhaven package repository hosts R packages that were recently archived on CRAN. Those packages can be installed using:

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

Packages remain on CRANhaven1 for up to five weeks2, or until they are unarchived on CRAN.

Motivation

Image depicting a dramatic and stylized seascape. There is a large, cliff-like formation on the left with water cascading down its side, simulating a waterfall. On the right, a massive, vertical wall with the words 'CRAN HAVEN' written on it creates a stark contrast with the natural features. The wall appears to be constructed out of container-like structures, suggesting a man-made barrier or perhaps an installation by the sea. In the water, several ships are visible at varying distances from the viewer, likely representing different types of fishing or sailing vessels. They add a sense of scale and activity to the scene. Above, the sky is filled with textured clouds, and sunbeams break through them, casting a warm light on the ocean and parts of the cliffs, which creates a visually striking effect. The overall atmosphere is one of a surreal blend between the natural world and human influence, possibly implying a safe harbor or refuge symbolized by the words on the wall. The art style is reminiscent of a digital painting, with a high level of detail and a dramatic interplay of light and shadow.

CRANhaven is where recently archived CRAN packages can find shelter and get time for maintenance

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

Revilla, Lluís. 2022. “Reasons Why Packages Are Archived on CRAN.” Personal blog. https://llrs.dev/post/2021/12/07/reasons-cran-archivals/.

Footnotes

  1. 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.↩︎

  2. The five-week limit is based on our results showing that the median time for a package to return to CRAN is 30 days.↩︎