-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.qmd
96 lines (71 loc) · 4.69 KB
/
index.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
---
title: "CRANhaven"
subtitle: "A repository for recently archived CRAN packages"
---
::: {.callout-warning}
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:
```r
install.packages("pkgname", repos = c("https://cranhaven.r-universe.dev", "https://cloud.r-project.org"))
```
Packages remain on CRANhaven[^1] for up to five weeks[^2], or until
they are unarchived on CRAN.
[^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.
## Motivation
<div>
<div style="float: right; padding-bottom: 2ex; padding-left: 2ex; width: 50%;">
![CRANhaven is where recently archived CRAN packages can find shelter and get time for maintenance](assets/cranhaven-art.webp){fig-alt="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."}
</div>
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.
</div>
## 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](https://github.com/r-universe/cranhaven/actions) [once an
hour](https://github.com/cranhaven/cranhaven.r-universe.dev/blob/main/.github/workflows/update.yml). It
queries
[CRANberries](https://dirk.eddelbuettel.com/cranberries/cran/removed/)
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>.
[CRANhaven]: https://cranhaven.r-universe.dev
[R-universe]: https://cranhaven.r-universe.dev
[results]: cran-archiving-stats.html
[R packages that were recently archived on CRAN]: dashboard-live.html