A while back I started thinking about the roles the Apache Software has defined in this page: http://www.apache.org/foundation/how-it-works.html#roles
First of all I like the limited number of roles, as less is more. And the other roles of the ASF (regarding the other officers) are explained elsewhere. Unfortunately the role definitions described do not, in my opinion, ensure clarity. In stead they are ambiguous and thus are expected to breed confusion and insecurity.
In this posting I will (re)share those definitions and provide a definition that will remove the confusions.
A user is someone that uses our software. They contribute to the Apache projects by providing feedback to developers in the form of bug reports and feature suggestions. Users participate in the Apache community by helping other users on mailing lists and user support forums.
This role definition is ambiguous in many aspects. A user can be both a person and an organisation (both private and public). But that latter aspect is neglected. On top of that: a user does not contribute as he would then be more than just a user…
The better definition would be the following:
A user is a person or organisation experiencing a benefit from the contributions made to the ASF in general or a project in particular.
A developer is a user who contributes to a project in the form of code or documentation. They take extra steps to participate in a project, are active on the developer mailing list, participate in discussions, provide patches, documentation, suggestions, and criticism. Developers are also known as contributors.
Though correct in a way, it is a limiting definition. Everybody who contributes to the project in another way is not recognised. Better would be that this role definition would be stricken from the document and replaced by the following:
A contributor is a person, who contributes to a project of the ASF and therefore to the ASF. Contributions are (but not limited to) participations in mailing lists, conferences, providing improvements to code, documentation, supplying suggestions and criticism to further the project in particular and the ASF in general.
Recognized contributors are contributors who have a signed Contributor License Agreement (CLA) on file with the ASF.
A committer is a developer that was given write access to the code repository and has a signed Contributor License Agreement (CLA) on file. They have an apache.org mail address. Not needing to depend on other people for the patches, they are actually making short-term decisions for the project. The PMC can (even tacitly) agree and approve it into permanency, or they can reject it. Remember that the PMC makes the decisions, not the individual people.
Here the roler definition is talking about a developer again. It also states that the committer make short-term decisions for the project. This latter aspect is wrong, as a committer does not have the power to change the direction of the project (a procedural issue). A committer only has the power to persist code changes in the repositories of project. Furthermore, in this definition a new term is introduced (PMC) and what that project body can do. The better (shorter) definition is:
A committer is a contributor who has been given the privilege of write access to the repositories of the Project. A committer is a contributor (recognised, with an CLA on file) with an email address of the ASF (extension @apache.org)
A PMC member is a developer or a committer that was elected due to merit for the evolution of the project and demonstration of commitment. They have write access to the code repository, an apache.org mail address, the right to vote for the community-related decisions and the right to propose an active user for committership. The PMC as a whole is the entity that controls the project, nobody else.
Again the role definition talks about the developer. Better would be the following definition:
A PMC Member (member of the Project Management Committee) is a contributor who has been elected by the governing body of the project (the PMC) due to merit to the evolution of the project and the demonstration of commitment to the project. On top of the privileges of a committer, a PMC Member has the right to vote on procedural issues and the right to ratify or reject the code changes of the commiter.
The Chair of a Project Management Committee (PMC) is appointed by the Board from the PMC Members. The PMC as a whole is the entity that controls and leads the project. The Chair is the interface between the Board and the Project. PMC Chairs have specific duties.
Again, this is correct in a way, but could be worded better. And also again the definition introduces duties of the governing body of the project. The role definiton also make statements about the (primary) task o a PMC Chair , that would better be defined in the separate document about the duties of the PMC Chair. A better role definition would be:
A PMC Chair is the PMC Member, who is appointed by the Board of the ASF as the Vice-President of the project. In this capacity the PMC Chair reports on the health of the project to the Board of the ASF, and ensures that directives issued by the (Board of) ASF are implemented in the by-laws, policies and/or standing rules of the project.