The 6 Easy Steps to Open Source Contribution

Open Source Contribution

Share This Post

Open source contribution is a great way to build better programming skills, learn new things, and gain significant visibility as a developer. Imagine for a second what if, instead of showcasing yet-another-college-project, you can proudly state you fixed a significant bug in Ubuntu or added a new feature that node.js desperately needed. It would be a whole different game, wouldn’t it? But of course, open source contribution is not easy, especially if you haven’t done it before.

This is the guide you need. I will show you how to get started with open source contribution, how to find open source projects where you can contribute, how to engage the owner of the repository, and how to finally provide your changes.

Of course, in this guide we assume you are already familiar with programming, and you want to contribute to an existing project. We are not teaching any programming here.

Where to Start with Open Source Contribution

Register on GitHub.com

That should be easy, and you probably are already registered. Now owned by Microsoft, GitHub.com is the place where the source code resides, hosting virtually any significant code project in the world. GitHub is cloud-based git service where anyone can register and create its own repository, public or private.

A repository is an archived version of source code files with versioning, so that is easy to keep track of how the code evolves over time (because you have all the different versions). You write code on your PC, then you push it to GitHub. Like any other git server, GitHub has all the features a developer may want.

Specifically, it is designed to allow multiple developers to work on the same project because it has good ways to manage conflicts (two versions of the same file with different content), and allows for parallel development of different feature.

No surprise, most open source projects are hosted on GitHub.com. To contribute to do those, you need to be technically able to do so, which means having a GitHub.com account. If you haven’t already, register to GitHub.com from here.

Yet, registering is not enough. Spend some time adding some credibility to your profile, add a profile picture, your bio, and a link to a website. For example, here is my personal GitHub profile as of March 2022.

Alessandro Maggio's Git Hub profile
This is my personal profile on GitHub.com

Okay, that was the easy part. What’s next to start open source contribution? Well, finding a project of course!

Find Open Source Projects to Contribute

The good news is you can contribute to any open source project, even the most demanding. The bad news is that having your code merged in main will be very hard. In other words, you can take any open source project and create your spun-off version with small changes (new features, a bug fix etc.), and have that available for distribution. However, for that version to be integrated in the mainstream project, so that any subsequent development is based on your version, that is extremely hard. Yet, that hard part is what you want. You want your code to be part of the big open source project you dreamed of, not your fly-by-night version of it.

So, to have a meaningful open source contribution you want to find a project where you have a chance of making your changes part of the main project. This comes down to three things:

  • Your expertise on a technology, such as a programming language
  • The procedures the open source project has in place for contribution
  • Your willingness to help

You can influence the first and the third, while you need to look for a project that has procedure matching your needs. So, for example, if a project does not accept contribution from new members, maybe is not the project for you.

How to find an Open Source Project to Contribute To

Now that you know the theory about finding open source projects, how do you go about it exactly. The traditional approach goes something like this:

  1. Browse GitHub.com and search for projects
  2. Check the license file of each project to ensure it is open source, for example if it has some form of Creative Common license
  3. If so, check the file that provides guidelines for contribution (such as CONTRIBUTING.md) to understand how you can contribute
  4. Look at the open issues and find something you feel confident working on

This process can be long and painful, and certainly not fun. Fortunately, there are also better and faster way to find open source projects open for contribution from beginners. For example, there are lists and directories of open source projects that you can contribute that you can find online.

Instead of wasting time browsing the entire GitHub.com list of projects, you can check the following lists. Those are aggregators that find beginner-friendly projects that actively want contribution.

Take a look at all three, but particularly at the first, which conveniently organizes projects by programming language.

Provide Open Source Contribution, Fork a Project

Now that you have found your dream open source project, you only need to contribute. To contribute to a project you need to create a copy of it in a separate branch, and then make a pull request to merge your changes back into the main branch.

This means copying the project in your own repository and doing any change you thing are reasonable. Then, the pull request is a request saying “can you please integrate those changes in the project?”. Of course, you shouldn’t attempt to push any type of change. Instead, focus on the issues that are already listed on GitHub and create a pull request (or simply PR) to fix one of those issues or to add one of the features listed in the issue tab.

If you really want to add something new to a project, something that is not part of the issue list, you may want to post an issue first describing the feature you are requesting. A issue is like an email thread or post on a forum, and you can have a discussion with the maintainer/owner of the project. If they agree this feature is important, then you can proceed developing it in your branch.

To create your own branch of a project, you need to fork it. Do it with the fork button at the top right in the repository’s page.

If you want to make open source contribution, you need to fork a project with the appropriate buttom on the top right of the screen
Use the fork button to create a clone of a repository for you to edit.

GitHub will set up your own copy of the repository soon. In this example, we see that I created a copy of awesome-for-beginners on my profile (alessandromaggio). GitHub reminds me that it has been forked by MunGell’s awesome-for-beginners repo.

When performing open source contribution, you will see your project has been forked from the main project
My forked version of the main repository.

Work on your forked repository like it was your own (because it is), creating branches, sub-branches, making multiple commits and so on. All of that, until you reach the final state that, in your view, will resolve one of the issues listed on the main project. At this point, you are ready to make the PR back into the main branch.

In your forked project, navigate to the Pull Requests section and create a new one.

The key to open source contribution is to make a pull request in the main repository, like this one editing README.md
Creating the pull request.

GitHub will show if you can merge into the main repo and what are the changes you are bringing to the table. Note that, at the beginning of the screenshot, it says what branches you are merging (in this case, my forked master against the MunGell’s master). If all is good, proceed to create the PR.

Once you create your PR and posted it to the open source project you are done. At this point, you only need to wait for the project’s maintainer to review it and, hopefully, integrate it in the main project. There is nothing else for you to do right now, it will be up to the maintainer.

The created pull request is the end of the journey for us. The decision if our open source contribution will be accept stays completely within the project maintainer's will
Our completed PR, waiting to be reviewed my the maintainer.

Open Source Contribution in Summary

In the end, open source contribution is simple. If you are in a hurry, this brief summary or TL;DR section can give you a quick insight on how to proceed.

  1. Browse a directory of open source projects that are open to contribution by beginners. You can find a list to three of those directories up in this guide.
  2. Pick a project where you can have a meaningful contribution. That is, a project where you know the programming language in question and where there are open issues that you can fix.
  3. Read CONTRIBUTING.md for instructions on how to contribute
  4. Fork the project to create a clone of the repository in your profile, then do all your changes here
  5. Once you are complete, create a Pull Request onto your clone repo back into the main repository
  6. Wait for the maintainer to approve it

That’s it. As simple as that.

Now, if you really want to start with open source contribution immediately and you are familiar with Python, check out my own library pythonping (both on GitHub and in this tutorial). It is a simple library to perform ICMP pings natively in Python, and it is used in more than 2 thousand other repositories, and that has been downloaded over 1.2 million times. I am happily accepting newcomers to this project, so be sure to check it out!

Picture of Alessandro Maggio

Alessandro Maggio

Project manager, critical-thinker, passionate about networking & coding. I believe that time is the most precious resource we have, and that technology can help us not to waste it. I founded ICTShore.com with the same principle: I share what I learn so that you get value from it faster than I did.
Picture of Alessandro Maggio

Alessandro Maggio

Project manager, critical-thinker, passionate about networking & coding. I believe that time is the most precious resource we have, and that technology can help us not to waste it. I founded ICTShore.com with the same principle: I share what I learn so that you get value from it faster than I did.

Alessandro Maggio

2022-05-12T04:30:00+00:00

Prime Opportunity

Dev

2400