You don’t need to be a software developer to contribute to an open source project. The code, documentation and artwork that make up an open source project have all been created, tested, used, discussed and refined by members of the project community. These processes can be broken down into a myriad tasks, requiring different skills, levels of involvement and degrees of technical expertise. So, if you want to get involved in an open source project, there is a range of roles to choose from. These include:
- providing feedback
- helping new users
- recommending the project to others
- testing and reporting or fixing bugs
- requesting new features
- writing and updating software
- creating artwork
- writing or updating documentation
All of these contributions help to keep a project active and strengthen the community. The project team and the broader community will therefore welcome and encourage participation, and attempt to make it as easy as possible for people to get involved. The exact roles and mechanisms for participating will be dictated by the project’s governance model and vary from one project to another. The tools for communicating within the community and making contributions will also vary.
For most projects, the first step is normally to join one or more of the project mailing lists, depending on your area of interest. Mailing lists are generally the main communication channel, but some projects may also use forums or other tools. The project’s website should provide clear guidelines on how to get started and which channels to use.
Let’s explore some of the roles you could fulfil in an open source project.
Project teams are always keen to know more about how users engage with the project and how they would like it to look and function. This feedback is vital to the life of the project. Without it, the team would not be able to improve the software’s usability, a key element that could make the project stand out among its competitors.
As a new user, you may feel reluctant to make requests or provide criticism, no matter how constructive, for fear of seeming impolite or ungrateful. But most open source projects will encourage you in every possible way to contribute to discussions on user mailing lists or add feature requests to the issue tracker. At the same time, they will probably make you aware that not all feature requests will be implemented, although every comment will be carefully considered and feedback will be provided as to how important that request is.
Once you have gained some experience of the project, you can support new users who have no experience. Helping people to get started is critical to the medium- to long-term success of the project. This is because some of these newcomers will themselves become contributors and ensure the ongoing development and support of the project.
The quickest, easiest and most significant way to provide such support in the early stages of your involvement is to answer newcomers’ questions. These are often best answered by those who have themselves recently experienced the same issues. By answering questions from newcomers, you will also be helping the project by saving the developers time.
As you gain experience, you will be able to ask and subsequently answer more complex questions. In turn, you will be supported by more experienced users as the complexity of your own requests grows. In this way, providing support will benefit both you and the project itself.
Evangelising and marketing
It goes without saying that the lifeblood of any open source project is its users: more users means more opportunities for success. And feedback from users on what they want helps to ensure that the product is of increasingly good quality. So it is vital that the project attracts users on an ongoing basis. As an existing user, you can help the project to do this by telling people about it and encouraging them to try it out.
The project may also engage in more active forms of marketing, such as representation at conferences and workshops. By being willing to present the project to others, you can also help to ensure that a flow of users, and thus potential contributors, is maintained.
Software design and implementation
As a software developer, your first step towards contributing code will probably be reporting bugs and submitting fixes. If you are not yet a committer on the project, you would normally make these contributions by submitting a patch on the issue tracker. You might then go on to design new features for the project or redesign or develop current ones.
Remember that all significant code contributions should be discussed on the developer mailing list before implementation. This will allow the project team to ensure that the design is appropriate and that user experience will not be adversely affected. Smaller contributions, such as bug fixes, can be submitted as patches on the issue tracker without discussion.
Quality assurance (QA) is one of the most important elements of any project. It is also something to which almost anyone can contribute. As a user, you can help by testing release candidates before they are formally released and reporting any bugs on the issue tracker. You can also run the latest version of the software and report any bugs. Developers can contribute by fixing those bugs, and by helping to manage them until they are fixed.
To encourage ongoing contributions, it is vital that the project team keeps users and contributors informed of activity on issues in the issue tracker. For example, they should examine each new issue and comment on it, marking duplicates and highlighting workarounds. They should also discuss potential solutions and close them when work is complete.
Graphics and art
If you have graphics or art skills, you can make a valuable contribution by creating icons, logos, wallpapers, banners, labels and other artwork. These will be seen every day and could potentially be used throughout the project and across all its products. You could also participate by designing websites, designing marketing material or providing illustrations for presentations and guides.
You would normally submit this kind of contribution via the relevant mailing list or issue tracker once you have engaged with a project and developed a feel for it.
Documentation is critical to new users and something that developers don’t always have time to write or update. One of the best ways in which you, as an existing user, can contribute is by documenting your own experiences of the project. This could be in the form of tutorials, guides, HOW TOs or FAQs (frequently asked questions). These don’t have to be perfect: in most cases, a skeleton document with bullet-point instructions is better than nothing at all. Those who use the document will probably ask supplementary questions and, once they understand, can help to pad out the details. Most communities are willing to help documentation authors by confirming information, answering questions or providing more detail.
Many open source projects maintain a separate community wiki for editing and writing documentation. Rather than answer the same question twice, you could write up the answer and make it available to everyone on the wiki. You could also contribute to the wiki whenever you see something that could be improved or updated, or report an error as a bug. It is helpful to make people aware of any changes you have made by mentioning them on the mailing list.
User FAQs are an excellent place to start contributing to a project. If you’re not technical, you can simply post a note in the issue tracker with a proposed FAQ entry.
HOW-TOs and tutorials
These short, self-contained documents are also a great place to start for both users and contributors. If you are well-versed in a particular feature of a project, documenting it for others would be an extremely welcome contribution. Equally, if you have come across a problem with the software or any other aspect of the project, you could write about it and document a solution, which will be very useful to other users. Providing video screencasts, which can be very effective for introductions and HOW-TOs, would also be a good way to contribute.
Writing and maintaining a comprehensive user guide for the project is a difficult job requiring a lot of time and effort. Any additions, clarifications and corrections to the user guide from users would therefore be very much appreciated by the project team. To do this, users can draw on the user mailing list archives or forums, which will probably contain a lot of material that can be easily converted into paragraphs. Again, the community will usually be happy to help documentation writers.
If the project has a developer guide, the team will almost certainly welcome improvements or new content, but you will need some technical skills to contribute to this kind of documentation. If you have this kind of expertise, it’s a great place to start gaining an understanding of how to develop with or for the project. The developer mailing list archives and forums will contain plenty of useful information, and the developers themselves are usually happy to help documentation authors.
The default language for most open source projects is English. If English is not your native language, you could make a valuable contribution by translating the project applications and documentation into your own language. Even if you can spare only an hour here or there, your translation work will make a difference.
Find out how to contribute by joining the appropriate mailing list. Some of the bigger projects have a separate team for each language represented on the project. If your language is not yet represented, you could even start your own language team.
Monetary donations and developer support
For an open development project, money is less important than active contribution. However, some people or organisations are cash rich and time poor, and would prefer to make their contribution in the form of cash. If you want to make a significant donation, you may be able to sponsor a developer to implement a new feature or fix some bugs.
The project website should provide clear guidance on how to go about making a donation. It should also ensure that there is a secure and easy-to-use mechanism for accepting donations that will allow various categories of sponsors to express their appreciation for the project as a whole.
Initially, participating in an open source software community will be an intimidating prospect. But remember that such communities are ultimately composed of people, with all the virtues and foibles of people everywhere. Everyone involved in the project is working towards a common goal, and useful skills, a bit of effort and some humility will always be welcome. Equally, taking the time to plan your involvement by consulting the project’s website, and getting to know the community by following discussions on the mailing lists, will smooth the path to a successful and fulfilling collaboration.
The following are examples of project web pages that provide detailed guidelines for those wishing to contribute:
- Apache Software Foundation [http://www.apache.org/foundation/getinvolved.html]
- Eclipse [http://wiki.eclipse.org/Development_Resources]
- GNOME [http://live.gnome.org/JoinGnome]
- Ubuntu [https://wiki.ubuntu.com/ContributeToUbuntu]
Related information from OSS Watch: