Chapter 15 Contributing Guide

This chapter outlines how you can contribute to the rOpenSci project as a user or developer.

So you want to contribute to rOpenSci? Fantastic! First of all, maybe contributing code or documentation to a package is not the (only) way you’ll want to get involved. Check out our community page to find out all the ways to participate in the project, from reading about our packages to volunteering to review them.

We strive to make contributing to our suite a constructive and positive experience and we welcome participation that adheres to our code of conduct.

If you wish to contribute to this guide itself, please report any suggestions via this GitHub repository.

15.1 Why contribute to rOpenSci packages?

In general, as explained by Kara Woo in her talk at the CascadiaR conference, contributing to R packages allows you to make things work the way you want (by adding some functionality to your favorite package), can lead to opportunities and allows you to learn about package development.

Specifically at rOpenSci, we strive to make contributing a good experience. This is embedded in our mission: we are creating social infrastructure through a welcoming and diverse community and building capacity of software users and developers and fostering a sense of pride in their work.

15.2 Non code contributions

15.2.1 Reporting use cases for our packages or guidelines

It’s valuable to both users and developers of a package to see how it has been used “in the wild”. If you see a use case of one of our packages, please add it to our public forum in the Use Cases category. We’ve created a template to help. We’ll tweet about it, and might add it to the rOpenSci biweekly newsletter. You might also let the package author know by opening an issue in the GitHub repository for that package, perhaps suggesting they create a “use cases in the wild” section in the README, and maybe even tag them in a tweet about the use case. This goes a long way to encouraging people to keep up development knowing there are others who appreciate and build on their work. See examples of README’s listing use cases in the wild here and here

We would also love to hear about examples in which rOpenSci resources or guidelines have been used. Have you implemented better security practices, like signing your commits, based on recommendations in a Community Call, or used our standards/checklists etc. when reviewing software elsewhere? Do tell people (e.g. journal editors, students, internal code review group, users) that they came from rOpenSci, and tell us in our public forum, or privately by email.

15.2.2 Reporting issues or Requesting features

If you already have a package in mind, head to its issue tracker to report a bug or a feature request you might have. E.g. if you have a feature request for magick, the place to fill it is

When reporting a bug try to include a reproducible example (“reprex”) to help the package author help you.

15.2.3 Asking other questions

You can use our discussion forum to ask questions related to the usage of our packages, even when you don’t know yet which of our packages could help you.

For more guidance about where to ask questions related to rOpenSci packages, refer to Scott Chamberlain’s talk in this community call or the corresponding slidedeck.

15.3 Code contributions

15.3.1 Prerequisites for package development

Before contributing to one of our packages, you might want to read a bit more about package development in general and our guidelines. Reading about our guidelines

See the whole first section of this book: Building Your Package

15.3.2 Finding where to contribute code or documentation

Our packages are developed on GitHub. We have two organizations:

If you already know what package you’d like to contribute to, have a look at its issue tracker and comment in one of the issues to ask the maintainer whether they’d be interested in your help. E.g. if you like taxize, the place to look is

If you’re not sure which package you’d like to contribute to, you can start by browsing our packages page. To browse issues targeted at beginners you could use an advanced GitHub search such as this one that gets all issues from “ropensci” or “ropenscilabs” organizations that are open and labelled “beginner”.

Still not sure how you can contribute? Tell us about your expertise and interests and we’ll try to match you with a package that could use your help.