Skip to content

[Bioc-devel] support the stable version of R

7 messages · Lulu Chen, Martin Morgan, Alexey Sergushichev +2 more

#
Dear all,

When submitting package to bioconductor, it is required to change R version
in "Depends" to be >= the develop version (3.6) . As my package is also
available in GitHub, someone asks if it be possible to make it available
with the stable version of R (R3.5). In fact, my package can work well with
R3.5 if I change "Depends" back to R(>=3.5) .

So I hope to support R3.5 for the moment before next release. Should I
create another repository? Can I use a branch to support R3.5?

Thanks,
Lulu
#
Remember that Bioconductor packages are tested nightly on our build system, and this nightly testing is an important component of offering your users a stable environment, not just for your package but the other packages they use. Recreating this standard environment is facilitated by the standard Bioconductor package installation instruction

  BiocManager::install("YourPackage")

The nightly builds are done on a platform where all packages are from the same Bioconductor release, built on the same version of R. Your newly accepted package is in the '3.9' version of Bioconductor, which uses the 3.6 version of R. It follows that the best user experience is provided to those using R 3.6. By 'allowing' R 3.5 and non-standard installation (e.g., from github) you are ultimately compromising the quality standards of Bioconductor and the experience of the users of your package. The support site has many questions from people who install packages from different Bioconductor versions, so it is clearly not in your interest, or the Bioconductor project interest, or your user's interest, to enable this kind of usage.

It is hard to see into the future, so saying something like R >= 3.5 is really quite bold! Conversely, packages with out-of-date promises like R >= 2.1 are not tested on the systems they claim compatibility with, and can be easily broken on old versions of R where their dependencies are no longer available.
#
Maybe a little more helpfully, I think you should create a branch for 'before' Bioconductor, where you can specify R version dependency as you see fit.

Indeed, at each release the version of your package at git.bioconductor.org will have a branch created for that release, e.g., the RELEASE_3_8 branch, and you will want to sync that branch with your github repository as outlined in step 10 of https://bioconductor.org/developers/how-to/git/sync-existing-repositories/ . 

A conscientious developer would take the opportunity to increment the version dependency of R in the master branch to the version of R in use in the devel builds of Bioconductor.

Martin

?On 1/14/19, 5:40 PM, "Bioc-devel on behalf of Lulu Chen" <bioc-devel-bounces at r-project.org on behalf of luluchen at vt.edu> wrote:

    Dear all,
    
    When submitting package to bioconductor, it is required to change R version
    in "Depends" to be >= the develop version (3.6) . As my package is also
    available in GitHub, someone asks if it be possible to make it available
    with the stable version of R (R3.5). In fact, my package can work well with
    R3.5 if I change "Depends" back to R(>=3.5) .
    
    So I hope to support R3.5 for the moment before next release. Should I
    create another repository? Can I use a branch to support R3.5?
    
    Thanks,
    Lulu
    
    
    _______________________________________________
    Bioc-devel at r-project.org mailing list
    https://stat.ethz.ch/mailman/listinfo/bioc-devel
#
Martin,
version of R as a criterion for your package, is really a mis-nomer for a
Bioconductor package -- of course it uses R, and the version of R in use
determines the Bioconductor version(s) that can be used! So a rational
change is to remove R and its version requirement from the DESCRIPTION file
entirely, a strategy taken by I think about 400 of our 1650+ packages.

Oh, it's actually an option not to include an R dependency at all. I find
it non-obvious, given the warning message that suggest to change the
version dependency to R-devel, not mentioning that omitting dependency will
fix the warning too. Should it be put somewhere in BiocCheck message?

Also, given that, I find it even more strange to have such R requirement in
BiocCheck. You are either allowed very strict dependency: R >= R-devel or
very lenient (not specifying any), but nothing in the middle.

Best,
Alexey



On Tue, Jan 15, 2019 at 3:03 AM Martin Morgan <mtmorgan.bioc at gmail.com>
wrote:

  
  
#
Probably my rant yesterday was a bit confused.

BiocCheck tries to encourage better practice. If you've chosen to specify version (maybe there are reasons for this, e.g., because in the past you have distributed your package through non-Bioconductor channels), then specify it correctly.

On the other hand, the Bioconductor release model doesn't require a version specification and in practice maintainers do a poor job updating this information. If the maintainer hasn't specified version, then no need to suggest that they do so.

I guess it's analogous to many other tests where guidance is provided on mis-use, rather than on non-use -- 'we notice that you didn't test for class, but if you had a better approach is to use `is()` rather than `class() == `'. Or perhaps suggesting straight-forward solutions rather than nuanced solutions of uncertain merit  'instead of testing for class incorrectly with `class() == `, use method dispatch to avoid conditional code'.

Again, a best practice for github and other repositories outside Bioconductor is likely to maintain distinct release branches. If one is choosing to specify version, then each branch should closely specify relevant version.

Martin
?On 1/15/19, 2:45 AM, "Alexey Sergushichev" <alsergbox at gmail.com> wrote:
Martin,
    
    
    > Having said that, I'll note that specifying R as a dependency, and a version of R as a criterion for your package, is really a mis-nomer for a Bioconductor package -- of course it uses R, and the version of R in use determines the Bioconductor
     version(s) that can be used! So a rational change is to remove R and its version requirement from the DESCRIPTION file entirely, a strategy taken by I think about 400 of our 1650+ packages.
    
    
    Oh, it's actually an option not to include an R dependency at all. I find it non-obvious, given the warning message that suggest to change the version dependency to R-devel, not mentioning that omitting dependency will fix the warning too. Should it be
     put somewhere in BiocCheck message?
    
    
    Also, given that, I find it even more strange to have such R requirement in BiocCheck. You are either allowed very strict dependency: R >= R-devel or very lenient (not specifying any), but nothing in the middle. 
    
    
    Best,
    Alexey
On Tue, Jan 15, 2019 at 3:03 AM Martin Morgan <mtmorgan.bioc at gmail.com> wrote:
Maybe a little more helpfully, I think you should create a branch for 'before' Bioconductor, where you can specify R version dependency as you see fit.
    
    Indeed, at each release the version of your package at 
    git.bioconductor.org <http://git.bioconductor.org> will have a branch created for that release, e.g., the RELEASE_3_8 branch, and you will want to sync that branch with your github repository as outlined in step 10 of
    
    https://bioconductor.org/developers/how-to/git/sync-existing-repositories/ <https://bioconductor.org/developers/how-to/git/sync-existing-repositories/> . 
    
    A conscientious developer would take the opportunity to increment the version dependency of R in the master branch to the version of R in use in the devel builds of Bioconductor.
    
    Martin
    
    ?On 1/14/19, 5:40 PM, "Bioc-devel on behalf of Lulu Chen" <bioc-devel-bounces at r-project.org on behalf of
luluchen at vt.edu> wrote:
Dear all,
    
        When submitting package to bioconductor, it is required to change R version
        in "Depends" to be >= the develop version (3.6) . As my package is also
        available in GitHub, someone asks if it be possible to make it available
        with the stable version of R (R3.5). In fact, my package can work well with
        R3.5 if I change "Depends" back to R(>=3.5) .
    
        So I hope to support R3.5 for the moment before next release. Should I
        create another repository? Can I use a branch to support R3.5?
    
        Thanks,
        Lulu
    
    
        _______________________________________________
        Bioc-devel at r-project.org mailing list
        
    https://stat.ethz.ch/mailman/listinfo/bioc-devel <https://stat.ethz.ch/mailman/listinfo/bioc-devel>
    
    _______________________________________________
    Bioc-devel at r-project.org mailing list
    https://stat.ethz.ch/mailman/listinfo/bioc-devel
#
Maybe worth including under 

https://bioconductor.org/developers/package-guidelines/#description

-> 8. ?Depends/Imports/Suggests/Enhances:? fields: --> Depends
#
Good day,

R's checking may encourage a dependency on R to be placed in the DESCRIPTION file, based on examining the data files distributed with the package. For ClassifyR, I get a warning if the dependency is absent.

* checking data for ASCII and uncompressed saves ... WARNING
  Warning: package needs dependence on R (>= 2.10)

--------------------------------------
Dario Strbenac
University of Sydney
Camperdown NSW 2050
Australia