How to get started with Open Source?

There are a lot of developer and wiki guides to set up and get started with your first open source contribution. As a beginner, I always found these wikis a bit overwhelming as they suddenly introduce you to a lot of options and projects. As a beginner, I wasn’t looking for lots of options but rather wanted someone to hand hold me and help me find one project which was easy to start with open source.

Throughout my college days, open source fascinated me and I always wanted to contribute to some open source project but couldn’t find the right project. When I was in the second year of college I made a failed attempt to kick start my open source journey by applying for Google Summer of Code. I attribute my failure to these reasons:

  • I simply wanted to land an internship with GSoC and could never zero down on a suitable project to get started.
  • I found the developer guides overwhelming as they gave me a lot of options and I wasn’t able to decide what was best for me.
  • I didn’t dedicate enough time to methodically get started with open source. Rather than focus on finding the right project, I focussed on making the first patch and submitting a proposal.

It’s also very important to ask yourself why you want to contribute to open source before actually making a contribution. The answer might be different for different individuals but it should be convincing enough for you to make the choice.

In this post, I will share some tips on how to choose a project and make your first contribution to open source.

Why contribute to open source?

  • Improve your existing coding/design skills
  • Meet people who are interested in similar things. Open source communities are more often than not very welcoming and you might soon form lifelong friendships through your participation be it in online chats or running into each other at conferences.
  • Personally, I believe that having a mentor and mentoring someone is very important to learn continuously. Open source can fulfill both these needs.
  • It’s empowering to make even a very tiny contribution. I have made 100s of contributions to open source but am most proud of my little contribution on Wikipedia where I added an image to Parle-G’s article from Wikimedia Common’s image repository.

How to choose a project?

There are lots of open source projects out there, but for a beginner, your options might be limited. Most of the popular projects on Github are large codebases which might be a bit overwhelming for a beginner.

Personally, my criteria for choosing a project is based on the following factors:

Active Project

At first glance, the pulse as shown on Github can be a good indicator to check whether the project is being actively maintained or not.

A look at the number of open/closes issues, and open/merged pull requests give a fair idea about whether the project is still actively maintained.

Beginner Friendly

It should be a beginner friendly project. Project’s wiki is a good indication of how welcome new-comers are to the project. Project maintainers have to make lots of efforts to make their projects appealing to new-comers. Github has a guide for project maintainers that helps them make their project beginner friendly.

Here’s how Wikimedia Commons app’s community profile looks . We made an effort to tick off most of the items in the checklist so that its easier to get started for newcomers.

Some projects are open source but are not beginner friendly and have just a core group of developers who make contributions. For eg., some projects already have a core team of full-time developers who are paid to maintain the project. Such a project will people assigned to most of the issues and newcomers might have limited opportunities to make impactful contributions to it.

Coding Language

It should be in a language that I am comfortable with, eg. Java, Python. Rather than getting familiar with an entirely new language to contribute to a project, it’s much simpler to choose a project which uses a language you already know. I make most of my contributions to Wikimedia Commons Android app as I am already familiar with Java and Android. It makes it much easier to understand the existing code base and make contributions to it.

Project Popularity

It should be reasonably popular. The number of stars/forks a project has can be a fair index to gauge the popularity. Naturally, a project like Linux with 780K commits and 62K stars would be overwhelming for a beginner. I would instead choose a project with a few thousand commits and 100–5000 stars. I believe the chances for it being beginner friendly is much more when compared with an immensely popular project.

Also, taking a look at other statistics like last commit, contributors, traffic, code frequency, etc. can give a fair idea about the project’s popularity and its activity.

Hosted on Github

Also, it should preferably be hosted on Github. If the project uses some other tool for code review, for instance, Gerrit then its a bit of turn off for me as it requires additional steps for setting up the environment. For eg., most of Wikimedia projects use Gerrit for code review. I never found it appealing enough to set it up and start using it. I agree that it’s not a significant factor while deciding on the project but I prefer Github for the entire workflow.

Conclusion

Once you have zeroed down on the project that you want to contribute to, the next step is finding the first issue that you can pick up and fix. Keep in mind that you don’t have to stick to the project forever if you don’t like it. The project is meant to make you get started with the journey. Open source guide has a few checklists that could help you to get started with your open source journey.

Here are some curated lists of beginner-friendly projects/issues:

Make sure you give this post 50 clapsand followmeif you enjoyed this post and want to see more!


Written on October 13, 2018 by Vivek Maskara.

Originally published on Medium

Vivek Maskara
Vivek Maskara
SDE @ Remitly

SDE @ Remitly | Graduated from MS CS @ ASU | Ex-Morgan, Amazon, Zeta

Related