[Bioc-devel] Wish: BioC devel on R stable for more frequent package updates

Henrik Bengtsson hb at stat.berkeley.edu
Thu Jan 10 21:41:42 CET 2008

Hi Robert,

On 10/01/2008, Robert Gentleman <rgentlem at fhcrc.org> wrote:
> Hi Henrik and others,
> Henrik Bengtsson wrote:
> > Hi.
> >
> > On 07/01/2008, Wolfgang Huber <huber at ebi.ac.uk> wrote:
> >> Dear all,
> >>
> >> I like the suggestion a lot but...:
> >>
> >> I guess the main problem is that the daily checks in Seattle are run on
> >> R-devel and there is no easy way to make sure that a package also runs
> >> on a different version of R. Basically Henrik's proposal shifts the
> >> burden of testing that packages pass R CMD check and R CMD INSTALL on
> >> all the possible versions of R that their "Depends" field allows (and
> >> all platforms) to the individual maintainer. And I am not sure whether
> >> everybody is ready for that, or whether it is an efficient use of our time.
> >
> > I would like to clarify that the package should still pass the daily
> > builds/checks on the BioC servers which still run R devel.  This is
> > the only reasonable alternative.  So far nothing changed.  Same
> > requirement as before.
>    In that case, I am a bit confused about what your request really is.
> If the devel version of your package works with R-devel, then that is
> fine and in accord.  If it also happens to work with R-release that is
> great too.  Anyone that wanted to use it could install it and see
> whether or not it worked.

Yes, this basically comes down to the problem of installing a
BioC-devel package on R release.  I've wrote my own hack allowing to
"fool" biocLite() et al. about the real R version, e.g. biocLite(pkg,
rver="2.7.0") can be used on R v2.6.1 but biocLite() thinks it runs R
v2.7.0.  This is of course a hack.  It is probably better to have a
biocLite(pkg, repos="auto") where 'repos' defaults to BioC release and
devel depending on R version, but can be also be specified explicitly
as biocLite(pkgm repos="devel") to force installation of a BioC-devel

> I don't think it would be a good idea to have
> a separate test paradigm for devel packages against release R (and that
> is the only way I can see for a user to know which packages do work in
> R-release).

I agree.  I like the existing test paradigm.  The only alternative is
then to trust the developer that a package really install/pass checks
on R release if they claim so - the same problems goes with CRAN
packages where you easily can claim compatibility with R v1.0.0 but
the package is only tested against the latest version.

>   The reason we have separated out release and devel, is in part to
> reduce the amount of legacy code we need to support (resources are very
> limited).  But it is also designed to allow us to take advantages of
> changes in R (we changed CHARSXP handling not that long ago) without
> interfering in any way with the users of release.  Before we did that
> the user experience was a lot less uniform, so we are loath to change
> back to a situation where users were having more problems.

That update in R (and BioC) would have caused problem for installing
BioC devel on R release, but not for all packages.  Packages written
in plain R would probably show difference.

>   I would sooner see you put some new functionality in BioC-release and
> maintain the synchronization of R-release - BioC-release or R-devel and
> BioC-devel.
> >
> > Yes, if the package also pass checks on R release and that is set in
> > "Depends", then the BioC servers cannot test that as well.  It will be
> > something the maintainer has to verify.  However, since it pass the
> > checks on R devel the package still meets the requirement for BioC
> > devel (on R devel).  The downside is that there is a risk for a
> > package to be broken on R stable but not R devel, which happens in
> > case the developer makes a commit without checking it on R stable.
> > (Indeed, we have the devel version of affxparser depending on R stable
> > as we speak)
>   I am not sure what that means, but if it means that affxparser does
> not build against R-devel, then that is unfortunate.

No, I meant that it installs/builds on R devel, but also R release.  I
just realized that 'affxparser' was a poor example because there is
currently an error due to a totally unrelated problem.

> >
> > The burden of checking a package is only on those developers who have
> > R stable in "Depends" in their BioC devel packages.  Anyone who don't
> > want to do that and stick with the current approach, just have to make
> > sure R devel is in "Depends".  ...or did I miss something?
>    I don't think you can do that. You either need to say
>     R=xxx or R >= xxx, and if you use the first, then for a devel
> package it had better be R-devel that is being specified, or it will
> fail our builds since we build with R-devel.  In the second case, then
> we test against R-devel (even if R-release is specified) on the devel
> arm.  Users are free to try and see what does or does not install, but
> there are no tools that I can see how we can easily operationalize to
> let them discriminate between a developer who has the intention you
> have, and one who merely forgot to update.

But there are package that build and pass checks on both R release and
R devel - correct me if the BioC check system works differently.  The
package should be tested on R devel, but may install on R stable (and
there we have to trust the developer since no nightly tests are done
for that version).

What I am suggesting that it should be possible to provide a BioC v2.2
(devel) package as:

Package: FooBar
Version: 1.2.3
Date: 2008-01-10
Title: A Package
Depends: R (>= 2.6.0), Biobase (>= 1.16.2)

and provide an easy way to install it on R v2.6.0 (release) as well.

>    You will also get in no end of trouble with automatic tools like
> update.packages as there is no easy way to distinguish what repository
> to use, on a per package basis.  So users that want those tools are
> going to either get all release, all devel, or have to write extra code
> for intermediate work.

I am not familiar with how update.packages() works and how it
identifies the repository to query.  Are you saying that if you mix
BioC devel and release packages, it is not well defined what
repository update.packages() will use?

>    And finally, R devel and BioC devel are not that unstable, that one
> cannot find a version that works and can be used with relatively little
> effort.

It all comes down to the fact that people shouldn't have to install R
devel and BioC devel just because there is a single package that is
frequently updated (and still compatible with R devel).  I believe my
suggestion can be solved by updating biocLite() et al.

Hope this clarified my proposition.



>    Please correct me if I have gotten the wrong impression somewhere
> along the way.
>   best wishes
>     Robert
> >
> > Best,
> >
> > Henrik
> >
> >>
> >> Best wishes
> >>    Wolfgang
> >>
> >> ------------------------------------------------------------------
> >> Wolfgang Huber  EBI/EMBL  Cambridge UK  http://www.ebi.ac.uk/huber
> >>
> >> Henrik Bengtsson wrote:
> >>> Hi,
> >>>
> >>> I'm quite sure something similar to the below has been discussed
> >>> before.  I've got aroma.affymetrix
> >>> (http://www.braju.com/R/aroma.affymetrix/) and I am thinking of making
> >>> it available on Bioconductor trying to meet the following:
> >>>
> >>> 1) The package is designed to work with the release version of R
> >>> (v2.6.x) in order to be more user friendly (and more stable).
> >>> 2) The package is frequently updated (a few times a month).
> >>> 3) Users should be able to run it on R release (or R devel, if they
> >>> are in that league).
> >>> 4) Users should be able to use other BioC release package (or BioC
> >>> devel packages,
> >>> if they are in that league).
> >>>
> >>> I'm currently providing the above via my own repository using standard
> >>> R installation mechanisms.  However, the BioC release/devel repository
> >>> system does not support the above, because:
> >>>
> >>> A) BioC release should not be updated beyond bug fixes and minor updates.
> >>> B) The BioC devel branch requires R devel.
> >>>
> >>> What are the objectives for strictly enforcing R devel on BioC devel?
> >>> Couldn't the latter requirement, which is mostly an installation
> >>> script requirement, instead be taken care of by the regular package
> >>> dependencies?  That is, you can put a package in BioC devel that
> >>> depends on R stable and as long as other package dependencies install
> >>> on R stable, then everything should be fine (relying on the standard R
> >>> installation mechanisms).  For example, if Biobase requires R devel,
> >>> then all packages depending on it will also need R devel, but
> >>> non-Biobase packages will not "inherit" that dependency on R devel.
> >>> Nightly builds and checks can still be done on R devel, meaning a BioC
> >>> devel package should install on R devel, but may also install on R
> >>> stable.
> >>>
> >>> Best,
> >>>
> >> --
> >>
> >
> > _______________________________________________
> > Bioc-devel at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/bioc-devel
> >
> --
> Robert Gentleman, PhD
> Program in Computational Biology
> Division of Public Health Sciences
> Fred Hutchinson Cancer Research Center
> 1100 Fairview Ave. N, M2-B876
> PO Box 19024
> Seattle, Washington 98109-1024
> 206-667-7700
> rgentlem at fhcrc.org

More information about the Bioc-devel mailing list