I was recently asked to join the development team at CakePHP a position I graciously and excitedly accepted. And although I’m still a bit wet behind the ears, I thought I would share some of my experiences in how you can get involved with Open Source Software.
Pick your Pony
The obvious first step to contributing to an open source project is finding one that is good fit. A project that you are interested in and possibly use on a frequent basis will be a much more rewarding and engaging experience than contributing to a project you never use or don’t understand. There are tons of open source projects that we as developers use every day, so find something you are passionate about, and start contributing.
Learn and Connect
Now that you’ve chosen a project, find out where the developers hang out, are they on IRC do they have a google group, or forum they frequent. Go there, read, learn and join the community. Also familiarize yourself with the project if you are not already. Read the source code, read the documentation, and use the code. Don’t be afraid to ask lots of questions and always help out people who are less experienced than yourself.
Version Control and Issue Tracking
Most open source projects are web based, and as such use a number of common tools. These include version tracking, ticketing and wikis / community sites. Familiarize yourself with the version control system of your pet project. Version control is an important element in all modern day software development. It allows many developers to collaborate on the same codebase while not stepping on each others’ toes. Popular version control systems are are CVS , SVN, and more recently GIT.
Good things to learn regardless of the version control system is how to make a patch (diff). In Subversion this is done with
svn diff patchedFile.php > patchedFile.php.diff
The above is a simple example of how to generate a patch file with
svn diff from command line. A patch or diff shows where lines have changed, and whether they have been added or removed. All version control systems have a similar utility. Many IDE’s and editors also have functionality to create these files.
Ticket or bug tracking is another key element in most open source projects. Popular options are trac, bugzilla and JIRA. In any case find the ticket tracker for the project, make an account and read the open tickets. If you find anything you feel comfortable tackling, write a patch and any tests that may be related and submit them.