As a response to a question (on a mailing list) “How to become an Open Source Contributor“, Philip had this awesome response. Quoted here in the entire form.
Each person has their own way of contributing, so I won’t tell you
what you should do, I’ll only recount my own experience in becoming a
Back in 1999, someone sent a mail to the ilug-bom mailing list asking
how to find out which web server was running on a given host, eg, was
it Apache, IIS, Netscape, etc. I sent in instructions to find this
out using telnet, but then I also realised that it would take not more
than 30 minutes to write a small program to do it, so I wrote a 10
line perl script to do it (I was learning perl at the time, so it was
a good excercise), and called it httptype. I mailed it to the list,
and uploaded it to my free web hosting account.
Within a few hours,
people were giving me suggestions and reporting bugs, so I released a
new version the next day, and announced it on freshmeat.net. In a few
days I was getting patches, and then another person on the list showed
me how to use sourceforge and CVS (I did not know any of these things
before), so I did that, and I started getting more patches and feature
requests and downloads. It was a lot of fun, but ultimately there’s a
limit to how many useful features you can add to this kind of simple
program, and it’s officially been in a stable and complete state for
about five years now (ie, no bugs, no maintenance required). I had
been bitten by the FOSS development bug (my code was released under
the GNU GPL), and I started looking for more to do.
In 2001, I started using instant messaging, and was looking for a
client on linux. I found something called everybuddy, downloaded the
tarball, built it and started using it. I also joined the mailing
list, and started reporting issues that I found. The developers were
very friendly, and explained things to me, but for bugs related to the
Yahoo! library, I wasn’t getting any responses. So I started reading
the source code, and using gdb (again, one of the developers showed me
how to do this), and figured out how to fix some of the smaller bugs
(1-2 line changes), and I sent in a patch (I learnt how to make
patches on httptype). But no one was commenting on the patches or
merging them into the project.
So one day I just got annoyed and
asked the project maintainer who the maintainer of the Yahoo! module
was, and he replied saying, as far as he knew, I was now the
maintainer. This was a surprise to me, since I did not even have CVS
access, so I harassed him a little more and he gave me write access
(the project was hosted on his personal machine), and I became the
maintainer of the Yahoo! library of everybuddy. About a year later I
was one of the primary developers, and when the team decided to split
the project into two sub projects, one of the devs from France, and I
became the lead developers of Ayttm. During this time, I started many
more projects of my own, and kept submitting small one or two line
patches to many more projects (Zope, Squishdot, automake, to name a
I’m not saying that you need to do the same thing, but maybe it will
give you an idea of what you can do. At no point of time was I
developing open source software as part of my job, this was all stuff
I did in my free time during my lunch break, or in the evenings, or on
weekends, or while I was “waiting for my code to compile”.
My advice would be, look for one of these two things:
– Has someone asked a question that you think you can answer through code?
– Is there a tool that you really like using, but have a few minor
bugs you would like fixed?
Ideally, in the latter case, it should be a simple project. Things
like Firefox, Thuderbird and Evolution are massive projects that it’s
pretty hard to get into, but there will also be many mentors to show
you the way.