Skip to content

[Bioc-devel] biocLite should warn when called from a non-current R version

15 messages · Simon Anders, Laurent Gautier, Hervé Pagès +4 more

#
Hi

I would like to suggest the floowing change to the biocLite.R script: As 
soon as it is sourced, it should check whether the R interpreter it is 
running in has at least the current major version number, and if not, 
display a conspicious warning such as

"WARNING: You are not using a current version of R.The 'biocLight' 
script will there NOT install packages from the current Bioconductor 
release but from the old release matched to your R version!
Please consider updating R to version [current version] to ensure that 
you are working with up-to-date packages."


Background: More than two years ago, I changed the name of a function in 
DESeq. Since then, and until today, I get an e-mail at least every other 
week from a user asking why the function 'estimateDispersions' mentioned 
in the vignette seem to be missing.

This shows that there are huge numbers of users out there who use an old 
R version and are unaware that biocLite will not give them current 
package versions.

I am sure I am not the only package maintainer battling with this. Such 
a warning would not only reduce my ennui of having to explain 
Bioconductor's versioning policy over and over but also keep many users 
from unknowingly working with outdated software.

Fortunately, the fact that users always source the biocLite.R script 
right from the web server gives us the unique opportunity to make this 
change such that it affects existing old R installations.

   Simon
#
I support this.

A notice that there is a newer version available is something a number 
of users would almost expect (since a number of the applications they 
use probably already do so), and would be in aligned with the 
bioconductor effort to reach the widest possible audience.

However, users should also be warned that updating R might break or 
change the behaviour of code they currently have working. A pointer to 
documentation about how to run several versions of R on a system would 
also be welcome. Otherwise the result could be that you just change the 
content of the annoying emails you receive to "my analysis scripts 
suddenly stopped working, what happened ?".


L.
On 06/19/2013 11:07 PM, Simon Anders wrote:
#
On 06/19/2013 02:24 PM, Laurent Gautier wrote:
As a message (not warning or error), how about

   New features are available in Bioconductor version 2.12, R version 3.0.1.
   See http://bioconductor.org/install

and if the instructions / dire consequences at http://bioconductor.org/install 
are not sufficient then we can update that

  
    
#
Hi
On 19/06/13 23:44, Martin Morgan wrote:
I see Laurent's point, but this message would not be helpful. The fact 
that biocLite.R does not pull the newest package version available is 
unusual, surprising, and a policy rather unique to Bioconductor. Hence 
it is something that even an otherwise computer-savvy user will 
appreciate being warned about. The fact that updating a system can break 
things, however, is common. Furthermore, any user attempting to update 
his R version will nearly automatically discover that his old R does not 
disappear if he does not actively delete it.

So, what about removing the advice to update but leaving in the warning:

"Warning: The biocLite function will NOT install the most recent release 
versions of Bioconductor packages because you are not using a current R 
version. Please see http://... for more information."

This brings me to another issue: How should a newcomer to Bioconductor 
know that Bioconductor releases are tied to R versions and that biocLite 
will always pull packages from the Bioconductor release matched to the 
used R version rather than from the current Bioconductor release?

The page at http://bioconductor.org/install/ does _not_ mention this 
important fact! Could somebody please fix this?

   Simon
#
Hi,

I support this too.
On 06/19/2013 02:44 PM, Martin Morgan wrote:
More important than new features, using the latest version of BioC gives
you the only version that is currently *supported*. I think the message
should stress that.

My $0.02

H.

  
    
#
On 06/19/2013 03:01 PM, Simon Anders wrote:
I moved a little on the wording

New features require Bioconductor version 2.12, R version 3.0.1; your
versions are 2.11 and 2.15.3. See http://bioconductor.org/install.

but won't elevate this to a warning or include language about what is supported 
(although I appreciate the value of both of these suggestions, thanks). The 
install page tries to be more explicit about the connection between R / Bioc 
version (remember that R is on a yearly release cycle, so it's no longer one-R 
one-Bioc). I haven't incorporated text about how to manage multiple R instances 
(I don't think I could do justice to this, and it's more of an R issue anyway; 
probably there should at least be a caution).

I'm wondering why my iphone hasn't told me to update my nytimes app.

Thanks for the suggestions.

Martin

  
    
#
Hi Martin,
On 06/19/2013 05:21 PM, Martin Morgan wrote:
I think people want to make sure they're using the latest version.
Using the latest version of course means new features, bug fixes, speed
improvements, changes in the API, a new shinny color scheme, etc...
If you really want to keep this message as short and discrete as
possible (I wonder why you'd want that), then I think it's important
to mention those 3 words: new version available.

 From the above message I can guess that this means I won't be
installing the latest version but why not be straightforward and just
say it? Also I'm not totally sure those new features are ready yet,
I mean, maybe the message is just suggesting me to install a
devel/alpha/beta/unstable version of BioC or something like that.

H.

  
    
#
On 06/19/2013 09:15 PM, Herv? Pag?s wrote:
Thanks Herve for your comments. I tried 'your out-of-date versions are...' and 
similar, but to me that (also flagging this as a 'warning') sounded too 
heavy-handed; there are good reasons (e.g., consistency) why one might want to 
stick with an out-of-date version. Also I used 'available' (hence the trifecta 
'new', 'version', 'available') initially (also 'Bioconductor version 2.12 now 
available, see...', I think this would be a reasonable alternative to the 
current message), but 'require' seemed to be more forceful and to address 
Simon's concern (without saying 'n.b. to users of DESeq, estimateDispersions 
requires Bioconductor version...' ;) that users mistakenly expect new features 
to exist in old releases.

It's easy to make changes to the message, so keep the suggestions coming. I 
might not say no to all of them.

Martin

  
    
#
Martin,

Just to make sure we are on the same page, we are talking about
the message we get when we source http://bioconductor.org/biocLite.R
(as Simon suggested), not the message we get when loading the
BiocInstaller package and/or everytime we use biocLite().

So it's a one time thing. IMO it can be loud. If people miss it, they
won't see it again...

Almost any app those days (not only smart phone apps, but apps in
general) will notify the user when a new version of the app is
available. The wording is almost always the same (something like
"a new version of the software is available") and everybody knows
that this means less features, more bugs, a more restrictive
license, more memory requirements, etc... ;-)

H.
On 06/19/2013 10:50 PM, Martin Morgan wrote:

  
    
#
On 06/19/2013 11:17 PM, Herv? Pag?s wrote:
yes we're talking about the same thing. I suspect most people still 
source("http://bioconductor.org/biocLite.R"); biocLite() rather than 
BiocInstaller::biocLite() (that's what most of the documentation says, after 
all, and it's not an incorrect way of updating...), so it's not really a 
one-time thing. Certainly

   Bioconductor version 2.12 now available, see http://bioconductor.org/install

is a reasonable and more direct alternative.

  
    
#
Hi Martin

good to see that Herve agrees with me, and I reiterate my point, because 
I consider this issue very important.

The average user does _not_ expect that a function like 'biocLite', 
which has the express purpose of downloading and installing packages, 
does not pull the newest package. I know that to you, as an an 
experienced Bioc person, this has become second nature, but believe me: 
It is unusual and very surprising for anybody used to other systems.

The message hence has to very clearly and unambiguously state the 
following fact: "The biocLite function will NOT install the most recent 
released versions of Bioconductor packages."

I insist that this should be mentioned in this direct manner. Your 
formulation may imply it to the careful reader but not to a user in a 
hurry. Merely mentioning that there are newer versions will _not_ bring 
across the point that calling the biocLite installation script will not 
install these!

I really do not see the problem with saying clearly that biocLite will 
not pull the newest version. Is this something we are ashamed of and 
don't want to admit straight out?

And I frankly see no need to warn users already in this message that 
updates can break existing workflows. Everybody who has ever used any 
software knows this.

   Simon
#
Hi

I second improving the awareness of users about new Bioc releases and
also personally do not mind loud messages while I am
installing/upgrading packages, even if it is each time I source/run
biocLite(). Indeed for old releases that I maintain for old projects
very rarely have to install a new package.

Cheers,
Diego
On Thu, Jun 20, 2013 at 3:50 PM, Martin Morgan <mtmorgan at fhcrc.org> wrote:
#
Martin, Herve, Simon, et al,

i see a straightforward approach without the need to change biocLite() 
or BiocInstaller behavior. what about every package deciding in loading 
time to tell or not the user whether he/she should be using the latest 
version of the package, if he/she is not using it?

the following code could be adapted to each mantainer's taste.

.onAttach <-
     function(libname, pkgname)
{

pkgDate <- as.Date(gsub(" .+", "", 
packageDescription("DESeq")$Packaged), "%Y-%m-%d")

monthsdif <- round(as.integer(Sys.Date()-pkgDate)/(365.25/12))

if (monthsdif > 6)
   message("your preferred rant here.")
}

the code assumes that each BioC release occurs exactly every 6 months, 
that the package was built at BioC and that the system date of the user 
is correct.


cheers,

robert.
On 06/20/2013 08:50 AM, Martin Morgan wrote:

  
    
#
Hi,
there is benefit in having newest versions, but I think we shouldn't get carried away, and find Martin's suggestion reasonable. I don't want to be told to go get an iPhone 5 every time I update an app on my iPhone 4 - even if that same app would work much better there. People may have legitimate reasons to run an 'old' R, and we are not the version police.

Simon, I very much sympathise with your frustration about thoughtless or ignorant user questions, and I suppose you hope that this proposed change will provide a quick fix. I would have said something different above if I shared that hope, but I am not sure it would make much difference to them in practice: many would not follow that message even it were in ALL CAPS ALL ACROSS THEIR SCREEN. And at the same time shouting at people who know what they're doing is not a desirable approach.

	Best wishes
	Wolfgang
On Jun 20, 2013, at 9:03 am, Simon Anders <anders at embl.de> wrote:

            
#
Hi

however unlike an iphone Bioconductor is only (as far as I know)
supported for the current release. We all do our best to help users
when they find problems and in most cases when I have suggested they
upgrade they have done so- solving their problems. If they were more
aware of being using an unsupported outdated version of Bioconductor
then they will- at least- have the opportunity of making a reasoned
decision- maybe even upgrade before asking. Indeed people having
legitimate reasons to run an outdated version do understand they are
running an outdated version and so will ignore those messages. As for
getting a message/warning when updating packages, now it is not a
clean, message-free process already. Adding useful information will
not make it significantly cluttered in my opinion. I agree with those
that think the shortest and the most explicit the best. My suggestion:

"NOTE: You are running an outdated (unsupported) version of
Bioconductor {show versions}. Consider upgrading your system to get
all the new features and bug fixes. Please take a look at {URL} for
details."

or similar. And include details about the implications (methods,
possible incompatibilities, etc) of doing so in the URL.

All the best,
Diego
On Fri, Jun 21, 2013 at 12:21 AM, Wolfgang Huber <whuber at embl.de> wrote: