CRAN, the Comprehensive R Archive Network, changes its rules and workflow every so often: see for instance the new encoding setting of one of its check flavors. As a package developer, you’d better keep up with CRAN policies and processes to be able to safely retain your package(s) on CRAN and to prepare your next submissions with as much information as possible. We at R-hub are also every interested in not missing updates, in particular of the check setups, in order for our services to serve package developers as well as possible. In this post, we’ll therefore answer this important question: How to keep up with CRAN policies and processes?
Direct information sources
There is no direct hot flow of information from CRAN but there are at least two direct sources of information.
The first one is the CRAN policy that has however no changelog. Thankfully, in 2013 Dirk Eddelbuettel created and announced his creating a tool, the CRAN Repository Policy Watch, that works by mirroring the SVN repository of the policy. You can use the tool in two ways,
-
Browse or even watch the mirror GitHub repository of the original SVN account (there’s even this other GitHub mirror). Watching only means you’ll see the commits in your GitHub timeline, you will not get notifications since changes are not made by PRs;
-
Follow the Twitter account that broadcasts the updates.
The second direct source of information is an article that the CRAN team has been including in each issue of the R Journal for a few years. In the code below we use the rOpenSci package bib2df
by Philipp Ottolinger to parse the .bib file of all R Journal issues and find these articles.
journal <- bib2df::bib2df("https://journal.r-project.org/archive/RJournal.bib")
knitr::kable(
journal[grepl("CRAN", journal$TITLE), c("TITLE", "MONTH", "YEAR", "URL")]
)
TITLE | MONTH | YEAR | URL |
---|---|---|---|
Changes on {CRAN}}, | jun | 2013 | http://journal.r-project.org/archive/2013-1/cran.pdf |
Changes on {CRAN}}, | dec | 2013 | http://journal.r-project.org/archive/2013-2/cran.pdf |
Changes on {CRAN}}, | jun | 2014 | http://journal.r-project.org/archive/2014-1/cran.pdf |
Changes on {CRAN}}, | dec | 2014 | http://journal.r-project.org/archive/2014-2/cran.pdf |
Changes on {CRAN}}, | jun | 2015 | http://journal.r-project.org/archive/2015-1/cran.pdf |
Changes on {CRAN}}, | dec | 2015 | http://journal.r-project.org/archive/2015-2/cran.pdf |
Changes on {CRAN}}, | aug | 2016 | http://journal.r-project.org/archive/2016-1/cran.pdf |
Changes on {CRAN}}, | dec | 2016 | http://journal.r-project.org/archive/2016-2/cran.pdf |
Changes on CRAN}, | jun | 2017 | http://journal.r-project.org/archive/2017-1/cran.pdf |
Changes on CRAN}, | dec | 2017 | http://journal.r-project.org/archive/2017-2/cran.pdf |
Changes on CRAN}, | july | 2018 | http://journal.r-project.org/archive/2018-1/cran.pdf |
Changes on CRAN}, | dec | 2018 | http://journal.r-project.org/archive/2018-2/cran.pdf |
These articles have info about policy changes but also changes in the submission pipelines, check setups etc. Based on previous years we can expect the next update from the CRAN team this summer.
Indirect information sources
Now there are also indirect information sources that can help you notice something changed.
First, your own packages are nice sentinels of new/updated CRAN checks: refer to this section of a recent post of ours, about CRAN checks surveillance. Ensure the email address you listed as maintainer email is still valid, because that’s the way CRAN might communicate about a new failing check with you. If you fail to respond, your package could get orphaned or archived!
Then, other maintainers’ experiences are useful to know. You cannot possibly talk to all maintainers of CRAN packages, but it’s useful to listen to channels where they post: subscribe to R-package-devel (or its daily digest), lurk or participate in other venues where help about package development is given.
Conclusion
In this post, we explained various strategies to follow the changes of CRAN’s policies and processes, both via direct and less direct sources of information. Well informed maintainers more easily retain and get their packages on CRAN! 💪