rOpenSci News Digest, February 2025
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
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.
-
Tuesday March 4th 14:00 European Central (13:00 UTC) After this we return to our regular monthly social coworking & office hours held on first Tuesdays! Hosted by Steffi LaZerte and various community hosts. Everyone welcome. No RSVP needed. Consult our Events page to find your local time and how to join.
-
Tuesday April 1st 9:00 Americas Pacific (16:00 UTC), “R you joking? Silly R packages for April Fools’ day” with Steffi LaZerte and Yanina Bellini Saibene
- Explore silly R packages
- Chat with our hosts and other attendees and share your favourite silly R packages!
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:
- A check that packages do not list excessive numbers of package Imports. Packages with numbers of imports exceeding the 95% of current CRAN packages (which is currently 21 imported packages) will receive an 👀 note.
- A check that repositories do not name the default GitHub branch “master”, and will fail if so. See this tidyverse blog post for helpful advice on renaming default branches.
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:
-
Three at ‘6/approved’:
-
rredlist, IUCN Red List Client. Submitted by William Gearty.
-
fireexposuR, Compute and Visualize Wildfire Exposure. Submitted by Air Forbes.
-
QuadratiK, A Collection of Methods Using Kernel-Based Quadratic Distances for. Submitted by Giovanni Saraceno. (Stats).
-
-
Four at ‘4/review(s)-in-awaiting-changes’:
-
geotargets, Targets Extensions for Geospatial Formats. Submitted by Nicholas Tierney.
-
mapmetadata, Map health metadata onto predefined research domains. Submitted by Rachael Stickland.
-
mbquartR, Finding Manitoba Quarter Sections. Submitted by Alex Koiter.
-
pangoling, Access to Large Language Model Predictions. Submitted by Bruno Nicenboim.
-
-
Four at ‘3/reviewer(s)-assigned’:
-
butterfly, Verification For Continually Updating Timeseries Data. Submitted by Thomas Zwagerman.
-
pkgmatch, Find R Packages Matching Either Descriptions or Other R Packages. Submitted by mark padgham.
-
sits, Satellite Image Time Series Analysis for Earth Observation Data Cubes. Submitted by Gilberto Camara.
-
fwildclusterboot, Fast Wild Cluster Bootstrap Inference for Linear Models. Submitted by Alexander Fischer. (Stats).
-
-
Two at ‘2/seeking-reviewer(s)’:
-
gtexr, Query the GTEx Portal API. Submitted by Alasdair Warwick.
-
galamm, Generalized Additive Latent and Mixed Models. Submitted by Øystein Sørensen. (Stats).
-
-
Four at ‘1/editor-checks’:
-
sasquatch, Use SAS, R, and quarto Together. Submitted by Ryan Zomorrodi.
-
read.abares, Provides simple downloading, parsing and importing of Australian. Submitted by Adam H. Sparks.
-
forcis, An R Client to Access the FORCIS Database. Submitted by Nicolas Casajus.
-
capybara, Fast and Memory Efficient Fitting of Linear Models With High-Dimensional. Submitted by Mauricio “Pachá” Vargas Sepúlveda.
-
Find out more about Software Peer Review and how to get involved.
On the blog
-
Open Science and Open Source only with Diversity, Equity, Inclusion, and Accessibility by The rOpenSci Team. Including all of humanity is and always will be at the heart of open science. Other languages: Ciencia Abierta y Código Abierto sólo con Diversidad, Equidad, Inclusión y Accesibilidad (es).
-
The Dynamic Relationship of Forks with their Upstream Repository by Hugo Gruson, Stefanie Butland, and Ruby Krasnow.
Use cases
One use case of our packages and resources has been reported since we sent the last newsletter.
- METAR analysis for flight conditions. Reported by Maëlle Salmon.
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?.
-
photosearcher, Searches Flickr for photographs and metadata. Issue for volunteering.
-
MODIStsp, automatic download and preprocessing of MODIS Land Products Time Series. Issue for volunteering.
-
hddtools, Hydrological Data Discovery Tools. Issue for volunteering.
-
USAboundaries (and USAboundariesdata), historical and contemporary boundaries of the United States of America . Issue for volunteering.
-
historydata, datasets for historians. Issue for volunteering.
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.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.