Sunday, August 30, 2009

Let's do FOSS!

Free and Open Source Software (FOSS) projects are community maintained and most of them depends on the volunteers for their existence. You can help them in many ways regardless of your computer literacy. I have been asked several times, "How can I contribute to a free and open source software project?". So finally I thought of sharing some of my understanding regarding this. This post is just how I see the stuff going there, and not the solution.

1. First make sure that you really have some time, interest on the particular project, willingness, and the basic domain knowledge. Though contributions often come from developers, it doesn't mean that it is the only possibility. Search the web and find an open source community that matches your interest.

2. You should have a basic knowledge of the version control systems [SVN, Git, or CVS], and the project management tools like maven, and be able to use them, as they are common in most of the open source projects.

3. Get some experience in building projects from source and creating and applying simple patches for the projects.

4. Search the web and find an open source community that suits your interest. You can find some interesting FOSS communities from the List of participating organizations in Google Summer of Codes.

5. Communities like Abiword are small, and there are huge communities like Apache as well, which have sub-communities themselves. In small communities, you will be dealing with the entire community, where in case of a large community, you will again have to pick a suitable project which will have a 'sub-community' itself.

6. Read the online references and make sure that new developers are mostly welcomed at the community, at the given time. Almost all the FOSS communities encourage newcomers as there is nothing like 'NO VACANCY' in FOSS communities. You are always more than welcomed, as a developer, technical writer, or a translator.

7. Check the possible areas where you can enter. Join the user and developer mailing lists and hang on the community IRC, listen to the ongoing developer architecture and design level discussions. You can try to break ice with other developers, via IRC.

8. Build the project from the source, check for the possible additions and improvements, check the mail archives and the bugs database for the bugs or the future implementation, to which you can contribute.

9. Now make sure that you have got some idea and understanding about the community, codebase, their practices, and how you are going to contribute.

10. Write a descriptive mail to the developer list clearly explaining your interest in becoming a potential contributor to the community. Don't forget to include the design level details of your suggestions, your time frame, and the amount of contribution you can offer to the community, also give a hint of your strong interest by making the ice break impressive to the community.

11. You can also query about the potential contribution you can give to the community. Mostly you will be replied personally or through the mailing list pointing you the possible areas you can work. Pick a suitable one from the suggested projects and considering your own interests and decisions, and make sure to describe and confirm your involvement in the project to the community.

12. After discussing with such a project community about your interest in contributing, you can start by Localizing the products into your local languages,  polishing the documentation, writing reviews and blog posts, providing ideas, spreading the word, or by the other possible means which are specific to the community, apart from being a developer in the community. Open source projects are for the users. Being a user itself is a great contribution for a project. You can help the community by timely updates on the bugs and request for the feature enhancements that you expect. By being an active contributor you can earn self-satisfaction and recognition.

13. Make sure to be in a close contact with your community, once you start implementing your idea (or contributing to the community in some other way). Feel free to ask questions from the developers via the mailing list or even personal emails.

14. Make sure to be active in your community and very soon once you become a committer/community developer, continue contributing. Always try to welcome and help the freshers and help them becoming active contributors.

Let's do FOSS.

[This post is based on the experience I got from Abiword community as a GSoC Student.]


  1. nice..
    i like to know
    what are the organizations SL students mostly contribute last years ?

  2. When it comes for Sri Lanka, it has always been Apache and Sahana being in the top for the number of student contributors and the mentors. But we could see some interesting changes last year. 3 Sri Lankan GSoC students worked with OpenMRS, and same goes to Eclipse and many other organizations. Joomla didn't get accepted for last year for GSoC, but they announced a similar program JSoP and Sri Lankan students contributed to that as well. I'd really suggest you trying to contribute some new organizations too.



You are welcome to provide your opinions in the comments. Spam comments and comments with random links will be deleted.