Welcome to the sixteenth post in the relatively random R related series of posts, or R4 for short.
This one will likely be brief. But it is one post I have been meaning to get out for a little while—yet did not get around to. The meta point I am trying to make today is that despite overwhelming odds that may indicate otherwise, it can actually pay off to have voice or platform. Or, as I jokingly called it via slack to Josh: complaining works. Hence the title.
There are two things I have harped about over the years (with respect to R), and very recently (and almost against all odds) both changed for the better.
Rscript. There was a of course little bit of pride and personal ownership involved as Jeff Horner and I got the first command-line interface to R out: littler with its
r tool. As I recall, we beat the release of
Rscript (which comes with R) narrowly by a few months. In any event, the bigger issue remained that
Rscript would always fail on code requiring the
methods package (also in base R). The given reason was load time and performance were slower due to the nature of S4 classes. But as I once blogged in jest, littler is still faster at doing nothing even though it always loaded
methods—as one wants code to behave as it does under an interactive R session. And over the years I must have answered this question of “Why does Rscript fail” half a dozen times on the mailing lists and on StackOverflow. But now, thanks to Luke Tierney who put the change in in early January, R 3.5.0 we will have an
Rscript that behaves like R and includes
methods by default (unless instructed otherwise, of course). Nice.
Second, an issue I bemoaned repeatedly concerned the (at least to my reading) inconsistent treatment of
Depends: in the Writing R Extensions manual on the one hand, and how CRAN did (or, rather, did not) enforce this. In particular, and as I argued not quite a year ago, Suggests != Depends. In particular, tests should not just fail if a suggested package was not present (in the clean-room setup used for tests). Rather, one should make the tests conditional on this optional package being present. And this too now seems to be tested as I was among the recipients of one of those emails from CRAN requiring a change. This one was clear in its title and mission: CRAN packages not using microbenchmark conditionally. Which we fixed. But the bigger issue is that CRAN now seems to agree that Suggests != Depends.
So the main message now is clear: It seems to pay to comment on the mailing lists, or to write a blog post, or do something else to get one’s reasoning out. Change may not be immediate, but it may still come. So to paraphrase Michael Pollan‘s beautiful dictum about food: “Eat food. Not too much. Mostly plants.”, we could now say: “Report inconsistencies. Present evidence. Be patient.”