From g@bembecker @end|ng |rom gm@||@com  Fri Nov  8 21:37:17 2019
From: g@bembecker @end|ng |rom gm@||@com (Gabriel Becker)
Date: Fri, 8 Nov 2019 12:37:17 -0800
Subject: [Rd] improving the performance of install.packages
In-Reply-To: <CAKShX4Dr8RS0OTwWbmn+RvSDvVtJ-jARSs2wc7cOrdrd8xPV1A@mail.gmail.com>
References: <CAKShX4BiuLvT02z9=jR=eqCZLbfb54HWu_sKQU5ni+L7fhjhgQ@mail.gmail.com>
 <149ae987-cb1f-04d0-dcd6-784b0666f970@gmail.com>
 <CAKShX4Dr8RS0OTwWbmn+RvSDvVtJ-jARSs2wc7cOrdrd8xPV1A@mail.gmail.com>
Message-ID: <CAD4oTHH+pCHKQXui8fNpbeALqfCgmwYo+35FpVBaG4UAFvj0+A@mail.gmail.com>

Hi Josh,

There are a few issues I can think of with this. The primary one is that
CRAN(/Bioconductor) is not the only place one can install packages from. I
might have version x.y.z of a package installed that was, at the time, a
development version I got from github, or installed locally, etc. Hell I
might have a later devel version but want the CRAN version. Not common,
sure, but wiill likely happen often enough that install.packages not doing
that for me when I tell it to is probably bad.

Currently (though there has been some discussion of changing this) packages
do not remember where they were installed from, so R wouldn't know if the
version you have is actually fully the same one on the repository you
pointed install.packages to or not.  If that were changed  and we knew that
we were getting the byte identical package from the actual same source, I
think this would be a nice addition, though without it I think it would be
right a high but not high enough proportion of the time.

R will build the package from source (depending on what OS you're using)
> twice by default. This becomes especially burdensome when people are using
> big packages (i.e. lots of depends) and someone has a script with:
>


install.packages("tidyverse")
> ...
> ... later on down the script
> ...
> install.packages("dplyr")
>

I mean, IMHO and as I think Duncan was alluding to, that's straight up an
error by the script author. I think its a few of them, actually, but its at
least one. An understandable one, sure, but thats still what it is. Scripts
(which are meant to be run more than once, generally) usually shouldn't
really be calling install.packages in the first place, but if they do, they
should certainly not be installing umbrella packages and the packages they
bring with them separately.

Even having one vectorized call to install.packages where all the packages
are installed would prevent this issue, including in the case where the
user doesn't understand the purpose of the tidyverse package. Though the
installation would still occur every time the script was run.


The last thing to note is that there are at least 2 packages which provide
a function which does this already (install.load and remotes), so people
can get this functionality if they need it.


On Fri, Nov 8, 2019 at 11:56 AM Joshua Bradley <jgbradley1 at gmail.com> wrote:

>
>
> I assumed this list is used to discuss proposals like this to the R
> codebase. If I'm on the wrong list, please let me know.
>

This is the right place to discuss things like this. Thanks for starting
the conversation.

Best,
~G

>
>

	[[alternative HTML version deleted]]



[Rd] improving the performance of install.packages
Gabriel Becker