How to contribute to open projects and communities

Yani Bellini Saibene

Path for today

  • What a contribution is for a open source project
  • …and for a community?
  • Examples with rOpenSci
  • How I can help people to contribute to my package?

Contributions

When you listen “Made a contribution to an open source project or community”…

…what comes to your mind?

From a community perspective

We have some models of participation

Pathway To Inclusion

Six steps from “never heard of it” to “this is my thing”

  • Awareness: I’ve heard of this.
  • Understanding: I understand what this is,and what it might be like for me to be involved.
  • Identification: I can imagine myself doing this.
  • Access: I can physically, logistically, and financially do this.
  • Belonging: I feel like I fit in here.
  • Ownership: I care enough to take responsibility for this.

Pathway To Inclusion

  • At what stage are you with rOpenSci?

  • Can you give examples for other communities or projects that you are part and in what stage are you?

  • How long did it take you to move from one state to another?

CSCCE Community Participation Model

  • Convey/Consume: the CM convey information for members to consume independently of one another.
  • Contribute: invited/facilitated by the CM. Enables members to discover the skills and interest of other. Made knowledge more visible.
  • Collaborate: members collaborate with one another.
  • Co-create: members work together within the community to co-create something they couldn’t do before.

CSCCE Community Participation Model

  • Where you would you put the Champions Program?

CSCCE Community Participation Model

Champions program are usually in all the spectrum

Examples of champion-ing activities

  • Convey: they post on social media to spread the word more widely

  • Contribute: they invite others to attend a event;

  • Collaborate: they host a community call;

  • Co-create: they run trainings or other activities for others in the community

rOpenSci Examples

rOpenSci Examples

  • Have you participate in any of this options?

  • Which one would you like to try?

  • You can use many of this options as your outreach activity for the Champions Program.

  • We would like to learn how we can improve this activities.

  • Spread the word about this options to people in your communities.

How this concepts are useful for my package ?

Convey

  • Create a comprehensive README: clearly explains what your package does, how to install it, and how users can start using it. Include examples or use cases and (links to) any relevant information which might help users understand how your package can help them.

  • Pin your package repository to your profile so other people can find it quickly.

  • Create a universe on R-universe, simplify the installation of your package, and provide useful stats and information about it.

Convey

  • We recommend creating a documentation website for your package using pkgdown.

  • Leverage platforms like Mastodon, LinkedIn, and R-specific forums such as R-bloggers and R Weekly to announce the release of your package.

  • If you like to give talks, you can speak at an R User Group or R-Ladies Chapter.

  • Presenting your package at a domain-specific conference or at R-specific conferences.

  • If your package fits in a CRAN Task View you can propose the addition.

Contribute / Collaborate

Make your repo contribution and collaboration friendly

  • Code of conduct (CODE_OF_CONDUCT.md): you can insert one with use_code_of_conduct() from the usethis package. The template comes from https://www.contributor-covenant.org.

  • OSI License (LICENSE.md).

  • Contributing guide (CONTRIBUTING.md): an easy way to insert a template for a contributing guide is the use_tidy_contributing() from the usethis package.

Contribute / Collaborate

In groups use your package or the package we create in the other trainings and

  • add a Code of Conduct.

  • add a Contributing Guide.

Usethis helps: https://usethis.r-lib.org/reference/use_code_of_conduct.html

Contributing guide

Personal preferences in a contributing guide include:

  • Style preferences?

  • Infrastructure like roxygen2?

  • Workflow preferences? Issue before a PR?

  • Describe how you acknowledge contributions.

  • A scope statement, like in the skimr package?

  • We encourages contributing guides to include a lifecycle statement clarifying visions and expectations for the future development of your package.

Issue management

  • Issue template(s): help users fill better bug reports or feature requests.

  • Issue labelling: use labels such as “help wanted” and “good first issue” to help potential collaborators, including newbies, find your repo.

  • Pinning issues: You can pin up to 3 issues by repository that will then appear at the top of your issue tracker as nice issue cards. It can help advertise what your priorities are.

Further resources: Collaborate / Co-create.

Time for Questions :-)