Contributing to open source can be a rewarding way to learn, teach, and build experience in just about any skill you can imagine.
Why do people contribute to open source? Plenty of reasons!
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.
Whether it’s coding, user interface design, graphic design, writing, or organizing, if you’re looking for practice, there’s a task for you on an open source project.
Open source projects with warm, welcoming communities keep people coming back for years. Many people form lifelong friendships through their participation in open source, whether it’s running into each other at conferences or late night online chats about burritos.
Working with others on a shared project means you’ll have to explain how you do things, as well as ask other people for help. The acts of learning and teaching can be a fulfilling activity for everyone involved.
By definition, all of your open source work is public, which means you get free examples to take anywhere as a demonstration of what you can do.
Open source offers opportunities to practice leadership and management skills, such as resolving conflicts, organizing teams of people, and prioritizing work.
You don’t have to become a lifelong contributor to enjoy participating in open source. Have you ever seen a typo on a website, and wished someone would fix it? On an open source project, you can do just that. Open source helps people feel agency over their lives and how they experience the world, and that in itself is gratifying.
If you’re a new open source contributor, the process can be intimidating. How do you find the right project? What if you don’t know how to code? What if something goes wrong?
Not to worry! There are all sorts of ways to get involved with an open source project, and a few tips will help you get the most out of your experience.
A common misconception about contributing to open source is that you need to contribute code. In fact, it’s often the other parts of a project that are most neglected or overlooked. You’ll do the project a huge favor by offering to pitch in with these types of contributions!
I’ve been renowned for my work on CocoaPods, but most people don’t know that I actually don’t do any real work on the CocoaPods tool itself. My time on the project is mostly spent doing things like documentation and working on branding.
— @orta, “Moving to OSS by default”
Even if you like to write code, other types of contributions are a great way to get involved with a project and meet other community members. Building those relationships will give you opportunities to work on other parts of the project.
I first reached out to the Python development team (aka python-dev) when I emailed the mailing list on June 17, 2002 about accepting my patch. I quickly caught the open source bug, and decided to start curating email digests for the group. They gave me a great excuse to ask for clarifications about a topic, but more critically I was able to notice when someone pointed out something that needed fixing.
— @brettcannon, “Maintainer Stories”
- Organize workshops or meetups about the project, like @fzamperin did for NodeSchool
- Organize the project’s conference (if they have one)
- Help community members find the right conferences and submit proposals for speaking
- Restructure layouts to improve the project’s usability
- Conduct user research to reorganize and refine the project’s navigation or menus, like Drupal suggests
- Put together a style guide to help the project have a consistent visual design
- Create art for t-shirts or a new logo, like hapi.js’s contributors did
- Write and improve the project’s documentation
- Curate a folder of examples showing how the project is used
- Start a newsletter for the project, or curate highlights from the mailing list
- Write tutorials for the project, like PyPA’s contributors did
- Write a translation for the project’s documentation
Seriously, [documentation] is mega-important. The documentation so far has been great and has been a killer feature of Babel. There are sections that could certainly use some work and even the addition of a paragraph here or there is extremely appreciated.
— @kittens, “Call for contributors”
- Link to duplicate issues, and suggest new issue labels, to keep things organized
- Go through open issues and suggest closing old ones, like @nzakas did for ESLint
- Ask clarifying questions on recently opened issues to move the discussion forward
- Find an open issue to tackle, like @dianjin did for Leaflet
- Ask if you can help write a new feature
- Automate project setup
- Improve tooling and testing
- Answer questions about the project on e.g., Stack Overflow (like this Postgres example) or Reddit
- Answer questions for people on open issues
- Help moderate the discussion boards or conversation channels
- Review code on other people’s submissions
- Write tutorials for how a project can be used
- Offer to mentor another contributor, like @ereichert did for @bronzdoc on Rust
While “open source” often refers to software, you can collaborate on just about anything. There are books, recipes, lists, and classes that get developed as open source projects.
- @sindresorhus curates a list of “awesome” lists
- @h5bp maintains a list of potential interview questions for front-end developer candidates
- @stuartlynn and @nicole-a-tesla made a collection of fun facts about puffins
Even if you’re a software developer, working on a documentation project can help you get started in open source. It’s often less intimidating to work on projects that don’t involve code, and the process of collaboration will build your confidence and experience.
Why you Should Contribute to Open-Source
Contributing to open source projects can be a rewarding way to learn, teach, share, and build experience.
There are plenty of reasons why you should contribute to an open source project, such as:
- To improve the software you rely on daily.
- To find a mentor if you need one.
- To learn new skills or improve on existing ones.
- To share your skills.
- To gain a much deeper knowledge about the software you’re using.
- To build up your reputation and help grow your career.
- Plus, it’s fun and gives you personal satisfaction and hey, you never know who is watching, maybe it’s your next employer or partner 🙂.
Step by Step Guide on How to Contribute to Open Source
When we say contributing to open-source, it does not necesarilly mean that you need to know how to code. There are different ways in which you can contribute even if you are a non-coder – but having some coding skills will help you (and the projects) out a lot.
Some common contributions can be through:
- Adding a description to a project’s documentation to elaborate on a certain point, mostly referred to as a README file (check this guide on how to write a Good README file).
- Giving guidance on a specific project and how to use it.
- Adding sample output to show how the code works.
- Writing in-depth tutorials for the project.
- Adding translation for a project – A good place to start with this might be with the freeCodeCamp’s translation program.
- Answering questions about a project (like on Stack Overflow or Reddit)
- You can offer to mentor another contributor.
- You can fix typos and arrange the project’s work folder correctly.
All these ways, and many more, count towards contributions. Now what exactly should you know before you start contributing to an OS project?
What to Know Before Contributing to an OS Project
Just as we expect each open-source products to be different, so are the communities. Each community has it’s own rules and will have different guidelines and roles, and if you are lucky some also do give rewards after you contribute.
But despite all this, there are some common features which apply across all OS projects, and that’s what we are going to talk about:
Roles in a typical OS Project
In a typical OS project we will have the following people:
- Author – This is the person who created the project. They have the power to assign new roles to other members to help with the project’s maintenance.
- Owner – The owner has administrative ownership of the project (and can be the same person as the author)
- Maintainers – These people are responsible for driving the vision and goals of the project. They’re usually people who feel responsible for the direction of the project and who are committed to improving it.
- Contributors – Contributors add to the project in one way or another. They follow the same code review process, are subject to the same requirements on code style, and so on.
- Community Members/Users – These valuable members of the community can provide feedback about features, bug reports, and more.
Must have elements in all OS projects
When talking about an OS project, they are categorized in several ways depending on structure, type of product platform, programming language used, whether it’s sponsored or fully independent, and more.
All this info should be outlined with the help of the guidelines and information:
If a project does not have an open-source license, then it is not open source. The license helps protect contributors and users. Businesses and savvy developers usually won’t touch a project without this protection. If you’re wondering how to get one and choose the correct one for your project, check out the official OS license website: https://choosealicense.com/.
- README file
This is a manual that explains how to get started with a project. It lists the requirements for contributing to the project, the steps to take to contribute to the project etc… A good README should contain everything a potential contributor would want to know about the project. If you already have a project and you’re trying to write a good README file, this guide will come in handy: How to write a good README file.
- Contribution Guidelines
These are guidelines that help people who contribute to the project know exactly what is expected from them. And even though it’s not mandatory is always a good practice to add one. If you need help writing one or understanding what it entails, the official OS website has a template guide to help you out: Contributor guidelines template
- Code of Conduct
A code of conduct is a document that establishes your expectations for how your contributors and participants behave. Adopting and enforcing a code of conduct can help create a positive and welcoming environment for your community. The OS guide explains more on what it entails: https://opensource.guide/code-of-conduct/.
As an individual or an organization running an Open-Source project, it’s all about creating a community where people can grow together. This means that you will have to develop a friendly environment where people will get to share ideas, work on challenges, and even have random chats at some time.
There are some go-to options here, and you can use tools like:
- Issue Tracker
This is where you keep track of your work on GitHub, and how development happens. In case there’s any problem a contributor can create an issue and link it to a pull request and fellow contributors can opt in to try and fix it. Then after it’s fixed it’s closed.
- Pull Requests
They let you tell others about changes you’ve pushed to a branch in a repository on GitHub. Once a pull request is opened, you can discuss and review the potential changes with the collaborator and add follow-up commits before the’re merged into the base branch.
- Chat Channel
Although it’s not mandatory, you can consider it a good practice to be part of an OS community channel. It is specifically meant for people to share their ideas and have conversations. Some of the most common media for this purpose include Slack and Discord.
So, now you have an idea of what an OS project is and what to expect when you contribute to one. Moving into the most important part, how do you know which project to contribute to?
How to find an Open Source Project to Contribute to
Contributing works on all levels, there is no need to over think how you’re gonna do it. Instead think of some of the projects you already use and how you can make a change to them or improve on them.
Research has shown that around 30% of casual contributions are documentation, typo fixes, or even translations.
At the begining I promised to share some of the projects that helped me out when I made my first contribution. Well lucky you, if you are a first-time contributor – which everybody is at some point – here are some links that will get you started in the open source world:
- first-timers only
- first contribution
- contributor ninja
- open-source friday
- 24 pull requests
- python project scripts
- code triage
Quick hack for you In the world of open-source software, issues get reported and fixed pretty quickly. So, a good way to kick start is to take on an issue and be sure to try to work on it promptly.