Blog

An Intro To Contributing To Open Source

Written by Callan Morrison | Mar 1, 2017

It’s a Saturday at Nashville Software School, and while the rest of the world is off enjoying brunch and picnics, a group of people with various technical backgrounds all gather at a long table and get to work. The mission?

Learn how to find, discover more about & meaningfully contribute to an open source project without being one of those people.

Contributing to an open source project can be daunting, especially for those that are just starting out or those that have lived their life contributing to proprietary software. Nick Lorenson & Max Shenfield put together a hands-on workshop to demonstrate both sides of the coin: how to contribute and how it feels to manage an open source project.

Nick shared a pretty revealing analogy (largely paraphrased): “Imagine I’ve asked you to come in and help rearrange my house. Get to know me. Get to know how my house already works. Start small, put a basket of shells in my bathroom. Don’t just come in and light my kitchen on fire. That’s not helpful.”

The workshop gave a brief introduction into the ecosystem of an open source project, how to use git and GitHub to effectively contribute, and then promptly set to work. The group was divided into “contributors” and “maintainers”, and handed a prepared repository as our pseudo open source project. The contributors immediately started pulling issues that ranged from functionality, to documentation updates, to test enhancements. As a “maintainer” myself, I felt overwhelmed with the concept of reviewing each pull request, and immediately started seeing the value in a pull request that came complete with a description, test and appropriate documentation.

Those attending got a great deal out of the experience, including refreshers on using GitHub, soft-skills to develop a trust-driven relationship with the maintainers, and, most overwhelmingly, “where to start.”

"The intro to OS workshop gave an opportunity for beginners and seasoned professional an introduction of how to approach contributing to open source projects without being a nuisance. Friendly advice, spirit of collaboration and lessons on how to use GitHub repository to access code gave the group the tools needed to solve problems that very workshop. I walked away with the confidence that I, a newbie, could indeed contribute to any open source project." Jennifer Dutton | Current NSS Student

"The class refreshed my confidence in suggesting changes to open-source projects, which can be intimidating for any developer." Brian Arenz | NSS Graduate Cohort 3

"I learned I don't have to reinvent the wheel to contribute to an OSS project. A project maintainer doesn't necessarily want a massive change in code. They may just need some minor changes or documentation added. There may be some bug that they don’t have time to fix. You can help them by clearing some technical debt." Chris Jarvis | NSS Graduate Evening Cohort 1

Interested in contributing? Here are a few “next steps”, courtesy of Max Shenfield:
  1. Pick an open source project you’ve used and are interested in learning more about. If you’re having trouble finding something, check out the dependencies of your dependencies - here are some ways to see all installed packages in a project:
    •  pip freeze - Python
    • • Remove node_modules and re-run npm install or yarn install - JS
    • • https://docs.microsoft.com/en-us/nuget/tools/powershell-reference#get-package - C#
  2. Visit the package repository. Look through the Issues list for a small bug, documentation request, or small feature request. Some projects have a “Beginner Friendly” or “Good first bug” label. Once you find something, comment on the ticket that you are planning to work on it.
  3. Introduce yourself on the projects chat room of choice (Gitter, Slack, Discourse, IRC, etc.)
  4. Squash the 🐛, build the feature, write the doc, and submit a pull request! Make sure to include tests and additional documentation as needed.
  5. Follow up with the PR to see if the maintainer has requested changes or additions.