Roles in open source projects
You don't need to be a software developer to contribute to an open source project. The code, documentation and artwork that make up open source projects have all been created, tested, used, discussed and refined by members of the project community with a variety of skills, potentially from all over the world. 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. It could be providing feedback; recommending the project to others; helping new users; translating documentation or applications into other languages; testing, reporting or fixing bugs; writing or updating documentation; requesting new features; creating artwork; or writing and updating software.
These contributions 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 [LINK] 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 will 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 it 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, while not all feature requests will be implemented, 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, as 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 saving the project 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 would be reporting bugs and submitting fixes. If you are not yet a committer on the project, you would 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 the 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 almost anyone can contribute to. 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 will examine each new issue and comment on it, marking duplicates and highlighting workarounds. They will 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, banners, labels and other artwork. These will be seen every day and potentially be used throughout the project and across all its products. You would normally submit this kind of contribution via the developer mailing list once you have engaged with the project.
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. The community is always 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 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 enjoy 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, writing about it and documenting a solution will be very useful to other users.
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 is usually happy to help documentation writers.
Existing documentation can always be improved, or new content written, but you will need some technical skills to contribute to the developer guide. If you have this kind of expertise, this is 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, which may be problematic for users in other regions of the world. If you are confident with English, you could make a valuable contribution by translating the project applications and documentation into your own language. Find out how to share your translation work by joining the appropriate mailing list.
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 seem 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 almost always be welcome. Equally, taking the time to plan your involvement by consulting the project's website and getting to know the community will smooth the path to a successful and fulfilling collaboration.
Ubuntu Eclipse GNOME
Related information from OSS Watch
- Governance models
- How to build an open source community
- What is a software patch?
- Engaging developers (workshop report)
- Can you contribute code to an open source project?
- A guide to participating in an open source community