Roles in Open Source Software Development
by Stuart Yeates on 1 September 2004
Archived This page has been archived. Its content will not be updated. Further details of our archive policy.
Introduction
The open source software development model differs from the closed source software development model in many ways. One way is in the variety of roles played by participants. Here is a guide to the roles that can be found in open source projects.
- User
- is usually the broadest role in an open source project. Some users may also be contributors. Non-contributor users require no special skills, and in some cases do not even require access to a computer! This can be seen in projects such as Asterisk and Vovida.org in the telephony field. Users contribute to the project by running the programs produced by the project, and generally draw very few resources from a project, other than downloading the programs as pre-built executables known as binaries. Users help a project achieve critical mass, and can serve as contributor recruits.
- Contributor
- roles cover all those who make an explicit contribution to the project. This includes not only developers but also a range of non-programming roles as follows:
- Documenters are users who write documentation that is targeted at end-users. This documentation can take many forms including an FAQ (Frequently Asked Questions), an installation document, or online help documentation.
- Bug-submitters are users who submit bugs. Bug reporting can be an art in itself. Some bug reports contain insufficient information to allow developers to investigate the bug. Some reports may describe bugs that have already been fixed or they may even describe expected behaviour. However, even these bug reports can be valuable as they indicate which features are being used and the nature of any difficulties that arise.
- Graphic designers are involved in projects to varying degrees but they are essential to any project developing a mass market application. They contribute logos, icons and graphical themes to projects and can give a project the polished edge needed for mass market appeal.
- Translators are able to translate the package’s user interface or documentation. In a similar way to graphic designers, translators are essential to projects that aim for a mass market as worldwide take up of a project will not be achieved unless the application has support for the local language.
- Developer
- roles are considered to be the elite roles in open source projects. They require programming and other skills. Some developers have the skills (if not the resources) to start a split of the project known as a fork. Because of this they often have a say in technical decision-making as their opinion is given weight in order to prevent the project from forking. There are several distinct types of developer roles, including:
- Coders are the programmers who write the bulk of the code for the project. The sole requirement for this type of role is the ability to write technical code.
- Porters ensure that the software runs on a range of hardware and software platforms. This role requires programming skills coupled with access to, and knowledge of, the platforms to which the code is to be ported.
- Maintainers are responsible for a section of the project. This responsibility includes ensuring that other sections of the project and other projects who depend on their section are not adversely affected as it changes. As such they are the principal coordinators of the over-all development and require considerable inter-personal skills.
- Tool builders provide much of the auxiliary and infrastructure support for a project. They produce build scripts, test scripts and bug reporting systems that automate and regularise the activity of the other roles.
- GUI Designers design the interface between the user and the software. History has shown the best user interfaces are designed by developers who are slightly removed from the bulk of the coding effort. This distance enables them to see the project from a user’s perspective rather than from a developer’s perspective and therefore to produce an interface that is targeted at the user. Sometimes developers are referred to as Committers . The source code of a project is usually kept in a repository within a version control system. A committer is anyone who can make (or commit) a change to the version control system. All contributions must therefore go though a committer and the committer is responsible for deciding whether that contribution should then be committed to version control. That decision can be influenced by many factors such as the technical and editorial quality of the material, the priority of the feature or bug fix, the trust in the contributor, and so forth.
In contrast to many closed source projects there are no manager roles or funding roles mentioned. Open source projects usually operate under a technical meritocracy and merit stays with the contributor rather than being conferred on their manager or funder. However, there may be managers or funders involved who can exert indirect influence on a project through contributors.
The discussion of these roles can only be a guide. Many specific projects use different terminology, or the same terminology to mean different things.