|
| 1 | +--- |
| 2 | +layout: single |
| 3 | +title: "Contribute to Open Source Software: It's More Than just Code" |
| 4 | +excerpt: "Contributing to open source isn’t just about code—it’s also about navigating social norms. Discover pyOpenSci’s new Contribute to Open Source lessons, which cover both the technical and social aspects, and are free for anyone to use." |
| 5 | +author: "Leah Wasser" |
| 6 | +permalink: /blog/contribute-to-open-source-lessons.html |
| 7 | +header: |
| 8 | + overlay_image: images/headers/pyopensci-inessa.png |
| 9 | + overlay_filter: rgba(20, 13, 36, 0.3) |
| 10 | +categories: |
| 11 | + - blog-post |
| 12 | + - community |
| 13 | + - contribute-to-open-source |
| 14 | +classes: wide |
| 15 | +toc: true |
| 16 | +comments: true |
| 17 | +last_modified: 2025-03-11 |
| 18 | +--- |
| 19 | + |
| 20 | + |
| 21 | +## Beyond code: the social side of open source |
| 22 | + |
| 23 | +When you think about contributing to open source, you might assume the biggest hurdle for newcomers is technical--learning Git, using GitHub, and/or writing code. Most contribute to open source guides focus on technical skills. But for many new contributors, the challenge isn’t only technical—it’s social too. |
| 24 | + |
| 25 | +Receiving open feedback on your contributions in the form of code review, whether code or documentation, [creates anxiety for many](https://osf.io/preprints/psyarxiv/8k5a4_v1). |
| 26 | + |
| 27 | +- <i class="fas fa-user-plus" style="color:#81c0aa;"></i> **Joining an unfamiliar community:** Understanding who to reach out to and how the project operates can feel intimidating. |
| 28 | +- <i class="fas fa-comments" style="color:#81c0aa;"></i> **Understanding unspoken norms:** Every project has its own culture, from how discussions happen to how decisions are made. And these norms are not always well-documented. |
| 29 | +- <i class="fas fa-handshake" style="color:#81c0aa;"></i> **Building confidence in a new space:** Many contributors worry about making mistakes, be it while using GitHub or submitting a Pull Request or even in the content updates themselves. |
| 30 | +- <i class="fas fa-exclamation-circle" style="color:#81c0aa;"></i> **Navigating constructive feedback** – Open source is built on open peer review; however, receiving public feedback on a contribution can be intimidating. |
| 31 | + |
| 32 | + |
| 33 | +In my 10+ years of building and maintaining software, contributing to projects, and running beginner-friendly sprints, I’ve seen firsthand that communication, collaboration, and project culture are just as—if not more—important than technical skills. I've also experienced the imposter syndrome first-hand. I was nervous about my first contributions and wasn't sure how to start contributing in a meaningful way. |
| 34 | + |
| 35 | +**Technical and social skills go hand in hand.** Open source communities are most productive when contributors and maintainers recognize this balance between the technical and social skills associated with contributing. In most cases, all of the people involved in the project are volunteers with varying priorities, skillsets, and motivations to participate. |
| 36 | +{: .notice .notice--info} |
| 37 | + |
| 38 | +### Developing our contribute to open source lessons |
| 39 | + |
| 40 | +This past year, with support from the [Better Software for Science (BSSw) Fellowship](https://bssw.io/fellows/leah-wasser), I developed lessons shaped by insights gained from the [pyOpenSci contributor community](https://www.pyopensci.org/our-community/index.html). Our lessons are now freely available as open educational resources designed to help contributors and maintainers foster a more welcoming, collaborative and productive open source community. |
| 41 | + |
| 42 | +<a href="https://www.pyopensci.org/lessons/contribute-open-source/index.html" class="btn btn--success">Check out our lessons now.</a> |
| 43 | + |
| 44 | +> BSSw is a unique partnership between the National Science Foundation (NSF) and the Department of Energy (DOE) that provides small grants to advocates in the scientific open source space. |
| 45 | +{: .notice } |
| 46 | + |
| 47 | +### A community-driven approach to open source |
| 48 | + |
| 49 | +Over the past two years, **pyOpenSci has welcomed over 300 contributors**, with more than **120 issues and pull requests** submitted during our [beginner-friendly sprints](/blog/pyopensci-pyconus-2024-sprints.html). These experiences reinforced what we already knew—technical skills are just one part of people successfully contributing to open source. |
| 50 | + |
| 51 | +Through our sprints, we saw firsthand how **clear guidance, supportive communities, and transparent contribution processes** helps newcomers gain confidence. Often, they stick around our community after the events. These insights shaped our *Contribute to Open Source* lessons. |
| 52 | + |
| 53 | +## Beyond code: The social skills of open source |
| 54 | + |
| 55 | +Our lessons address both the technical and social aspects of contributing to open source. |
| 56 | + |
| 57 | +### For contributors: how to navigate your first contribution |
| 58 | + |
| 59 | +For contributors, we focus on: |
| 60 | +1. Understanding the technical steps surrounding making your first contribution |
| 61 | +2. Signals that tell you that a project welcomes newcomers and, |
| 62 | +3. What to expect as they navigate their first contributions. |
| 63 | + |
| 64 | +A few highlights include: |
| 65 | + |
| 66 | +- <i class="fas fa-book" style="color:#81c0aa;"></i> **[Get to know a repository](https://www.pyopensci.org/lessons/contribute-open-source/get-to-know-repo.html):** Learn how to look for documentation files like `CONTRIBUTING` and `DEVELOPMENT` guides that will become your guiding light in making your first contributions. These files should help you understand whether new contributions are welcome, what the contribution process is, and what types of contributions are welcome. |
| 67 | +- <i class="fas fa-search" style="color:#81c0aa;"></i> **[Find and understand issues](https://www.pyopensci.org/lessons/contribute-open-source/identify-issue.html):** Explore how to search and create GitHub issues as you begin the process of finding a task to work on. Learn how to communicate effectively with maintainers who you may have never interacted with before. |
| 68 | +- <i class="fas fa-code-branch" style="color:#81c0aa;"></i> **[Create effective pull requests](https://www.pyopensci.org/lessons/contribute-open-source/pull-request.html):** Learn how to open a pull request, write clear pull request messages titles and descriptions. Also, learn how to make the pull request process more efficient by reviewing your own work and linking your PR to an issue to streamline maintainer review. |
| 69 | + |
| 70 | +### For Maintainers: Creating a contributor-friendly repository |
| 71 | + |
| 72 | +While these lessons are focused on contributing, we also provide some maintainer tips to help set clear expectations for contributors: |
| 73 | + |
| 74 | +- <i class="fas fa-comments" style="color:#81c0aa;"></i> **Communicate your availability:** Let contributors know if you have time to support them. It’s okay if you're busy—just set clear expectations! |
| 75 | +- <i class="fas fa-file-alt" style="color:#81c0aa;"></i> **Provide clear guidelines:** Add `CODE_OF_CONDUCT`, `CONTRIBUTING`, and `DEVELOPMENT` files to define what contributions you welcome and how contributors should engage with your project. |
| 76 | +- <i class="fas fa-tools" style="color:#81c0aa;"></i> **Use automation to support contributors:** Tools like [pre-commit.ci](https://pre-commit.ci/) help automate formatting and linting, reducing friction for new contributors. |
| 77 | + |
| 78 | +## Co-Creating open source contribution lessons |
| 79 | + |
| 80 | +Our *Contribute to Open Source* lessons, like all pyOpenSci resources, are co-developed collaboratively. By bringing together contributors with different backgrounds and skill levels, we ensure our materials are clear, accurate, and welcoming. |
| 81 | + |
| 82 | +A diverse contributor base makes our lessons stronger: |
| 83 | +* <i class="fas fa-microscope" style="color:#81c0aa;"></i> **Experts** provide technical accuracy. |
| 84 | +* <i class="fas fa-user-graduate" style="color:#81c0aa;"></i> **Beginners** ensure content is approachable. |
| 85 | +* <i class="fas fa-users" style="color:#81c0aa;"></i> **Everyone in between** help refine and improve the content. |
| 86 | + |
| 87 | +This same community-driven approach shaped our [packaging guide](https://www.pyopensci.org/python-package-guide/), which covers [packaging tools](https://www.pyopensci.org/python-package-guide/package-structure-code/python-package-build-tools.html) and [tutorials](https://www.pyopensci.org/python-package-guide/tutorials/intro.html). Like our lessons, it was co-developed and openly reviewed to ensure accessibility and clarity. |
| 88 | + |
| 89 | +<figure> |
| 90 | + <picture> |
| 91 | + <source srcset="/images/peer-review/co-development-open-education.webp" type="image/webp"> |
| 92 | + <img src="/images/peer-review/co-development-open-education.png" alt="A diagram illustrating the co-development of open lessons by pyOpenSci. The diagram consists of a circular section divided into five segments labeled ‘Maintainers,’ ‘Beginners,’ ‘Experts,’ ‘Researchers,’ and ‘Contributors,’ surrounding a central section labeled ‘Moderation.’ An arrow extends from the circle to the right, labeled with key moderation activities such as ‘Listen,’ ‘Moderate,’ ‘Facilitate,’ ‘Structured review,’ and ‘Code of Conduct,’ leading to ‘Accessible Lessons.’ The background features a subtle floral pattern."> |
| 93 | + </picture> |
| 94 | +</figure> |
| 95 | + |
| 96 | +By openly co-developing and refining these resources together, we’re making scientific open source more accessible for everyone. |
| 97 | + |
| 98 | +## What's next? Broadening participation in open source |
| 99 | + |
| 100 | +With [PyCon US](https://us.pycon.org/2025/) and SciPy on the horizon, we’re excited to put these lessons into action. At our upcoming sprints, we’ll work together to **refine these resources—improving the lessons and packaging guide to make participating open source even more accessible.** If you plan to be at either meeting, keep an eye out for pyOpenSci events! |
| 101 | + |
| 102 | +<div class="notice" markdown="1"> |
| 103 | + |
| 104 | +## <i class="fa-solid fa-users-line"></i> Connect with us! |
| 105 | + |
| 106 | +There are lots of ways to get involved if you are interested! |
| 107 | + |
| 108 | +* If you read through our lessons and want to suggest changes, open an issue in our [lessons repository here](https://github.com/pyOpenSci/lessons) |
| 109 | +* [Volunteer to be a reviewer for pyOpenSci's software review process](https://forms.gle/GHfxvmS47nQFDcBM6) |
| 110 | +* [Submit a scientific Python package to pyOpenSci for peer review](https://www.pyopensci.org/software-peer-review/how-to/author-guide.html#submit-your-package-for-peer-review) |
| 111 | +* [Donate to pyOpenSci](https://give.communityin.org/pyopensci_2024) to support scholarships for future training events and the development of new learning content. |
| 112 | +* Check out our [volunteer page](/volunteer.html) for other ways to get involved. |
| 113 | + |
| 114 | +You can also: |
| 115 | + |
| 116 | +* Keep an eye on our [events page](/events.html) for upcoming training events. |
| 117 | + |
| 118 | +Follow us on social platforms: |
| 119 | + |
| 120 | +* [<i class="fa-brands fa-discourse" style="color:#81c0aa;"></i> Discourse](https://pyopensci.discourse.group/) |
| 121 | +* [<i class="fa-brands fa-mastodon" style="color:#81c0aa;"></i> Mastodon](https://fosstodon.org/@pyopensci) |
| 122 | +* [<i class="fa-solid fa-cloud" style="color:#81c0aa;"></i> Bluesky](https://bsky.app/profile/pyopensci.bsky.social) |
| 123 | +* [<i class="fa-brands fa-linkedin" style="color:#81c0aa;"></i> LinkedIn](https://www.linkedin.com/company/pyopensci) |
| 124 | +* [<i class="fa-brands fa-github" style="color:#81c0aa;"></i> GitHub](https://github.com/pyOpenSci) |
| 125 | + |
| 126 | +If you are on LinkedIn, check out and [subscribe to our newsletter, too](https://www.linkedin.com/newsletters/7179551305344933888/?displayConfirmation=true). |
| 127 | + |
| 128 | +</div> |
0 commit comments