The open source movement has been responsible for many great innovations over the past few decades. Linux, the Apache Web Server, and Rails are just a few examples of open source projects that have elevated the web industry to new heights.
In this post I want to discuss the ideas around the open source movement, and why you should consider giving up some of your free time to work on an open source project. Just to be clear, you don’t need to be a programmer to work on an open source project. In fact, it’s often the case that the people open source projects need the most are creative designers, copywriters, and translators.
Why Bother with Open Source?
The open source software movement is something that many people outside the tech industry struggle to understand. Why would you give up your free time to work on something you’re not getting paid for?. I’ve heard this question many times when speaking with friends and colleagues from outside the industry. To them it seems counter-intuitive to work on something for free. So if you’re not getting paid for this work, why should you do it?
Note: Some people do get paid to work on open source projects. For example, Google engineers get paid to work on Chromium as it’s their full-time job.
There are many benefits to working on an open source project. For me personally, the biggest thing has been having the opportunity to work with some really great people. Open source allows you to make connections far outside your normal circle of friends and co-workers. Casting out into such a wide pool of talent can be daunting at first. You might have to deal with issues you haven’t encountered before, like language barriers or working with people in different timezones. All of this is good experience though, which leads me into my next point.
Working on an open source project allows you to develop your skills, learn new things, and gain valuable experience working on a collaborative software project. I can’t stress enough how important this is, especially if you’re a student or just starting out in the industry. The experience that you’ll gain through working on an open source project is invaluable. This isn’t just limited to developing technical skills. Being able to function as part of a team is also really important, and something that companies look for in job applicants.
Finding a Project
Hopefully by now you’re sold on the idea of working on an open source project and eager to get started. But how do you find a project to work on?
The first thing you should do is to look at the software you use every day. Are any of those products open source? If so, those projects are the ones you should check out first.
The chances are you’re going to do much better work if you join a project that builds something you use regularly. You’re more likely to notice little bugs and things that could be changed to make the product easier to use. This concept is generally referred to as dog fooding.
If you’re still stuck for a project to work on take a look at GitHub or Google Code and browse the projects until you find something you’re interested in.
There are exceptions to the ‘dog fooding’ rule. You might find a product that you won’t use every day, but if it’s having a real impact on the world, that might be enough to keep you motivated. The Google Person Finder project would be a good example.
Contributing to a Project
Now that you’ve found a project to work on, where do you start? The first thing you should do is check out the project documentation. Many projects have a wiki page that outlines how to get involved. This will usually explain the project’s mission and the process for making your contributions. It’s also worth looking out for a coding style guide that defines how your code needs to be formatted for it to be accepted into the codebase. Some projects will do things differently to others so it’s important to read through this information if it’s available. Again I’m falling back to my experience as a developer here, but you may find guidelines for designers, copywriters, or translators too.
The next place you should look is the project’s issue tracker. Browse through the list of issues and try to identify something you’d like to work on. Some projects (especially larger ones) maintain a list of issues that are ideal for newcomers to the project.
Many projects have forums or chat rooms where members hang out and chat about the project (as well as other things). Don’t be afraid to jump in and introduce yourself to the community. These people are there for the same reason you are. They just want to build something meaningful and have fun along the way.
You Are Not Your Code
Okay so now you’ve joined a project, submitted your first pull-request, and are waiting anxiously for someone to review your code. Then an email drops into your inbox. You open it and find that your pull-request was rejected, or someone is questioning a design decision you made. It’s natural to feel a little disheartened at this point, especially if you’ve worked really hard on your contribution. The key here is to not get too defensive or start an argument. I’ve seen this happen many times and it almost always ends with someone leaving the project.
Just remember, you are not your code.
The objective of code review is to make sure that a project’s codebase remains high quality and sticks to a consistent style. It would actually be worrying if every patch or pull-request got accepted without any discussion. This would probably mean one of two things. Either your contribution just got blindly accepted, or you’re a genius programmer (hint: click the link, it’s a great talk).
That said, you can reduce the chances that your contribution will be held back by ensuring that you follow the guidelines in the project documentation. If you’re making any big changes it’s a good idea to discuss your design decisions with the community before you write any code.
The best thing about working on an open source project is that you have control over what you work on. Contributing to open source projects is fun, that’s why people do it. If you’re not having fun, you’re free to go work on something else.
If you’ve never contributed to an open source project before I strongly recommend that you give it a go. You’ll gain some great experience and meet some fantastic people along the way. You never quite know where the journey will take you.
Thanks for the information my friend, totally agree with you. +10 points from me.
There are also apps that help with open source involvement. I run one called CodeTriage that sends people issues to help with in their inbox: https://www.codetriage.com
It’s also an open source project too.
hey i’m a newbie to android dev and i want to contribute to android apps but the problem is that should i learn android first or start contributing from now.
Hi, I’m looking to learn project management skills in a software environment. Any advice on looking into possibly managing open source projects from a PM side?
If you’re interested in agile project management you might want to check out Treehouses course on Scrum basics.
I’d also recommend looking into the work of Brian Fitzpatrick and Ben Collins-Sussman. Here’s a talk they gave at Google IO that I’d recommend watching. It talks about managing open source teams. https://www.youtube.com/watch?v=-F-3E8pyjFo
Brian and Ben’s book ‘Team Geek’ is also a great read.
They have a new book out about managing teams which I haven’t had the chance to read yet. It looks like it might also be useful for you:
I am working on a open source project written with PHP (using CI) for bus booking management system. And I need web designers for the front end and back end interfaces. Anyone willing to contribute then go to the github repo: https://github.com/toocool/tripexpress
I am hop joining your team and after that i working
Is there ever a need for graphic designers on these open source projects? If so where is a good place to look for open source projects that a graphic designer like myself might be able to take part in?
Justin The Designer
Definitely! Graphic design jobs aren’t always as obvious as programming tasks. The best thing to do is find a project you want to work on and then introduce yourself to the community in the forum/mailing list. Chances are someone will be able to point you in the direction of the design work 🙂
Agree with you .open source .helped top organizations around the world, and really free of cost and more effective other than technology. 🙂
Open Source! It’s authentically looking like a boon for web designing and development in today’s world. The exclusive content of this post are really looking experienced about it. But I totally agree with you Jesus, OS Projects are one of the best option between of them. Just try it.
I would like to add another important option of why you would want to join an OS project.
As you said, something you use everyday is a good option, also something BIG. I have another one:
One project that will teach you something. I know that every project will teach you, but sometimes we need to practice something and OS projects is the best way to do it.
Are you willing to learn more about software i18n? Check some projects that could get help with that and do some work on it!
Wanting to be better documenter? Finding a project who needs help with docs is like… all of them? 😛 Infinite opportunities to be a better documenter with any OS project.
The list have no limits. There are always projects (even if you don’t use it or is not something big) that could use something like you and is the perfect opportunity to grow.
Completely agree with you. I learnt PHP working on an open source project.
Thanks for reading 🙂