|
| 1 | +--- |
| 2 | +layout: single |
| 3 | +title: "Contributing 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 | +classes: wide |
| 14 | +toc: true |
| 15 | +comments: true |
| 16 | +last_modified: 2025-03-11 |
| 17 | +--- |
| 18 | + |
| 19 | + |
| 20 | +## Contributing to open source: The missing link |
| 21 | + |
| 22 | +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. |
| 23 | + |
| 24 | +Receiving open feedback on your contributions, whether code or documentation, [creates anxiety for many](https://osf.io/preprints/psyarxiv/8k5a4_v1). Joining an unfamiliar community, understanding unspoken norms, and building confidence while tackling technical and social barriers can be overwhelming, especially for us introverted people (which many software developers and scientists tend to be). |
| 25 | + |
| 26 | +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. |
| 27 | + |
| 28 | +**Technical and social skills go hand in hand.** Open source communities thrive when contributors and maintainers recognize this balance between technical and social skills. |
| 29 | +{: .notice .notice--info} |
| 30 | + |
| 31 | +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 community](https://www.pyopensci.org/our-community/index.html). These lessons are now freely available as open educational resources designed to help contributors and maintainers foster a more welcoming and collaborative open source community. |
| 32 | + |
| 33 | +> 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. |
| 34 | +{: .notice } |
| 35 | + |
| 36 | +### A community-driven approach to open source |
| 37 | + |
| 38 | +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. |
| 39 | + |
| 40 | +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. |
| 41 | + |
| 42 | +## Beyond code: The social skills of open source |
| 43 | + |
| 44 | +Our lessons address both the technical and social aspects of contributing to open source. |
| 45 | + |
| 46 | +### For contributors: how to navigate your first contribution |
| 47 | + |
| 48 | +For contributors, we focus on: |
| 49 | +1. Understanding the technical steps surrounding making your first contribution |
| 50 | +2. Signals that tell you that a project welcomes newcomers and, |
| 51 | +3. What to expect as they navigate their first contributions. |
| 52 | + |
| 53 | +A few highlights include: |
| 54 | + |
| 55 | +- <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. |
| 56 | +- <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. |
| 57 | +- <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. |
| 58 | + |
| 59 | +### For Maintainers: Creating a contributor-friendly repository |
| 60 | + |
| 61 | +While these lessons are focused on contributing, we also provide some maintainer tips to help set clear expectations for contributors: |
| 62 | + |
| 63 | +- <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! |
| 64 | +- <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. |
| 65 | +- <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. |
| 66 | + |
| 67 | +## Co-Creating open source contribution lessons |
| 68 | + |
| 69 | +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. |
| 70 | + |
| 71 | +A diverse contributor base makes our lessons stronger: |
| 72 | +* <i class="fas fa-microscope" style="color:#81c0aa;"></i> **Experts** provide technical accuracy. |
| 73 | +* <i class="fas fa-user-graduate" style="color:#81c0aa;"></i> **Beginners** ensure content is approachable. |
| 74 | +* <i class="fas fa-users" style="color:#81c0aa;"></i> **Everyone in between** help refine and improve the content. |
| 75 | + |
| 76 | +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. |
| 77 | + |
| 78 | +<figure> |
| 79 | + <picture> |
| 80 | + <source srcset="/images/peer-review/co-development-open-education.webp" type="image/webp"> |
| 81 | + <img src="/images/peer-review/co-development-open-education.png" alt="..."> |
| 82 | + </picture> |
| 83 | +</figure> |
| 84 | + |
| 85 | +By openly co-developing and refining these resources together, we’re making scientific open source more accessible for everyone. |
| 86 | + |
| 87 | +## What's next? Broadening participation in open source |
| 88 | + |
| 89 | +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! |
| 90 | + |
| 91 | +<div class="notice" markdown="1"> |
| 92 | + |
| 93 | +## Support open science: Get involved with pyOpenSci |
| 94 | + |
| 95 | +There are lots of ways to get involved if you are interested! |
| 96 | + |
| 97 | +* If you read through our lessons and want to suggest changes, open an issue in our [lessons repository here](https://github.com/pyOpenSci/lessons) |
| 98 | +* [Volunteer to be a reviewer for pyOpenSci's software review process](https://forms.gle/GHfxvmS47nQFDcBM6) |
| 99 | +* [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) |
| 100 | +* [Donate to pyOpenSci](https://give.communityin.org/pyopensci_2024) to support scholarships for future training events and the development of new learning content. |
| 101 | +* Check out our [volunteer page](/volunteer.html) for other ways to get involved. |
| 102 | + |
| 103 | +You can also: |
| 104 | + |
| 105 | +* Keep an eye on our [events page](/events.html) for upcoming training events. |
| 106 | + |
| 107 | +Follow us on social platforms: |
| 108 | + |
| 109 | +* [<i class="fa-brands fa-discourse" style="color:#81c0aa;"></i> Discourse](https://pyopensci.discourse.group/) |
| 110 | +* [<i class="fa-brands fa-mastodon" style="color:#81c0aa;"></i> Mastodon](https://fosstodon.org/@pyopensci) |
| 111 | +* [<i class="fa-solid fa-cloud" style="color:#81c0aa;"></i> Bluesky](https://bsky.app/profile/pyopensci.bsky.social) |
| 112 | +* [<i class="fa-brands fa-linkedin" style="color:#81c0aa;"></i> LinkedIn](https://www.linkedin.com/company/pyopensci) |
| 113 | +* [<i class="fa-brands fa-github" style="color:#81c0aa;"></i> GitHub](https://github.com/pyOpenSci) |
| 114 | + |
| 115 | +If you are on LinkedIn, check out and [subscribe to our newsletter, too](https://www.linkedin.com/newsletters/7179551305344933888/?displayConfirmation=true). |
| 116 | + |
| 117 | +</div> |
0 commit comments