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.