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.
Hi , 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 FOSS developer. 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 few). 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. HTH, Philip