Open source is often called a "community" and there is a good reason why: most open source projects depend on volunteers. People who are skilled and motivated get involved in open source projects to help bring useful ideas to life.
Sometimes these people start projects from scratch and sometimes they contribute their talents to an existing project. One of these people could be you!
Some open source projects are popular applications that anyone can use and contribute to, like Firefox, Thunderbird, and Songbird. Others are nuts-and-bolts software that work behind the scenes, like the open source e-mail server Dovecot and the large-scale database system MongoDB.
Whatever your interest, open source projects often need people in several kinds of roles:
Coders: Ultimately software needs code, and that means coders. Many open source projects have a lot of coding experience already on board, since programmers make up the majority of the open source community.
Bug testers: Users often submit more bug reports than programmers have time to test and inventory. A good bug tester can help test, replicate, and document bugs to help coders prioritize what needs fixing.
Writers: Documentation typically lags behind code, but a successful and mature open source project needs thorough and up-to-date documentation. Skilled writers can help make a project useful by describing it in accurate terms to end users.
If You Want to Code
The best open source contributors are also open source users. When you are already familiar with a program you are in the best position to develop new ideas and fix existing bugs. Once you've chosen an open source application you want to contribute code toward:
Get to know the source. Take time to read through the existing source code so you can communicate coherently about the project.
Develop a patch. Identify a small bug or feature that you feel could enhance the software, and develop the code to do it. You will want to package your code into a "patch" that others can download and incorporate into the project.
The precise steps for creating a patch will differ depending how the project source code is managed.
Submit your patch. Some open source projects will have a formal process for submitting projects, but others may not. If the website for the project does not describe a clear process, you should open a dialogue with the community around that project.
Look for a message board or IRC group where people discuss the project. Here you can describe your patch and the motivation behind it, and hopefully receive a receptive audience. If the project is small enough to be run by one person, you may need to e-mail them directly.
Starting with small patches, you will become a more trusted contributor to the project community and work up to larger code contributions.
If You Want to Test
A stable software project needs a lot of testing. Even if you are not a coder, you can contribute your time to battle testing an open source project. Many projects need testing in several fields:
- Bug testing: If the project accepts user bug reports, people are needed to test these bugs. Can you replicate the bug? Are there specific circumstances to note? A well-defined bug test will make it easier for a coder to create a fix.
Input testing: Many applications accept some kind of user input. Some types of input can cause problems.
For example, if a user enters an unusual character that the software doesn't recognize, it may crash or trigger another unexpected behavior. In some cases, certain types of input can present security risks.
Contributing time to test many kinds of user input will help harden a project against unforeseen problems.
Case testing: Some projects include "test suites"-scripts or programs that run the software through a series of steps. For example, a test suite might submit a series of numbers to a program that calculates mortgage rates, to test how the software handles a range of values.
You can look at the existing test cases distributed with a project and think of ways to expand the testing suite, either by adding values to an existing test case or devising a new test case.
If You Want to Write
The world needs writers, too. And so do open source projects. If you are good with words, even if you can't write any program code at all, many projects would benefit from your contributions.
Writing good software documentation requires some technical understanding combined with an ability to communicate clearly to a human audience. Writing can also help promote and market an open source project, expanding its popularity.
Finding Volunteer Work
Ideally, you already use and are passionate about an open source project that you want to contribute toward. Check the website for that project and there may already be a trove of information for potential contributors.
There are also some websites with "want ads" for open source projects looking for contributors in specific areas:
"Help Wanted" at SourceForge, a major web host for many open source projects.
Open Hatch - "Volunteer opportunities in free and open source software"