flowchart LR
B((1-Open issue))
B --> C{2-In scope?}
C -->|No| E{3-Exception?}
C -->|Yes| D[4-Submit]
E -->|Yes| D
E -->|No| G((5-Close issue))
rOpenSci Software Peer Review Workshop
Workshop Introduction
License: Attribution-NonCommercial 4.0 International
Main Objectives
Day 1
- Familiarize yourself with the stages and qualities of the process
- Practice proposing software for review
Day 2
- Practice submitting software for review
Day 1 Plan
- Workshop introduction
- End-to-end process introduction
- Comparison with academia
- Proposing and submitting software for review
- {pkgcheck}
- Code of conduct and communication
- Break
- Proposing software for review
- Opening an issue
- Kind and constructive communication
- Questions and comments
Review Process Overview
About how we work with software and people
Proposing Software for Review
Submitting Software for Review
flowchart LR
B((1-Open issue))
B --> C[2-Review]
C --> D{3-Ready?}
D -->|No| C
D -->|Yes| E((Publish))
{pkgcheck}: Usage in an Issue
@ropensci-review-bot check package{pkgcheck}: Local Usage
Usage
package <- "/path/to/package"
results <- pkgcheck::pkgcheck(package)
results
summary(results)Code of Conduct
- rOpenSci’s community is our best asset.
- We aim for reviews to be
- open,
- non-adversarial,
- and focused on improving software quality.
- Be respectful and kind.
Kind and Constructive Communication
Offer
- Safety
- Suggestion/Decision
- Follow-up
Kind and Constructive Communication
From an author:
I couldn’t find a category that fit perfectly, so I created a new category.
Break 10’
Proposing Software for Review
Questions and Comments
Day 2 Introduction
What did we see on day 1? What are we going to see today?
Day 2 Plan
- Review
- Preparing a package
- Reviewing a package: Introduction
- Break
- Reviewing a package: Activity
- Responding to a review
- Questions and answers
Review: Proposing Software
The karel package teaches programming. Its objective is outside the scope of rOpenSci. It was proposed for review in 2023, during the champions program.
Proposing software for review
flowchart LR
B((1-Open issue))
B --> C{2-In scope?}
C -->|No| E{3-Exception?}
C -->|Yes| D[4-Submit]
E -->|Yes| D
E -->|No| G((5-Close issue))
Review: Communication
Submitting Software for Review
Example
# install.packages("usethis")
# ✖ does not have a 'contributing' file.
usethis::use_tidy_contributing()
# ✖ Package has no HTML vignettes
usethis::use_article("saperlipopette")
# ✖ These functions do not have examples: [create_all_exercises].
# From https://github.com/ropensci-training/saperlipopette/blob/main/R/create-all.R
#' @examplesIf interactive()
#' parent_path <- withr::local_tempdir()
#' path <- create_all_exercises(parent_path = parent_path)
#
# devtools::document()Reviewing a Package
Examples
{eph}: Use an automatic code formatter (review - commit).
Please use an automatic code formatter (e.g.,
usethis::use_tidy_style()). It’s useful to see that the style is consistent and follows a popular style guide like the “tidyverse style guide” (https://style.tidyverse.org/). This helps avoid thinking about style and saves mental energy for noticing more important things. Here are some examples of style violations:

{eph}: Show the output of examples in README (review - commit).
In the “Usage” section, please show the results so they can be seen without needing to install the package and run the code.

{agroclimatico}: Rename functions (review - commit).
a slight name change could be considered to avoid confusion

{agroclimatico}: Group functions (review - commit).
A suggestion to make the overall functionality of the package clearer is to group the functions in the index by topic.

{karel}: Express the package’s need in README (review - commit).
Add statement of need. The
Who is Karel?section of the README hints at the need but does not describe it explicitly.

Responding to a Review
Combines skills we already practiced.
Examples of review and response in {agroclimatico}
Review by @VeruGHub (reviewer)
Safety
First of all, I want to thank you for the opportunity to review this package and I hope the comments help improve the aspects the authors consider appropriate.
Suggestion/Decision
I think some formal aspects of the documentation can be improved. To begin with, the package’s functionality is not completely defined in the documentation (Readme) … Improving these descriptions and including defensive programming related to the arguments (generally missing) would help users a lot.
Response by @paocorrales (author)
Safety
First of all, thank you very much @pmnatural and @VeruGHub for the review and comments.
Suggestion/Decision
I incorporated the comments and suggestions into the package.
Follow-up
I hope I didn’t forget anything, I await your comments!
Example of pushback on a suggestion in {eph}
Response by @caropradier (author)
Safety
@lidefi87 thank you again for your efforts!
Suggestion/Decision
Regarding the function names, I would try not to make major modifications so as not to disrupt the workflow of our current users (approximately 30 thousand people use the package and I would like to avoid causing them inconvenience if it’s not something fundamental for the package’s functionality). However, I agree that it’s a good practice, and I’ll keep it in mind when adding new functions.
Questions and comments
Thank You!
Want to review a package? Volunteer here
Resources
Workshop
Communication
Review
- Propose or submit software for review
- Dev Guide standard and statistical
- Package categories standard and statistical
- Guide for Authors
- Guide for Reviewers
- Statistical Software Guide
- pkgcheck
- pkgmatch (example)
- Review template
- r-multiverse
Blogs about the review process
- Software Review, Perspectives from an Academic
- First-time Experiences Reviewing rOpenSci Packages
- So You (Don’t) Think You Can Review a Package
Champion packages in Spanish