"How do I start contributing to Libre Software?" is a very common question (I asked that too) one comes across on most FOSS lists. Today, I posted the following on a private list and was asked for a public link, so here goes:


There are many Libre software projects to choose from, so choosing one project can be quite confusing when you are starting out. Do yourself a favor and take a few moments to do a SWOT (Strengths, Weaknesses, Opportunities and Threats) analysis before you decide to jump onto the Libre software bandwagon.

Its better to give yourself time to think (or write down) which technical area or field interests you
  • Which language do you want to program in?
  • Is it front-end software or backend stuff?
  • Web programming or something else?
  • Do you like writing system software or application level software?
  • Or, do you like libraries, prefer working with algorithms/statistical applications, etc..

Once you have figured out your field of interest, its easier to shortlist something and get started on finding a project to work on.

From Failure to Success

If you are still having a hard time figuring out your interests, fret not ! Its OK to NOT know what you want when you are starting out - make sure you keep an open mind and be willing to try out new things that are unfamiliar (and sometimes hard and confusing) and/or fail at them. Failure is a good teacher!

Its what you do when you fail that distinguishes you from a successful person. If you give up your failure remains a failure BUT if you decide to practice and try again (and Again and AGAIN), you can convert your failure into success. Remember, the bridge between failure and success is Practice!


As I mentioned above, there are so many Libre software projects that its overwhelming at the outset. Having figured out your field, dont randomly visiting a bug-tracker and try to solve bugs, which is not a bad idea if you have only a few hours per week. However, if you want to wade a little deeper, try using Google to your advantage - scan the orgs at the Google Summer of Code.

This recently concluded program, has a ready list of organisations to choose from and the 2012 list is available at: http://www.google-melange.com/gsoc/program/accepted_orgs/google/gsoc2012. Besides these few hundred GSoC Orgs,
However, if you are interested in working outside of the SoC span, projects are always interested in contributors and would welcome your efforts 24x7x365. That said, these SoC tasks require a longer commitment of 40 hours per week in terms of time, so you need to decide what you want to do. Its not part-time work, so commitment and rigor is a prerequisite.


After you have searched Melange (or ESA) for keywords of your choice, visit the Ideas page for each organisation. Here, you will find a list of tasks ranked as per preference or difficulty level (NB: This entirely depends on the Org). Remember to cross-check with the Melange page if the task has already been completed via GSoC, or not.

If a task is still available, find out what is required to get started on it and prepare a short abstract. This will help you to,
  • figure out the development stack vis-a-vis your skillset,
  • realise how much time and effort is required to bridge the gap, if any ;
  • prepare a timeline estimate. (Dont obsess over the timeline as it is just an estimate and it will vary if the Org changes any requirements.)

These done, talk to the Org - always, Always, ALWAYS talk to the Org _before_ you start work on anything.
Just because a task is listed on the Ideas page does not mean its a part of their workflow (which can always change), nor is the opposite true. The best way to find out is to talk to them, first. Again, remember that these SoC tasks require a longer commitment in terms of time.


Most Libre projects have their own communication channels. This could be via Mailing lists or Forums, including IRC channels on dedicated servers or on freenode. Its important to work with them via these public channels and that means learning to communicate and not worry about asking silly (psst..there are none!) questions.
Communicating with the core developer and/or mentors and community of users is crucial - they can be an invaluable source for ideas and helpful hints. Many projects have separate lists (and IRC channels) for users and developers. Join them and introduce yourself (or lurk around to get a hang of how things work) and when you are ready, do talk about the task you want to work on.

A development mailing list, where the core developers would be available, is distinguishable via the "*-devel" mailing address. Same is true for IRC channels - If you like CLI tools, try Irssi or Quassel if you want a GUI client. Pick your poison from this list of IRC clients.


Finally, and most importantly, you must be comfortable working with the software the project uses - that means, you should be able to clone and get the software to install and work on your local machine. Here, communicating with your Org helps - You can ask for help if you have hardware or software issues, clarify installation and dependency issues, etc... No software works flawlessly (else, people would be out of jobs :)) and Libre software is no exception - the only difference being "software development on a libre / public scale".

Another aspect of getting familiar with the development stack is familiarizing yourself with the projects internal system - Since, each project uses its own bug tracker and DCVS, Wiki (for documentation), Email/Forum and IRC communication system, take some time to get familiar with each of these. If you plan to stick around for any length of time, you would be using some, or, all the software stacks they use on a regular basis.

Your transition from newbie to active contributor is a lot faster when you are comfortable with the development stack. Doing your homework before the SoC program starts will give you the confidence required to grok it enough to start working on the code-base, suggest changes or solve bugs, etc..

I hope these suggestions help you find your niche learning shell to contribute to, and of course, welcome to the Libre software. Have fun!