How to start contributing to open source

Ankit Mittal
pyankit
Published in
5 min readNov 28, 2017

I have been working as programmer for more than half a decade now, yet my open source contributions to established projects have been nil. Although, I do have bunch of repositories on my GitHub which are authored by me and have an Open License attached to them, but these are far from becoming mainstream.

Contributing to established projects have been on the back of the mind but these projects seem to work like magic all the times. Where is the place to add your contribution? If you also think like that, read on as I am sharing the first step I took in contributing back to OSS. This blog is for you, like me have been believing that there are super smart folks out there who make these cool libraries everyone uses and common folks like us are the consumers.

It is true that the thought of contributing back is overwhelming, because how to find what to contribute. Things just work and things to work on are getting thinner and thinner. This is the first myth, I had to quash in my mind. Technology inherently needs smart humans even to maintain the status quo. It needs effort to stay at the same level. This is called operational overload. Any technology, which is working will not keep up on its own. Take example of cars, infrastructure, application production systems, every piece has its operational overload. On quashing this myth we establish rule 1 of OSS contribution.

No technology can upkeep itself, it needs technologists and technicians to stay healthy.

Now, when you have decided to contribute to OSS. Next step is to choose a project. I find the following guidelines work really well for first few times.

  1. Choose a project with your comfortable language or tech stack. Doesnt have to be complete familiarity, but a common ground will help
  2. Choose a project that is frequently updated, check for latest bugs quashed or PRs merged.
  3. Has a beginner contributor guidelines, contributors are friendly to n00b-ish questions.
  4. Gauge the turn around time of the maintainers. This is a contentious rule, not everyone will agree to it. However, I believe this is going to be very helpful for a beginner. Most maintainers are hard working and are always in clutch of time. But for someone who needs to start venturing into OSS from a consumer (user) to a producer (contributor), a week’s turn around time or more is not going to be helpful. You will need 3–4 rounds of back and forth discussions before your changes are merged. If they happen faster, the better. An unfortunate consequence to this will be more of us contributing to those projects which have dedicated teams working on it backed by big companies.

Shortlisting at least 3 projects which fit this criteria.

Next question is Who to ask help for? It is a good idea to spend some time in reading up on conversations either on the comments on bug tracker or google group or a real time chat. Most projects have major contributors present on either of the three channels.

Also, some times good projects have this information on contributing guidelines itself. While you are pondering this, keep in mind that the project is much more than the codebase. It is a community, a documentation, set of tutorials/knowhow, a way of moving forward with the project (how does contributors make decisions, choose direction, choose priorities etc). Everything comes as bundled up with the project. As a corollary, much of the problems of open source communities are related to documentation, tests, test plans, communication, tutorials, technical know hows. Trust in a open source project is a function of all these fringe elements. Code is small part of making open source a success and you can add a lot of value to it by contributing on the fringes. This is a good opportunity as well, you can contribute not only to the core but also to the fringes.

https://github.com/spinnaker/deck/pull/4161/files This is my first Pull request to an established project — spinnaker. It is one liner tooltip change. The story behind this request is related to a task I was doing at my work. I had to copy a pipeline in spinnaker and make minor changes to it. The seemingly simple task took me half a day because I misunderstood something. After talking to experts I figured out how to do the task. I created this small PR to avoid this confusion for everyone else. The maintainers were super quick, and my changes were merged into the master in 2 days. This gave me a super confidence boost. Now I can think of contributing in a bigger way.

Look for fringes, lack of documentation, tests, tutorials, technical knowhow, how to guides and translations. Not only they are a good start but also they add a lot of value to the community.

Next Steps: You have identified few projects, then sent a PR for review to one of them on documentation. Did this few times and have some visibility in the community. Now what.

A good next step is to help the maintainers, since being an OSS maintainer is one of the hard jobs in the software world, that too an unpaid one (except few). There are few ways to do it, catch hold of newly reported bugs, reproduce them, write test cases that fail. Solving it will need deeper knowledge but this is going to reduce the burden significantly. Also look at translations if you know few more languages than the maintainers.

Closing thoughts: Contributing to OSS as a habit is hard, you are basically using your ‘me time’ or ‘family time’ for this. Yet, contributing to OSS is really addictive and it feels good.

PS: There is a growing trend of including OSS contributions in hiring decisions, that sucks. Read https://storify.com/trodrigues/why-i-don-t-like-open-source-a-play-in-3-acts for why that is bad.

--

--