How To Become an Open Source Contributor

As a software developer I feel happy when I contribute to community. It is an opportunity to improve your development skills and learning new things. It is both educative and entertaining process. There are so little things that satisfies as much as an accepted pull request :)

Becoming an open source contributor is a dream for some developers. If you are a new developer or never made a contribution before and want to become a contributor, in this post I will give several suggestions for you.

Where To Start

Well, let’s assume that you found a project on Github and you want to contribute that project. Which steps to follow to become a contributor? What might be helpful to the contribution process? I will list those baby steps that I follow which made the contribution process easy for me.

1- Use that project in production as much as possible

This might be the most important part to become a contributor. Using a tool in production or in daily life helps you to understand it better. While using the tool you will probably face with errors which is actually bugs that needs to be fixed.

At this point you can start contributing by creating an issue which describes the steps to reproduce that error.

After that you can get your hands dirty to get dive into the source code to investigate the root cause of that bug.

When you find the problem and fix it, you can create a pull request.

As an example when I write C# almost 2.5 years ago, we used to use RestSharp as http client like most of the other developers. At that time we had trouble while comparing almost identical two DateTime, we investigated it and we found that RestSharp had missing a DateTime format while deserializing json string. And I decided to fix that issue with opening a pull request. After that my pr merged and I became a contributor to RestSharp.

2- Take a look at source code

When I curious about a project, I will clone it and take a look at source code of it. It is not always a good starting point to contribute but it might help you to find some code to refactor.

As an example, when I start my career at Trendyol I forked a project which is an internal framework used to used for legacy projects. When I looked at source code I found a piece of code to refactor.

Another example that I can give about looking source code is while we using Consul in our projects I took a look to source code and I saw there was an array declaration without specified length (declaring length while initialization is a performance improvement for arrays in Golang ). So I made one line contribution with specifying length of that array. Even that was satisfying for me :)

There is one more thing to do in source code: “Measuring test coverage”. Writing unit tests to increase test coverage is another way to contribute to the project. For example, I am preparing a pr to Kubernetes that contains unit tests which increases test coverage.

3- Read documentations and apply examples

Reading documentation helps you to understand how to use the tool. There are two things related to reading docs. One is that you might need an information about a feature and you can not find it in docs. Here you can contribute by writing documentation about that part. The two is sometimes documentations might not be not up to date or might have typos. When you faced with that you can contribute by fixing docs.

I remember that I was following an example on Istio documentation and when applying it I faced with an error. I realized that example has a typo on yaml configuration. I created a pr and fixed that documentation for saving other developers time.

4- Use client of that project (if exists)

Diving right into the source code of an open source project might be hard especially if the project has huge source code. At this point it might be helpful to start using client code of that project. This is also helps to understand internal structures of that project.

Let’s take Kubernetes as example, it has a quite huge source code and it is not straight to dive into source code as a stranger. But, you can use Kubernetes client and make some example projects which interacts with Kubernetes. You will see that it helps you to understand better internals of Kubernetes.

5- Search for issues

Searching for issues to resolve is another alternative to start contributing but it might be hard for a beginner. You can always start searching issues labelled as GoodFirstIssue.

When I writing Java we used to use OpenFeign with in our Spring Boot projects. I decided to search issues to find if there is any easy one to get involve to the project. And I found it!

I start to resolve that issue and opened a pr for it. It accepted by authors and I got my name in contributors.

There are sites that helps you to find projects to contribute. You can filter projects by tags or languages.

You can also use Github directly to find projects by filtering:

6- Create an open source project

Creating an open source project might sound very hard at first glance. But in time you will realize that open sourcing your codes even like basic automated tasks might help others too.

So following this thought I created a repository called docker-shell which does auto-completion and suggestions for docker commands. It grew further than I expected. It helps developers who uses docker in daily life.

You can contribute to docker-shell project as well:

Before finishing the post I want to say that contributing to other projects has it’s own benefits. First and obvious one is that it improves your development skills. Your code is reviewed by other developers and this gives you a new perspective. Also you are making new networks and friendships with other developers.

Thank you for reading so far. Take care of yourself until next post.

Sr. Software Engineer @Trendyol & Software Development Enthusiast | Interested in Go&Java DDD, CQRS, Event Sourcing, Scalability. Open Source Contributor.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store