One of the things that I wanted to do on joining my current place-of-work was to contribute in an open source manner. But whoever thinks contributing to open source is a piece of cake is mistaken! First of all, most open source projects are thoroughly professional nowadays. PostgreSQL is a prime example. It's not as easy as submitting any piece of code which compiles and works, to be pushed into the product. Infact, its an arduous journey where patience is a great virtue to possess. It starts off with one identifying what the project needs. Many projects have official TODO lists around which make the job easier. Then an important thing is to identify which is the piece of the pie that you can eat - meaning identifying the work item which you think you can contribute to as per your current capacity/knowledge of the code base. After that begins the journey of putting your case in the community mailing lists. The list does make it hard on you by trying to ask all kinds of difficult questions. Why should we do it, why and how you propose to do it, will you be able to do it. It's all in your face literally and can easily intimidate a person and to make him think twice about contributing. Patience again comes to your rescue. After the list agrees that something should be worked upon, then one starts coding and producing work-in-progress patches that should be periodically sent to the list just to let them know that you are not in deep slumber pondering over the work. Some good souls, even take it upon themselves to test your work out and provide constructive feedback. Some established souls, take a look at your work-in-progress and can immediately suggest further course of actions, feedback and the likes. Then comes the final day, after toiling around for quite a while, when you submit the final code and it gets committed!
How do I know this - you ask. Well, I too have been brave enough in the past to take on this path and have succeeded a wee bit in making humble contributions back to my current favourite open source project - PostgreSQL. Today PostgreSQL 8.3 was released and it was gratifying to see my name as one of the contributors to some new functionality added. Now that I have been through this before, its a bit easier and I will definitely be contributing to the future releases whenever I can.