Obviously everybody has a different approach to this. Mine involves these main elements:
- Find a project you like
- Find a project that needs you
- Jump in
How to find a project you are interested in?
- Is there a particular open-source software that you just love so much?
- Is there an open-source software that is almost what you want but just almost?
- Is there an open-source software where somebody you admire is involved in?
How to find a suitable project that needs you?
Based on your answers above, get on Google and find the website of a suitable project. Some additional factors to look for:
- When was the last commit? (i.e. recent enough?)
- How many active committers are there? (i.e. more than one, less than 10?)
- Which VCS do they use and how can you submit branches? (i.e. a VCS you don’t mind using)
How you evaluate these factors is entire up to you. Personally I prefer small-ish projects where my work will be noticeable, but not too small where the developers might not be too welcoming to new faces.
How to get involved?
Please, please suppress your inexplicable desire of sending an introductory mail saying “hey I’m here I want to work on X”. Do NOT send such rubbish. Also do NOT brag about your past projects either.
The only meaningful introduction is contributing code, period! Just pick something you can improve in the project. Anything! Preferably something small, and indisputably an improvement. Your first commits should not be about showing off your genius. Your first commits should NOT be a big refactoring that makes more sense to you. Your first commits should be small, rock solid and easy to accept. In the beginning keep doing small things, gradually bigger and bigger.
Coding style: in the beginning you just have to adopt the coding style used by the others. Make sure to spend some time on observing the coding style of the core contributors, and adopt the same style in your own contributions. If you disagree with it you can propose an alternative later after you are already a recognized member.
Be patient. Don’t get your hopes high early. It takes time to get to know the members, and it is impossible to know in advance if your personalities will be compatible or not.
If for some reason things don’t work out with the project you picked, don’t let that bring you down. There are plenty of fish in the ocean of open-source projects, don’t expect you’ll find the right one for the first try. Be patient and keep looking. As long as you learn something from the experience, your efforts will never be wasted.