Before we get into how to get involved with open source projects, it's important to understand what open source is and why you should care. From the open source initiative:

Open source software is software that can be freely used, changed, and shared (in modified or unmodified form) by anyone. Open source software is made by many people, and distributed under licenses that comply with the Open Source Definition.

So what does that mean exactly? The most important part of that description is the idea that open source software can be freely used, changed, and shared. Open source software promotes code reuse between many developers and is accessible to everyone. If you've ever used projects like Twitter Bootstrap then you know how useful this can be.

Finding Projects

This first step in contributing to open source is to find a project that you're interested in. There are plenty of ways to find a project you can be passionate about. If your highly skilled and confident, you might want to consider starting a project yourself. However, if you aren't a coding guru, then you should consider contributing to someone else's project.

So where do you find a project that people are working on? The best way to get started is to join an online communitie. I like to visit some subreddits like /r/programming and /r/webdev (you can search for more here). However, you don't have to go on reddit. There are plenty of other websites you can join:

The first step is to get involved in whatever community interests you. If your interested in game development, then GameDev.net and /r/gamedev are great places to join. I'm interested in web development, so I look at /r/webdev and a few blogs for new trends, tools, and projects.

An important thing to note: Is the project active? If you try to contribute to a repository that isn't being maintained, no one will care to accept your pull requests. I wouldn't recommend trying to revive a project unless you are both passionate and skilled. A quick way I check for activity on Github is to look at the pulse chart of a repo (example: Bootstrap Pulse Chart).

You probably won't see many potential projects when you first start out. However, the key is to be open to various opportunities. A potential open source project could be anything, from an extension or a plugin to a full blown web app. Once you find a project, you can move on to the next part!

Contributing

So you've found a project that interests you and now you want to contribute. The next thing to do is to setup the code to run on your machine. Most projects will have a readme or some kind of getting started guide. Once you feel comfortable with the files, you can start contributing in some of the following ways:

If your not sure what a pull request is, then we need to discuss a tool that will make your life much easier: version control. Version control is used to manage different versions or revisions of your code. The reason version control systems are so useful is that they allow you to merge your changes into someone else's code in an easy and sane manner. Some kind of revision control is a necessity when you need to code collaboratively.

If you've been reading diligently, you'll remember I mentioned git. This is a source control management system (SCM for short). There are a lot of different SCMs, like svn, mercurial, bazaar, and perforce. However, the SCM you will probably encounter the most is git because a lot of git projects are hosted on Github. I suggest you learn and get comfortable using whatever version control system your project uses. The full Pro Git book is available for free on the git website here. Most version control systems have command line interfaces, but you can always use a gui if you aren't comfortable with the command line (I like using SourceTree for git).

Remember, any form of contribution is important. Not everyone has loads of time to write documentation, submit issues, or write code. Even a small contribution helps grow a project and its community.

Written on January 5, 2014 by Michael Coleman