HOWTO contribute time and skills

Write some Free Software

Most Free Software products do not exist until someone, somewhere, writes some code. If you can program you can contribute code to an existing product or you can write your own Free Software product.

It can be difficult to decide where and how to contribute code. As a guide, it takes a while know a large product well enough to be able to significantly contribute. Large products also have many developers, and plans for development which they are unlikely to change for your benefit. On the other hand, the product's community will also be larger, and there may be formal or informal mentoring for new developers. It may also be divided into smaller projects which you can hack on without knowing the entire product's codebase.

A smaller product is more likely to desperately need new developers. You are more likely to be able to develop crucial parts of the product, and have some say in the direction of development. On the other hand, a smaller product's community is also smaller, and may not have the same momentum as a larger community.

Starting your own product is risky. You will need to build a developer community and a user community, as well as develop a product. You will also need to personally maintain the community's momentum for some time, possibly the lifetime of the product. However, if there are no existing Free Software products that have or could have the features you want, you're probably not the only person who would contribute to your new product.

Write some documentation for Free Software

Contribute some artwork to Free Software

Many Free Software projects need polished artwork, including icons, background images, colour schemes and logos. At present there is comparitively little freely licensed artwork. If you are an artist, your skills would be appreciated by many Free Software projects. You could also freely licence your artwork to be used in other projects.

Many projects also need the skills of composers, whether composing short pieces of sound or extensive soundtracks for their program. Again, you could freely license your music for distribution and modification. projects.

Do some translation or internationalisation for Free Software

Many large Free Software projects are sorely in need of competent translations into other languages. If you are a clear writer and can read and write more than one language, you could offer your services translating documentation or text inside the program into another language.

There are several other problems in internationalisation that you might help a Free Software project solve. They include the direction of text, the cultural meaning of and appropriateness of any signs or symbols used, and local standards of modesty or decency that might require modification of language or images used in projects. If you live in a culture other than the culture of the developers of the project, your feedback about cultural appropriateness would be particularly valuble.

Report bugs in Free Software

All software has faults, errors, flaws, and missing features. Most Free Software projects solict bug reports, and sometimes feature requests, from the public.

When reporting a bug in software, you need to provide a clear description of the problem, including the exact wording of any error messages the program gives, and the exact steps needed to cause the error to happen.

Be careful to report the bug to the right place, in order to make sure that it can be tracked by the appropriate developers. You should also check if your bug has been reported by someone else. If it has, you only need to contribute your own report if you think you have more information, or a fix for the bug. Make sure you reference the original bug report somehow.

When reporting a bug, first check if the project has an official bug reporting website or email address. Normally these give very clear and precise instructions on reporting bugs.

If there aren't specific instructions for reporting bugs, you should attempt to report them to the developer's group, forum or list if there is one, and to a particular developer if there is not. Don't send bugs to a particular developers unless you can't find another way to report them as they might be too busy to make sure your bug receives attention.

A clear bug report is the best way to ensure that a bug gets investigated and fixed. The more clear and precise your bug report is, the easier it is to fix. Bug reports that include a suggested fix are particularly welcome.

Test some Free Software

Every software product is improved by extensive testing. Free Software is no exception. Download testing versions of a project. Try and cause them to break. Report how they broke (see bug reporting above).

Larger projects will have coordinated testing teams. Join these teams and ask to be assigned some testing.

Contribute specialised skills or knowledge to Free Software

Even if you don't have skills that are directly useful in getting a polished, quality Free Software project out the door, perhaps you have skills that a Free Software project could use in less direct ways.

Examples include professional skills such as accountancy or law. Large Free Software projects often need advice about legal issues or financial issues including intellectual property concerns, accepting donations or taxation issues. Since this advice is normally comparitively expensive, providing your services for free or at a reduced rate could be valuable to a project.

Some projects, conferences and groups market themselves to the press and public, if you have skills in marketing, advertising or public relations these would be invaluable to many projects. Many projects have teams in place to take care of marketing, so even if you cannot assume responsibility for marketing a project, you could play an equally valuble role sharing your advice and experience with members of the team.

Many Free Software projects don't have members experienced in project management. As a project grows larger, it can benefit from competant project management. As with marketing skills, teaching these skills to other members of the project is as useful a contribution as becoming a project manager.

Many Free Software projects are working on software designed for professionals in a particular field - if you work in that field your advice as a user, designer and tester would be particularly useful.