Open source software development models and cultures of contribution are changing the landscape of technology. Anybody can participate in the development of free, open-source software, but how do you learn from open source projects to best structure your open source engagement?
Whether you’re working at a startup, or for a large company, it’s important to ensure the code you write is thoroughly vetted. This is especially important if your software will be used by other people or organizations. Open source projects allow you to learn from others’ mistakes, as well as improve your skills through collaborative code sharing.
Get to know GitHub
GitHub is the most popular platform for open source collaboration, so you’ll probably use it when exploring the world of OSS. First, you need to create a GitHub account and read the guide that helps you get started. On GitHub, you can contribute to projects by submitting issues and contributing code. Submitting issues means sending messages about errors in applications and suggesting ways to fix them. Contributing code involves sending pull requests with your corrections and improvements.
Host live code walkthroughs of your project
I dog-fooded my own project by scheduling hangouts on codebuddies.org/hangouts that centered around walking new contributors through the codebase. I would recommend other open source project maintainers do the same thing, for the following reasons:
- It provides a space for new contributors to ask you questions they normally wouldn’t type out
- It really helps people new to git and GitHub. Pairing with someone on their first PR can help them get past the first bumps of setting up the environment, figuring out the codebase, and how to use git.
I’ve found that conversations can help strengthen connections. More than a few people who’ve joined code walkthroughs I’ve done have become major contributors and friends.
Learn the basics
When working with GitHub, you should know how to use Git – one of the most popular version control tools (also known as revision control tools). Because developers constantly make changes to their code, they need a system that can manage those changes in a central repository. In this way, everyone involved in the development process can download a given piece of software, make changes, and submit updates.
Use GitHub’s features to your advantage
Some quick tips I’ll share related to using GitHub to your advantage, in list format:
- Take advantage of GitHub’s issues and PR templates.
- Protect your `
- Use CI integration so that newly submitted PRs are run through checks before you merge them.
- Be deliberate about adding easy-to-search-for labels to your GitHub issues. On CodeBuddies, for example, a contributor (billglover) took it upon himself to clean up the labels and introduced a more efficient system for labeling issues.
Make sure that your contributors are communicating about the issues they’re working on, too. For example, during high-traffic times like Hacktoberfest, it can be very easy for multiple people to make PRs for the same issue which ultimately conflict with each other.
At CodeBuddies, this is the policy we settled on to minimize issue conflicts:
- If a contributor finds a bug or has a feature request that hasn’t been filed yet as an issue, ask them to file it.
- Ask direct contributors to assign themselves to issues.
- Ask new collaborators to comment on an issue if they intend to work on it.
- A maintainer will re-label the issue from
- If the person who claimed the issue doesn’t report back with updates for a couple of days (or doesn’t respond that they still intend to look at the issue after a couple of days), the maintainer will re-mark the issue as
Improve software you rely on
Lots of open source contributors start by being users of software they contribute to. When you find a bug in an open source software you use, you may want to look at the source to see if you can patch it yourself. If that’s the case, then contributing the patch back is the best way to ensure that your friends (and yourself when you update to the next release) will be able to benefit from it.
Diversity by the few
Despite the relatively broad technologies comprised by the list, they come from just a few companies: Google, Facebook, Apple, and Microsoft combined can claim eight of the top 10 biggest launches on GitHub. If we look at the most starred GitHub projects of all time, these same companies populate the top of the list (along with code-learning tutorial resources).
On the one hand, this is to be expected: Bigger companies can make more noise about their open source projects. It’s also true that these companies have tended to release significant, industry-changing code, making anything they do worthy of mass developer attention.
Contributions don’t all have to be code
Contributions don’t all have to be code. On CodeBuddies, we use the all-contributors plugin, which recognizes alternate contributions that contributors can offer to a project — like design, help with documentation, project management, content, contributor walkthroughs, pull request reviews, and discussions on Github issues.
CodeBuddies would not be what it is today without adachiu, who designed CodeBuddies’ logo and many parts of the site.
And it might not have a Medium publication or a transparent way of collecting 501c3 donations on our Open Collective if not for distalx, who in addition to being a core code contributor, suggested both services.
I’ve also generally tried to give contributors the space to add to the project in the ways that they desire — which have often led to creative additions to the project.
Join the community
You can easily join an open source project by subscribing to the mailing list for that project. You can find mailing lists on official websites or on GitHub pages. After being accepted to the list, you can communicate with team members and get support if necessary. Thanks to the vibrant communities present in nearly every OSS project, you are likely to get quick replies to your questions.
Contributing to Open Source is a great way to get started in programming and meet new people. If you are curious about how things work, you may find it easier to make edits in the beginning. This article includes a set of advice for new contributors, along with an example in the Linux kernel’s staging tree.