Open source software can be an intimidating and scary world to the up and coming developer. You pop open a gem you’ve been using and try to follow along with the code but to no avail. It’s far too advanced (or poorly written) for your newly developed skill set. No worries, we were all there once and we still need your help.

So where do you start? Browse Github. Look for something that you’re interested in. A gem that you used? A project you heard of? Something you’ve been wanting to try? Once on a projects Github page, click the ‘issues’ tab. Do you see any problems that you would like to tackle?

A couple great ways you can contribute are through documentation and tests.

Did you run into any problems using a gem in your passion project? Was it because you didn’t understand how to configure something? Maybe the outdated documentation needs an update. Documentation is something that is always needed, appreciated and It’s a great foot in the door to the world of open source. Open the README (or similar file) and start adding the steps you had to complete to get the project working correctly.

Open source projects often start as toy’s with broken or insufficient testing. As the project’s grow in size from the addition of other user’s requirements, the need for better tests becomes more and more apparent. Testing other’s work is also a great way to understand bizarre looking code. The spec your writing will help you develop your programming skills and add value to the project. Now that you understand what the code is doing and have tests around it, are there places you could improve the code?

A few general things to remember as you are writing your code:

Make small, explicit git commits. Some projects will have contribution guidelines.Please read them and stick to them. If the project doesn’t have any contribution guidelines, look at older commits and try to follow the general pattern.

If you are writing code, please test it. No one likes to accept an untested pull request. It’s scary.

When you have completed your contributions on an appropriately named feature branch, push them up to Github and put in a pull request. Be ready to answer questions about your code from the original repositories maintainer. Explain the issue you ran into and how you went about fixing them. Don’t worry if your pull request isn’t accepted. Ask the maintainer if they have an idea for a better solution to fix the problem or what they didn’t find acceptable about the code you wrote. This is a learning process and because you have been using version control, going back and refactoring is a stress free process.

If you're looking for some projects to get started on then Hashrocket has numerous open source projects for you to look into. Decent Exposure, Fabrication, Authem and Paratrooper are a few of the currently maintained open source projects. If you are unable to find anything there then checkout RailsApps by Daniel Kehoe. He's put together quite a few example rails apps for people to use as they see fit. The repositories there are wonderfully well documented and most of the apps could be built upon or better tested. It’s the first place I got my hands dirty writing open source. Last but certainly not least is Code Triage. Code Triage has collected a large amount of open source projects looking for contributions.

Would you like some help on your own open source project? Please leave your Github url in a comment below.