That said, every project needs leaders: the ones who participate in governance of the project, maintaining the software and making key decisions.
Because open source software (OSS) is highly collaborative, it is extremely important to understand the difference between various roles on the project, to avoid misconceptions about authority (who makes decisions) and responsibility (who is pledged to do the work) concerning each project.
The most common roles in OSS are:
- Founders are the people who originally launched the project.
- Leads are responsible for making final decisions. In the open source world these people are often referred to as benevolent dictators. Changes with a serious impact on the community are typically discussed on open channels first.
- Maintainers keep the project functional, fix bugs and make releases. They often make day to day decisions, and are typically involved in discussion with the project lead(s) regarding major decisions, although the lead has final decision-making authority.
- Developers are people who work on the project significantly or often. Typically they have direct push access to the source code. In some cases they make day to day decisions, depending on their experience and comfort level with the project.
- Contributors are people who help with the project either currently or in the past. They may participate occasionally or sporadically, and are typically not involved in project decision making.
SciJava team roles
Projects in the SciJava software stack define each component's team as the group of people who take responsibility for it. The following roles formalize the ways people are pledged to help:
|Founder||Created the project. Does not imply any current participation or responsibility.|
|Lead||Has decision-making authority: timing of releases, inclusion of features, etc.|
|Developer||Adds new features or enhancements. Can be assigned to address feature requests.|
|Debugger||Fixes bugs. Can be assigned open issues to solve.|
|Reviewer||Reviews patch submissions.|
|Support||Responds to community questions and issue reports. Keeps the issue tracker organized.|
|Maintainer||Merges patch submissions. Cuts releases.|
|Contributor||Contributed code to the project. Does not imply any current participation or responsibility.|
Individuals often fill more than one role.
This web site documents lots of software components—and in particular, many ImageJ plugins. Components in the ecosystem each have a distinct development path, with varying levels of maturity and activity, which is ultimately determined by the people who participate in developing it.
Each component's page features an informational sidebar with a status report derived from the component's declared team. This sidebar is intended to help users understand what level to expect when seeking help, reporting issues, and submitting feature requests.
Development status conveys what to expect regarding a component's future.
|Unstable||Project is under heavy development, with unstable API undergoing iterations of refinement. Typically, these components are either unreleased, or versioned at 0.x.|
|Active||New features are being actively developed. API breakages are kept as limited as possible.|
|Stable||No new features are under development. API is stable.|
|Obsolete||The project is discontinued.|
Support status indicates the level to which the team responds to questions and issue reports.
|Active||Someone will respond to questions on community channels, and addresses issue reports in the project's issue tracker. A best effort is made to fix reported bugs within a reasonable time frame.|
|Partial||Someone will respond to questions on community channels, as well as to issue reports in the project's issue tracker. But reported bugs may not be addressed in a timely manner.|
|Minimal||There is at least one person pledged to the project in some capacity, but not all roles are filled. Response time to questions and issue reports may be protracted.|
|None||No one is pledged to support the project. Questions and issue reports may be ignored.|
SciJava project summary
Here is a summary of roles for projects in the SciJava ecosystem.
1 Pietzsch leads on day to day issues. Pietzsch, Preibisch and Saalfeld vote on primary decisions, with Pietzsch's vote breaking ties.
2 Schindelin is currently on sabbatical from Fiji; see this thread on fiji-devel.
3 Barber leads development of the SLIM Curve C library; Rueden leads development of the SLIM Curve plugin for ImageJ.
4 Rueden maintains the Bio-Formats update site for ImageJ, but is not otherwise a Bio-Formats maintainer.
5 For the purposes of this table, "KNIME" means the KNIME Image Processing extensions, not the KNIME project as a whole.