With all the options and project available, especially the size of most of them, Open Source can be pretty daunting for a newbie to it all. My question is, how can I start helping and learning from open sourced software? Where do I start? Which files do I read first? Any advice to help a programmer above beginner level start contributing?
Find an (open source) application which you enjoy running. In this way, you're already a "tester". It could be anything (an operating system, an application like a media player, or a library, or a network tool, or an application skin, or a desktop theme). Find out what languages such software is written in; pick the ones you know or learn a new one. Get the source. Read it and the developer docs. Build it, then run your own builds. Make some tweaks through your own usage and what you think might be neat to add. Learn diff. Make a patch diff and email it to the developers; do this a couple times then ask if you have commit permissions.
Then put it on your resume and circulate this online.
I release a lot of my own work as open source and free, that way others can see your work and judge it, thus making it easier to join an existing open source project or have others contribute to your open source project.
Try OpenHatch. There you can find projects to contribute to. I haven't used it yet, but I plan to when I feel comfortable.
This fall I'll be working with other students on an open source project via UCOSP. There's other groups like that, for instance, Google Summer of Code. If you're still in school, definitely try to get into these programs.
You can also subscribe to a mailing list of your preferred project or join their IRC room and get to know some of the people and go from there.
Try some online code repositories. Some are more social than others, but they're all good. You can submit patches, or even submit bugs (which is still contributing). Some of the popular ones are GitHub, Google Open Source Code (specifically Google Project Hosting), and SourceForge.
You can read this free book on how to produce open source software. I use it as a reference sometimes.
There are two approaches to development:
- Get the tool, then built something with it
- Have an idea, want to build something, so, find an appropriate tool
The first approach is much less constructive and productive than the second one. In the first method, you simply wander the web world, surfing web pages one after the other, till you find an open source project (for example Joomal), then you decide to build a website with it. Not really good, if you're a game developer for example, or if you're interested in jQuery development.
With all the options and project available, especially the size of most of them, Open Source can be pretty daunting for a newbie to it all.
Of course, it would be daunting. Because you haven't filtered it yet. You first should specify what you want to do. Then you see that it's becoming narrower and narrower, till you only have 2 or 3 open source solutions at hand, and here, you're fine to go.
I think the most important thing is to find a project you are passionate about then start learning everything you can about it.
Subscribing to all the mailing lists will give you a good idea about how the community interacts with each other and don't be afraid to jump in and ask or answer questions. Just make sure you do your research and ask intelligent well thought out questions.
How to contribute:
Note: The above links all pertain to the WordPress open source project but could apply to just about any large open source software project.