[Bioc-devel] BiocInstaller: next generation

Martin Morgan m@rtin@morg@n @ending from ro@wellp@rk@org
Fri May 18 16:00:12 CEST 2018


On 05/18/2018 03:28 AM, Neumann, Steffen wrote:
> Hi,
> 
> On Wed, 2018-05-09 at 18:11 -0400, Martin Morgan wrote:
>>
>> ...
>>     - version() version of Bioconductor in use
>>     - valid() are all Bioconductor packages from the same
>> Bioconductor
>> version?
> 
> I'd like to challenge the concept of the release
> and the pretty strong term valid(). I think BioC
> is the only R package repository that has the release concept,
> and this is good to have a consistent well tested environment
> of packages for a given R version. It is also great to pick
> the most recent package version within a release for installation,
> but that also prevents installing a package newer than
> the one tied to the R version at hand.
> 
> But R already has the concept of versioned dependencies,
> so in theory we wouldn't /need/ the release concept.

The version management in R itself is not up to this task, e.g., there 
is no transparent way to install archived packages and their dependencies

   https://hypatia.math.ethz.ch/pipermail/r-help/2018-May/454482.html

or to manage multiple versions of a single package

   https://support.bioconductor.org/p/108656/#108965

in base R.

There is no discipline amongst package developers to manage dependencies 
either initially or over the long tenure of a package in Bioconductor. 
This is not helped by open-ended promises like 'Biobase (>= x.y.z)', 
which is a very optimistic statement about the backward compatibility of 
future versions of Biobase.

So theory and practice are unfortunately diverged.

> 
> I'd like to suggest to make it easier to shoot yourself
> into the foot by installing less tested combinations

> of R and BioC packages, and to support installing
> 
> 	BiocManager::install(X, version=0.8.15)
> 	BiocManager::install(X, release=3.8)
> 	BiocManager::install(X, release=devel)
> 
> i.e. a package from a given BioC release, or a specific version
> of a package, regardless from which release it comes.
I guess there are so many ways to shoot oneself in the foot that it is a 
wonder that we still have feet! I'm with Jim on this one...

> The valid() is a bit unspecific name, what is probably meant here
> is BiocManager::tainted(), which indicates that packages come
> from different BioC versions, and all hell might break loose
> and it'll eat your kittens.
...and a minor thing is that striving for the positive result of valid() 
is more appealing than the negative of tainted().

And a plug for some feature creep I introduced the other day

   BiocManager::available("BSgenome.*(musculus|sapiens)")

Martin

> This also means that Package developers would ask for the tainted()
> status in bug reports, and (c|sh)ould refuse help for unsupported
> combination. It also means that packagers would have to be more careful
> with the versioned dependencies, and supply minimal versions.
> If they give a versioned dependency on the Biobase,
> they essentially forbid installing on old BioC releases,
> which would be fine.
> 
> Just my 2c,
> 
> Yours,
> Steffen
> 


This email message may contain legally privileged and/or...{{dropped:2}}



More information about the Bioc-devel mailing list