Skip to content
Prev 47815 / 63424 Next

[RFC] A case for freezing CRAN

I think what you really want here is the ability to easily identify
and sync to CRAN snapshots.

The easy way to do this is setup a CRAN mirror, but back it up with
version control, so that it's easy to reproduce the exact state of
CRAN at any given point in time.  CRAN's not particularly large and
doesn't churn a whole lot, so most version control systems should be
able to handle that without difficulty.

Using svn, mod_dav_svn and (maybe) mod_rewrite, you could setup the
server so that e.g.:
   http://my.cran.mirror/repos/2013-01-01/
is a mirror of how CRAN looked at midnight 2013-01-01.

Users can then set their repository to that URL, and will have a
stable snapshot to work with, and can have all their packages built
with that snapshot if they like.  For reproducibility purposes, all
users need to do is to agree on the same date to use.  For publication
purposes, the date of the snapshot should be sufficient.

We'd need a version of update.packages() that force-syncs all the
packages to the version in the repository, even if they're downgrades,
but otherwise it ought to be fairly straight-forward.

FWIW, we do something similar internally at Google.  All the packages
that a user has installed come from the same source control revision,
where we know that all the package versions are mutually compatible.
It saves a lot of headaches, and users can rollback to any previous
point in time easily if they run into problems.
On Wed, Mar 19, 2014 at 7:45 PM, Jeroen Ooms <jeroen.ooms at stat.ucla.edu> wrote:

Thread (63 messages)

Jeroen Ooms A case for freezing CRAN Mar 18 Joshua Ulrich A case for freezing CRAN Mar 19 Duncan Murdoch A case for freezing CRAN Mar 19 Kasper Daniel Hansen A case for freezing CRAN Mar 19 Dirk Eddelbuettel A case for freezing CRAN Mar 19 Hadley Wickham A case for freezing CRAN Mar 19 Geoff Jentry A case for freezing CRAN Mar 19 Jeroen Ooms A case for freezing CRAN Mar 19 Spencer Graves A case for freezing CRAN Mar 19 Joshua Ulrich A case for freezing CRAN Mar 19 Carl Boettiger A case for freezing CRAN Mar 19 Jeroen Ooms A case for freezing CRAN Mar 19 Hervé Pagès A case for freezing CRAN Mar 19 Jeroen Ooms A case for freezing CRAN Mar 19 Joshua Ulrich A case for freezing CRAN Mar 19 Dan Tenenbaum A case for freezing CRAN Mar 19 Jeroen Ooms A case for freezing CRAN Mar 19 Joshua Ulrich A case for freezing CRAN Mar 19 Hervé Pagès A case for freezing CRAN Mar 19 Romain Francois A case for freezing CRAN Mar 19 Gavin Simpson A case for freezing CRAN Mar 19 Gavin Simpson A case for freezing CRAN Mar 19 R. Michael Weylandt A case for freezing CRAN Mar 19 Gavin Simpson A case for freezing CRAN Mar 19 R. Michael Weylandt A case for freezing CRAN Mar 19 Jeroen Ooms A case for freezing CRAN Mar 19 R. Michael Weylandt A case for freezing CRAN Mar 19 Karl Millar A case for freezing CRAN Mar 19 David Winsemius A case for freezing CRAN Mar 19 Dan Tenenbaum A case for freezing CRAN Mar 19 Rainer M Krug A case for freezing CRAN Mar 20 Rainer M Krug A case for freezing CRAN Mar 20 Duncan Murdoch A case for freezing CRAN Mar 20 Roger Bivand A case for freezing CRAN Mar 20 S Ellison A case for freezing CRAN Mar 20 Jari Oksanen A case for freezing CRAN Mar 20 Hervé Pagès A case for freezing CRAN Mar 20 Ted A case for freezing CRAN Mar 20 Jeroen Ooms A case for freezing CRAN Mar 20 Tim Triche, Jr. A case for freezing CRAN Mar 20 Ted A case for freezing CRAN Mar 20 Ted A case for freezing CRAN Mar 20 Tim Triche, Jr. A case for freezing CRAN Mar 20 Ted A case for freezing CRAN Mar 20 Hervé Pagès A case for freezing CRAN Mar 20 Uwe Ligges A case for freezing CRAN Mar 20 Hervé Pagès A case for freezing CRAN Mar 20 Gábor Csárdi A case for freezing CRAN Mar 20 William Dunlap A case for freezing CRAN Mar 20 Gábor Csárdi A case for freezing CRAN Mar 20 Tim Triche, Jr. A case for freezing CRAN Mar 20 Tim Triche, Jr. A case for freezing CRAN Mar 20 Dan Tenenbaum A case for freezing CRAN Mar 20 Jari Oksanen A case for freezing CRAN Mar 21 Rainer M Krug A case for freezing CRAN Mar 21 Rainer M Krug A case for freezing CRAN Mar 21 Philippe GROSJEAN A case for freezing CRAN Mar 21 Jari Oksanen A case for freezing CRAN Mar 21 Rainer M Krug A case for freezing CRAN Mar 21 Philippe GROSJEAN A case for freezing CRAN Mar 21 Tom Short A case for freezing CRAN Mar 21 Martin Maechler A case for freezing CRAN Mar 24 Gábor Csárdi A case for freezing CRAN Mar 24