[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