---
title: How to Contribute to Open Source
author: brett
date: 2014-10-14
---

Learn how to get started in the big and scary Open Source community.

---

You are obviously here because you are interested in learning about contributing to the
open source community. We all tend to aspire to be the a programmer that the community
knows and recognizes by their name and contributions. This is a very difficult place to
get your foot in the door and get started with, but if you follow my simple steps you
will be an open source master in no time.

## Picking an Open Source Project
This is probably one of the most difficult steps in starting your road to open source
contributions. Picking which project you want to contribute to. Contrary to popular
belief you do not need to pick a project that you have used before or are even interested
in. As well, it is not necessary to have a knowledge base that aligns with that of the
project. For example, I have always wanted to call myself a linux kernel programmer,
this is something I have never done before and do not even have much interest in, but
it sure would be cool if I could tell my friends and co-workers that I was a linux kernel
developer. So I have decided that I am going to contribute to the [linux kernel](https://www.kernel.org/).

## Prepping to Contribute
To some people contributing to a project that they know nothing about is an easy task,
but truth be told it is not. Some people will struggle with it; therefore, I think it
is necessary to cover some of the steps I use to prepare for contributing to a new project.
I start with an extra large [Pre-Boosted Jamba Juice Smoothie](http://www.jambajuice.com/menu-and-nutrition/menu/smoothies/pre-boosted)
immediately followed by a rigorous spin class to get my blood pumping. Now that your feeling
nice and healthy you need to ensure that you look the part; this usually consists of an
Italian hand made suit, but a tuxedo will work in case your tailor is currently out of town.
Now, you are ready to tackle the world and it is time to devote some of this prep time to the
project at hand.

All that is really required is a quick glance at the wikipedia page for the topic, in my case
[Linux Kernel](http://en.wikipedia.org/wiki/Linux_kernel). Do not waste too much time reading
the wikipedia page, since some of the articles can be fairly long, my article alone has more
than 200 words (there is no way I am reading all of them). Usually just reading the introduction
and skimming the table of contents will give you enough information so that you sound like you know
what your talking about (since that is all that is needed).

## Making Your First Open Source Contribution
Ok, so lets do this! What should we contribute? We want to make sure that we contribute something
of merit to the project as well as something that other people will notice, since we really just
want people to recognize us as being helpful contributors to the project. You should always start
off small and work your way towards larger contributions. Let us start with opening an issue ticket.
Most maintainers love issue tickets, it is how they get good (and bad) feedback from the users of
their software. It also will help drive the development of the project. If you open a ticket
asking for a feature or a bug fix then the maintainer(s) will have to work on it.

Picking an issue to report about can sometimes be a very difficult task, but luckily I have a quick
and simple tip. Start by picking an already exiting ticket, preferably something that has been in
the backlog for a very long time, and simple create a new ticket asking for the same feature or
fix. Sometimes maintainers get very busy with other work and will forget about an issue, so it is
usually best to try and flood their ticket system with repeat issues so they do not forget about them.

For my first contribution I have decided to pick [this issue](https://bugzilla.kernel.org/show_bug.cgi?id=13868).
It is a perfect candidate since it has not been updated since 2009 (remember, the older the better).
As well as being old, it just sounds important. A memory leak? That sounds serious. I am shocked the
maintainers have not fixed this issue yet. Remember it is not enough to just comment on the original
ticket, instead we want to open a new ticket (this way it’ll show up as being new and not from 2009).
I highly advise trying to re-word the original ticket rather than simply copy/pasting, but sometimes
the original words are big and hard to understand and copy/paste might be the only/best way to ensure
that you get your point across.

That is it, following these easy steps you have just made a worth while and ever lasting contribution
to the project of your dreams. You are now one step closer to being able to call yourself an open
source linux kernel developer.

## Follow Up Contributions
Making only a single contribution to a project does not get you known in the community. You need to
continue the above process as often as you can to ensure that those who are directly involved with
the project know who you are.  The more you contribute the faster you will get noticed. Contributing
the same thing over and over again can get boring, so remember, you need to switch up your
contributions from time to time. This means that you cannot just continue to open repeat tickets
over and over again, it will get boring very quickly. So make sure that you comment on a few tickets
here or there, even if you do not know what the issue is, just try to remember the few tidbits of
information that you have picked up from scanning wikipedia and the other issue tickets you have read.

People think contributing to projects is all about writing code, but this is a very common misconception,
you can get by with just creating and commenting on project issue tickets. Plus, no one actually reads the
code or git history to see who has contributed to a project. Instead they are more inclined to monitor and
notice the contributors to the issue or ticket system for the project.

## Conclusion
That is about it. You have now contributed to the project of your dreams and can call yourself a contributing
open source developer. Make sure to add this project to your website and your resume so people will known to
associate you with that project (I am adding “linux kernel developer” to my resume right now!). Now that you
are well known for one project you can move on to the next and next until you are known all across the internet
for your valuable contributions to all sort of projects.
