3 min read

How to keep up with CRAN policies and processes?

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,

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! 💪