Dear rOpenSci friends, it’s time for our monthly news roundup!
You can read this post on our blog.
Now let’s dive into the activity at and around rOpenSci!
rOpenSci HQ
Open Science and Open Source only with Diversity, Equity, Inclusion, and Accessibility
Including all of humanity is and always will be at the heart of open science.
Read more about our mission in our blog post.
Mark Padgham is now Software Review Lead
Mark Padgham is now lead for software peer review. Noam Ross, the former lead, became Executive Director last year.
New rOpenSci Champion(a|e)s Program cohort
We have great news! We will have a new cohort of our Champion(a|e) Program during 2025!
Our program seeks to identify, recognize, and reward individuals who are leaders in an open science community, research software engineering, and the R programming community.
This year’s program, thanks to funding by CZI, is focused on people from Latin America and will be conducted entirely in Spanish.
This program is an incredible platform for developing your open-source project with expert support, interacting, sharing, and strengthening a network with other people determined to develop open and reproducible science in your part of the world.
Stay tuned for our announcement of the opening call to apply as a champion or mentor and join a global community of people using and developing scientific and open-source software.
“This is Tech Talks” episode with Yanina Bellini Saibene
Yanina Bellini Saibene was interviewed by Santosh Yadav about her role as rOpenSci community manager.
Watch the recording.
“From Novice to Contributor” on the R Weekly Highlights podcast
Our community call “From Novice to Contributor: Making and Supporting First-Time Contributions to FOSS” with Yi-Chin Sunny Tseng, Pascal Burkhard, Yaoxiang Li, Hugo Gruson was featured in the R Weekly Highlights podcast hosted by Eric Nantz and Mike Thomas.
Coworking Mini-hackathons
Read all about coworking!
Join us for our second Coworking Mini-Hackatho for First-Time Contributors.
If you’re curious about contributing to Open Source Software, and would like some support to get started, this event is for you!
During this session you’ll join others making contributions to R packages while package maintainers and other mentors are available ’live’ to answer questions and give guidance.
And remember, you can always cowork independently on work related to R, work on packages that tend to be neglected, or work on what ever you need to get done!
New pkgcheck checks
Our pkgcheck package is used both for our software review submission checks, and in pkgcheck-action.
It now features two additional checks:
The pkgcheck-action has also been updated to run on Ubuntu 24.04, and to include quarto to enable packages to use Quarto as a vignette engine.
Software 📦
New packages
The following four packages recently became a part of our software suite:
-
commonmetar, developed by Maëlle Salmon: Uses the commonmeta Go library to generate random DOI strings.
-
repometrics, developed by Mark Padgham: Metrics for your code repository. Call one function to generate an interactive dashboard displaying the state of your code.
-
fireexposuR, developed by Air Forbes: This package computes and visualizes wildfire exposure using the methods documented in a series of scientific publications. It has been reviewed by Sherry Zhang and Ronny A. Hernández Mora.
-
QuadratiK, developed by Giovanni Saraceno together with Marianthi Markatou, Raktim Mukhopadhyay, and Mojgan Golzy: It includes test for multivariate normality, test for uniformity on the d-dimensional Sphere, non-parametric two- and k-sample tests, random generation of points from the Poisson kernel-based density and clustering algorithm for spherical data. For more information see Saraceno G., Markatou M., Mukhopadhyay R. and Golzy M. (2024) doi:10.48550/arXiv.2402.02290 Markatou, M. and Saraceno, G. (2024) doi:10.48550/arXiv.2407.16374, Ding, Y., Markatou, M. and Saraceno, G. (2023) doi:10.5705/ss.202022.0347, and Golzy, M. and Markatou, M. (2020) doi:10.1080/10618600.2020.1740713. It is available on CRAN. It has been reviewed by Hingee Kassel and Emi Tanaka.
Discover more packages, read more about Software Peer Review.
New versions
The following sixteen packages have had an update since the last newsletter: agroclimatico (1.1.1
), BaseSet (v1.0.0
), biomartr (v1.0.10
), c14bazAAR (5.1.0
), DataSpaceR (v0.7.7
), getCRUCLdata (v1.0.3
), gigs (v0.5.2
), riem (v1.0.0
), rredlist (v1.0.0
), spiro (v0.2.3
), tarchetypes (0.12.0
), targets (1.10.1
), taxize (v0.10.0
), weathercan (v0.7.3
), weatherOz (v2.0.0
), and webmockr (v2.0.0
).
Software Peer Review
There are seventeen recently closed and active submissions and 5 submissions on hold. Issues are at different stages:
Find out more about Software Peer Review and how to get involved.
On the blog
Use cases
One use case of our packages and resources has been reported since we sent the last newsletter.
Explore other use cases and report your own!
Calls for contributions
Calls for maintainers
If you’re interested in maintaining any of the R packages below, you might enjoy reading our blog post What Does It Mean to Maintain a Package?.
Calls for contributions
Refer to our help wanted page – before opening a PR, we recommend asking in the issue whether help is still needed.
The bib2df package, for parsing BibTeX files into tibbles, would need some help! Issue for volunteering.
Package development corner
Some useful tips for R package developers. 👀
How to deal with testthat snapshots with variable output
Snapshot test are a great way to ensure messages and complicated output aren’t broken.
Now, some randomness might lead to snapshot test failure: for instance, if your function’s message displays a Git commit hash that changes every time.
How to handle this?
Two possibilities…
- You can use the
transform
argument oftestthat::expect_snapshot()
, that accepts a function transforming a character input into a character output. For instance, an unit test ofggplot2::ggsave()
creates PNG files in a temporary directory. That temporary directory changes at every run. Therefore, the call toexpect_snapshot()
is:
expect_snapshot( x <- suppressMessages(ggsave(c(file1, file2), plot)), transform = function(x) gsub(" \\'.*\\.png\\'", "'PATH'", x) )
That handy transform
argument of expect_snapshot()
might get even better over time, as an open issue suggests providing a set of default transformers for snapshot tests.
- Another solution is to make the random part of your function’s messages and output fixed based on an environment variable that you set in tests (or using mocking).
How to load packages in testthat tests
Another testthat topic, thanks to software review editor Margaret Siple.
How to load packages used in tests?
- There is no need to load the package under development, testthat will do it for you. This includes loading internal functions. This means that the test files of package mypackage should not start with
library(mypackage)
. - There’s rarely a need for using
library()
calls in test files or helper files. Indeed, testthat will load your own package, and any package or function imported in your package. Now, for packages listed in for instanceSuggests
and used only in tests, you should usepkg::function_name()
. This makes it possible for R to find the function, but also for easier debugging of a failed test. An example exception is the loading of httptest2 in a helper file.
Don’t get bitten by GitHub Protected Branches
GitHub’s branch protection rules can prevent pushing directly to protected branches.
It is, however, still possible to locally commit to a protected branch, but an attempt to push to GitHub will be rejected.
You then have a commit tree that can’t be pushed, and that must somehow be reverted.
An easy way to prevent this is to use Lorenz Walthert’s precommit R package with a local hook like this:
#!/usr/bin/env Rscript if (identical (gert::git_branch (), "main")) # or whatever protected branch is called stop ("main branch is protected on GitHub; commits must be made via PR from other branch")
Local hooks can be called from your .pre-commit-config.yaml
file like in this example, which has the hook defined above in a .hook/
sub-directory.
That precommit hook will then prevent you from local commits to any branch that is protected on GitHub.
What is laziness in R
If you’re confused about the meaning of “lazy” in R programming, you might benefit from this blog post by Maëlle Salmon, Athanasia Mo Mowinckel and Hannah Frick on the R-hub blog: Lazy introduction to laziness in R.
Find missing .Rd tags with {checkhelper}
The checkhelper package by Sébastien Rochette helps you identify missing documentation pieces before a submission to CRAN: for instance, missing @return
.
There might be false positives, for instance if you document several functions on a single page with the same @return
(issue) but it’s nonetheless a handy tool when preparing a CRAN submission.
Last words
Thanks for reading! If you want to get involved with rOpenSci, check out our Contributing Guide that can help direct you to the right place, whether you want to make code contributions, non-code contributions, or contribute in other ways like sharing use cases.
You can also support our work through donations.
If you haven’t subscribed to our newsletter yet, you can do so via a form. Until it’s time for our next newsletter, you can keep in touch with us via our website and Mastodon account.
Related