Jason Nochlin: Student Developers: Get Involved in Free and Open Source

Have you ever wished you could leverage thousands of the smartest people on earth to make your projects more impressive, faster to develop, and easier to maintain? Free and open source software (F/OSS) allows programmers to do this every day. Here are the basics of how you can take advantage of this extraordinary movement and get involved yourself.


A piece of software is considered free and open source if anyone can use it without a license fee and the source code for that program is readily available (some restrictions may apply [1] ). Millions of lines of code are freely available online through F/OSS projects. Some of these projects are maintained by large organizations (e.g., Apache, Mozilla), while others have come about through the desires of an individual or group of developers who want their work to be freely available. Many major software companies such as Apple and Facebook also actively participate in the community by using and contributing to F/OSS projects [2].
As a developer, F/OSS projects and the surrounding ecosystem will play a crucial role in your success. The most immediate benefit derived from using F/OSS is the large amount of already written code that you can quickly include in any project. There’s an open source project for most if not all of the problems developers commonly face and many of the uncommon ones. Further, many open source programs have strong developer communities supporting them. Community projects generally are considered higher quality because of the large number of eyeballs that implement, test, and review the source code.


As a beginner developer, you should definitely use and contribute to the F/OSS community. From an altruistic perspective, this is a great way to increase the quantity and quality of the community code that is available for everyone to use and prevents people from spending time on already solved problems. From a selfish view, F/OSS contributions help you become a better developer, build your reputation, and make valuable connections with others in the community (read: jobs).


--


So how should you get started?
There are many ways. To avoid confusion and in order to provide some practical tips, I’ll describe the process I use to interact with the F/OSS community most frequently as a Ruby on Rails web developer.
GitHub.com is the primary site I use for finding and contributing to F/OSS projects. GitHub is a “social coding” site that you interact with through the web and through the version control system Git[3]. The website allows users to publicly display and share source code for any project. GitHub primarily hosts Ruby and Javascript projects[4], though you can find projects on it in almost any language.

How to browse GitHub:
GitHub is a great place to find open source projects. If, for example, you need a library for the Twitter API for your latest Ruby project, just type “twitter” into the search box, then select “Ruby” from the lists of languages and you’re off.
If you are not looking for a specific library, check out the “Explore GitHub” page to browse through the site’s top projects. You also can narrow your search to the pages for individual languages to see that languagues most active projects.


How to contribute to projects on GitHub:
In order to make your own changes to an open source project, you need a way to edit that repository. For security and management reasons, however, only specified collaborators can directly edit a project’s main source code repository. To make your own changes, you need to create a version of the repository that you own.
This is where “forking” comes in. All projects on GitHub have a convenient “Fork” button at the top of the page. Click that to create your own version of the repository and edit away.


Once you’re done with your changes (and have made sure you provided adequate documentation and testing so others can fully understand what your new code does) it’s time to send it to the original repository’s owners for approval. This is where the “pull request” comes in. With a pull request, you send a collection of source code changes (commits) along with a short message to the original repository’s owner. They then can merge your changes directly into the main repository or (more likely) send you questions and suggest changes you should make. Once you make those changes, re-submit the pull request and hopefully your code now will be included in the main project for everyone to use!


Figuring out what to contribute:
Not sure what to contribute or can’t think of a feature you would like to add? Most large projects will have features and bugs organized in an issue tracker. GitHub offers each project its own issue tracker, though many projects use a third party such as Lighthouse[5]. Simply read through the issue tracker, find an issue you think you can fix, and start coding. Once you resolve the issue, submit a pull request with the required changes.
Most, if not all, open source projects constantly are looking for people to extend the documentation or the test suite. Another way you can get involved is by taking a single file, class, or module and writing all the documentation or a full test suite for that code. This is an easy way to get recognition and appreciation from the project’s owners.


--


Getting involved in open source is easy, fun, and beneficial to your career. You should create a GitHub account and start contributing today. If you need some extra motivation, check out the Calendar About Nothing [6] to employ the “Seinfeld Calendar” motivational technique to your open source contributions.


--

Jason Nochlin (@jasonnochlin) is a web-focused software developer who began his career as student working on projects around campus at Tufts Unviersity. His experience ranges from building e-commerce platforms to business intelligence tools that leverage social media. He currently works as a freelance technology consultant and project manager for a collection of startups, small businesses, and corporations. You can contact him via email at jason@nochlin.com or through his website.

Endnotes
[1] To learn more about the legal issues behind F/OSS, start by checking out: http:// en.wikipedia.org/wiki/Software_license

[2] Example Projects: Apache HTTP Server: http://httpd.apache.org/
Mozilla Firefox: http://www.mozilla.org/projects/firefox/ Apple’s Sproutcore: http://www.sproutcore.com/ Facebook’s HipHop PHP Optimizer: https://github.com/facebook/hiphop-php

[3] An excellent introduction to the Git version control system: http://gitimmersion.com/ [4] Source: https://github.com/languages [5] http://lighthouseapp.com/ [6] http://calendaraboutnothing.com/

 

Photo credit: http://cybernetnews.com/wp-content/uploads/2008/01/computer-recovery.jpg