rOpenSci News Digest, February 2025




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 of testthat::expect_snapshot(), that accepts a function transforming a character input into a character output. For instance, an unit test of ggplot2::ggsave() creates PNG files in a temporary directory. That temporary directory changes at every run. Therefore, the call to expect_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 instance Suggests and used only in tests, you should use pkg::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.





Source link

Related Posts

About The Author

Add Comment