[R-pkg-devel] nit-picking about CRAN repository policy

Ben Bolker bbo|ker @end|ng |rom gm@||@com
Sun May 8 01:30:23 CEST 2022



On 2022-05-07 7:17 p.m., Duncan Murdoch wrote:
> On 07/05/2022 6:43 p.m., Ben Bolker wrote:
>>
>>     Folks,
>>
>>     CRAN has recently set up an auxiliary 'noSuggests' test platform that
>> tests that packages are using suggested packages conditionally, as
>> recommended in Writing R Extensions, and as (sort of) specified in the
>> CRAN repository policy.
>>
>>     Specifically, the CRP (revision 5236) says:
>>
>>   > A package listed in ‘Suggests’ or ‘Enhances’ should be used
>> conditionally in examples or tests if it cannot straightforwardly be
>> installed on the major R platforms. (‘Writing R Extensions’ recommends
>> that they are always used conditionally.)
>>
>>     One of my packages failed on the 'noSuggest' test platform
>> <https://www.stats.ox.ac.uk/pub/bdr/noSuggests/bbmle.out> because two
>> suggested packages were used unconditionally in the vignette. There are
>> two reasons (IMO) that this should *not* have triggered a threat of
>> archiving:
>>
>>     (1) the unconditional package use was in a vignette, not in examples
>> or tests
>>     (2) the relevant packages (AICcmodavg and MuMIn) are available on
>> CRAN and install easily on Linux/Windows/MacOS (they are R-only, no
>> compiled code or extra requirements, binaries are available on CRAN).
>>
>>      Is it worth suggesting to CRAN maintainers that either they refine
>> their 'noSuggests' test so that it conforms to the wording in the CRP,
>> or that they change the CRP wording to something stricter like
>>
>>   > Any package listed in ‘Suggests’ or ‘Enhances’ should be used
>> conditionally in examples, tests, and vignettes.
> 
> I wouldn't think it's worth the time, but you could submit a suggested 
> patch to them if you feel like it.
> 
> Personally I'd take a more extreme position than theirs:  your package 
> should check without errors if any subset of the Suggests packages is 
> installed.  This isn't practical to test, but "all" and "none" is at 
> least something.
> 
> With vignette formats based on knitr, it's very easy to implement this. 
>   Just add a code chunk at the beginning with code like this:
> 
>    if (!requireNamespace("sug1") ||
>        !requireNamespace("sug2")) {
>      warning(call. = FALSE, "This vignette requires sug1 and sug2 to be 
> installed")
>      knitr::knit_exit()
>    }
> 
> I don't know if other vignette engines make it so easy to bail out, but 
> they should.
> 
> Duncan Murdoch


   Thanks.

   Fixing the problems isn't difficult or unreasonable (I will do it in 
a more subtle way, running chunks of code conditionally). I'm just 
feeling a little bit grumpy/defensive because:

  * CRAN  asked me to submit a patched version before May 7
  * I submitted a patched version to CRAN at 7:30 PM local time on May 6 
(which is admittedly May 7 in UK/European time)
* I woke up to an e-mail from CRAN to me and 50 downstream package 
maintainers saying that my package was scheduled for archiving, and a 
concerned message from a downstream package maintainer ...

   cheers
    Ben B.



More information about the R-package-devel mailing list