feel free to comment here: facebook note
Getting your first commit in an open source project
Here is a note I'm hoping will help you understand the importance of
contributing to open source projects and how to get your first commit.
I recently realized that github's inline editing capabilities has
greatly simplified this process and made it easier for non technical
people to have an impact.
1. Why contribute to open source?
There are lots of reasons to contribute to open source projects. Here are three
reasons which motivate people I know:
Reason 1: you believe in the philosophy behind open source
Open source allows people to build on top of other people's work. Almost
everything running on the internet (Google, Wikipedia, Facebook, etc.) depends
to some extend on one or more pieces of open source software. If you believe in
this philosophy, contributing to open source projects will give you tremendous
satisfaction, especially when your contributions will be used by millions of
people around the world!
Reason 2: it's a way to meet and work with bright people
Most successful open source projects are driven by a core team of very talented
people. Your first contribution might be very minor and will not involve a lot
of interaction, but as your contributions increase, you will eventually get to
really work with team. You might even get to meet them in person!
Reason 3: it's a great way to improve yours skills and resume
Contributing to open source projects will require you to learn something or solve
a challenging problem. It also looks good on a resume. A potential employer can
go and actually see what were your contributions.
2. How does it work?
Open source projects are hosted on various platforms. For the sake of simplicity,
let's assume you are going to use github.com. The process is very simple:
- create a github.com account and find a project you would like to contribute to.
- fork the project. This means you now have a "copy" of the project.
- make one or more changes (Github lets you directly makes changes using your browser, which is great to get started). At this point, your changes are "suggestions" and only exist in your copy.
- send a "pull request". This will notify the project maintainers about your change. If they disagree with the change, they will tell you why and you can go back to step 3. If they agree on the change, they will "merge" the change into their copy.
Congratulations, you got your first commit.
3. Finding a project to contribute to
Here are a few suggestions on how to find a project:
- Work on something you use and like. This way you will already be familiar with some aspects of the projects and you will have an idea for what works and what doesn't. You will be able to use your improvements for yourself.
- It's easier to contribute to a small project than a larger one. Larger projects are usually more complex and require understanding more code. If a smaller project has less people involved with it, it will be easier for you to get to know everyone and for everyone to get to know you.
- It's also easier to contribute to newer projects. Older projects usually have strict guidelines that can take a while to get used to. They often have internal politics that come into play. Finally newer projects have a lot of "low hanging fruits", simple things that anybody can fix.
- There are websites like http://openhatch.org/ that can help you find a project based on your skills and interests.
4. Finding something to fix
Once you have figured out a project you like, you should join the mailing list
and go over the archives. Try to help people on the mailing list and don't feel
shy to ask questions.
Some projects have properly organized ToDo lists, which can help you get an idea on how you can help.
Here is a short list of things that nearly every project can benefit from:
- Improving the way things are organized. E.g. creating a task list if there isn't any or making sure the task list is up-to-date.
- Improving the documentation. Make sure the project is clearly documented. Think of the documentation for the end user as well as documentation for peer developers. If you find spelling or grammatical mistakes: send a fix. If you are reading through source code, and you find that something is hard to understand: document it.
- Helping out with translation efforts. Some projects need help with translations (the application and/or the documentation). This requires you to be fluent in more than one language though.
- Testing the next release.
- Writing test cases. Most projects are usually under-tested. Contributing test cases is usually easy (but requires some technical skills though) and will prevent regressions as the code evolves.
- Start fixing minor bugs. Make sure your test your changes. As you familiarize yourself with the code and the process, you will be able to fix larger bugs and even implement new features.
- If you don't have technical skills you can help organize events around the project, answer questions users might have, etc.
5. A few things to keep in mind
- Never contribute something you didn't write yourself!
- Don't just put some garbage code on github to pretend you are an open source contributor. While it's ok to start off with simple things, you should seek to build something others will use.
- You can get your first commit in a few hours. After that you will not have to spare more time than you can. However, if you want to become a serious contributor, you are going to typically commit to ~1 day a week (think of it as an annual ski or theater pass).