blob: e9319450cca3f4f6665675dadef509b284803718 [file] [log] [blame] [view]
<!---
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# Apache Maven Project Roles
The Apache Maven project is not just the software it produces.
The Apache Foundation has a phrase: "Community over code" which
is about how it is the community that grows around a project
that is the most important thing.
Everyone reading this is part of the Apache Maven community,
and even if you are an invisible part of the Apache Maven
community you are still part of the community.
There are many ways we can sort the people in our
community, we present the following as one such way.
Please do not take offence if you disagree with this
categorisation. It is important to remember that we are
a *community* not a *clique* so you are entitled to disagree
with others in the community.
*Note:* the right to disagree with other people's opinions
comes with the responsibility not to deliberately cause offence
or discord.
## Informal roles
### Lurkers
People who do not use Maven at all, but have an interest in
the project. This can include people who are developing
competing software tools to Apache Maven.
It would be great if the lurkers would come out of the shadows
and make themselves visible, but every community needs its
lurkers, so if you are a lurker sulking about on the fringes
of the Apache Maven project, know that you are a valued member
of our community. If you ever feel the need to change your role,
we will welcome you with open arms… (and if we don't welcome you
with open arms, please advise the [Project management committee][3]
who are responsible for ensuring that the community is a healthy
one)
### Consumers
People who use Maven, but do not actively join the community.
This does not include people who are: subscribed to one of the
Maven mailing lists; active in a Maven user community (e.g.
something like [stackoverflow][1]; submitting bug reports; etc.).
Maybe Apache Maven is the perfect product for you and does
exactly what you need and want, and you never have a need
to ask questions about how to use Maven as it is immediately
obvious to you how one is supposed to use Maven… If that is the
case, could you please consider taking a more active role in
our community, as Maven is none of the above to our minds
and you might have a point of view that we have missed.
If you do have issues with Maven (we all have issues with it
so there is nothing wrong in having issues with Maven), please
let us know:
* Submitting bug reports is the best way to let us know about bugs,
* Asking questions on the [Users Mailing List][2] is the best way
get answers to questions.
As a last resort, other Maven user communities are another route
to getting more involved in the Maven community, but keep in
mind that Apache Foundation projects are supposed to encourage
the community at the ASF, so you will get more eyes and a
quicker response if you engage directly with the ASF hosted
community.
### Users
People who use Maven and have joined the community. This includes people who have:
* Submitted a bug report,
* Asked a question on the [Maven user list][2],
* Joined one of the other Maven user communities.
We hope your bug report has received some attention. If it
hasn't, why don't you see if you can fix the issue yourself
and submit a patch?
We hope your question was answered. If it hasn't, think of
all the other users who's questions sit unanswered, how many
of them do you know an answer for (even if only a partial
answer)? Why don't you respond to their questions with the
answers you know? If everybody did that, your question would
have an answer. Pay it forward!
We hope your experience in one of the other Maven user
communities is a positive one, so why not join the canonical
Maven user community and subscribe to the [Maven user list][2]?
### Contributors
People who use Maven, have joined the Maven community and contribute
back to the community. This includes people who:
* Submit reports of the results of testing proposed releases of
Maven and Maven plugins,
* Answer questions on the [Maven user list][2] (or even other Maven user communities),
* Submit patches to resolve reported bugs in Maven or Maven plugins hosted at Apache,
* Help curate bug reports by identifying duplicate reports, or
related issues.
We wrote [a guide for contributors](/guides/development/guide-helping.html).
Keep up the contributions, you are a critical member of our
community. If we like what we see, we may even ask you to
consider taking a formal role in our project.
## Formal roles
### [Committers](http://www.apache.org/foundation/how-it-works.html#committers)
These are those people who have been given write access to the
Apache Maven code repository and have a signed
[Contributor License Agreement (CLA)][4] on file with the ASF.
The Apache Maven project uses a Commit then Review policy and has
[a number of conventions][5] which should be followed.
Committers are responsible for ensuring that every file they
commit is covered by a valid CLA.
Committers who would like to become PMC members should try to find
ways to demonstrate the responsibilities listed in the PMC Members
section in order to make it easier for PMC members to decide
that the committer is ready for the responsibility.
### Emeritus committers
If a committer decides that they cannot currently continue with
the responsibilities of a committer, they may elect to go
emeritus.
At any time, an emeritus committer for the Apache Maven project
may decide that they want to become an active committer again
by informing the [project management committee][3]. The current
policy is that committer role reinstatement is automatic.
### [Project Management Committee](http://www.apache.org/foundation/how-it-works.html#pmc-members)
The Project Management Committee as a whole is the entity that
controls the project. Membership of the Project Management Committee
is decided by the board of the Apache Software Foundation, based on
nominations from the Project Management Committee.
It is a long standing tradition of the Apache Maven Project that
the Project Management Committee reviews the active committers
approximately every 6 months with a view to determining whether
any of those committers would be suitable candidates to
recommend to the board for inclusion on the PMC. It should be
noted that this is simply a tradition and not a right. There
are significant responsibilities that accompany the PMC role
and as such, if a person is not demonstrating those responsibilities,
they may not be nominated or their nomination
may be rejected by the board. Such decisions are not a
reflection of the technical competence of the person, and
indeed the person themselves may even decide to turn down the
nomination. For that reason the results of such periodic reviews
are kept confidential.
The Project Management Committee has the following responsibilities:
* Active management of those projects identified by the resolution of the Board
of Directors of the Apache Foundation;
* Ensure the project remains a healthy top-level project of the Apache Foundation
(if a PMC member wants the project to be hosted elsewhere they should resign
from the PMC stating their reason - if the PMC shrinks beyond the minimal viable
size then as a result of a desire by the bulk of the PMC to move the project
elsewhere, the Board of the Apache Foundation will take that into account
when moving the project into the Foundation's Attic)
* Prepare reports as required by the Board of the Apache Foundation and
ensure those reports are ready for presentation by the PMC Chair in a timely
manner;
* Defend the trademarks belonging to the project;
* Proposing active contributors for committership;
* Ensure that votes in the community are used as a tool to establish consensus
and not a weapon to disenfranchise or alienate a minority of the community;
* Binding votes in project decisions;
* Ensure that code committed to the project is either committed under a valid CLA
or is code that was contributed with a clear indication that the Apache License
applied (i.e. small patches submitted to the issue tracker or to the mailing list
are assumed to be submitted with the intent of being covered by the Apache
License unless the submitter clearly marks those patches as not being covered)
* Ensure that third party dependencies shipped as part of the project's releases
are covered by a compatible license.
* Voting on release artifacts;
* Ensure [Developers Conventions][5] are followed, or updated/improved if necessary;
* Knows and respects the goals and processes of the community and helps educate
newer members about them.
#### Standards for Community Commitment
In the spirit of supporting the health of our community, Project
Management Committee members refrain from actions that subvert the
functioning of the committee itself.
#### Promotion of other projects
The Apache Foundation currently does not have a policy requiring projects to
cross-promote. For example Subversion is an Apache project, yet projects
are free to choose from Subversion and GIT (a non-Apache project) for source
control.
When considering integration of technologies within Maven, there is
thus no requirement that other Apache projects be picked over non-Apache projects.
The primary requirements for picking technologies to integrate with Maven
are thus:
* A [compatible license][6], i.e. [Category A][7] or [Category B][8]
* A good technical fit
* A strong preference on behalf of the portion of the community that
will be doing the integration.
Where a PMC member is advocating a specific technology, they should declare
any interest / involvement that they have in that technology or a competing
technology - irrespective of whether the project is an Apache project or a
project hosted elsewhere.
PMC members with a stated interest / involvement should try to abstain from
making binding votes in either direction with respect to the relevant
technology choices.
#### Forks of the project codebase
All code that gets released by the community should have sufficient opportunity
for review both:
* By the PMC, to check the legal responsibilities delegated by
the Board; and
* By the committers (which includes the PMC), to check that the technical
direction and quality is in line with the consensus roadmap (where such a
roadmap has been agreed).
It is self evident that the opportunity for review is much greater if the code
is committed to the project's source control as early as possible. Similarly
small commits are easier to review than large commits.
There is nothing inherently wrong with maintaining a fork of the Maven
codebase outside of the Apache Foundation. Individual developers can have
their own style of working and may prefer to work in a fork so that they
can throw away failed experiments with less visibility (though it could be
argued that the visibility of such failed experiments can be valuable
documentation for others). As soon as changes in that
fork are identified (by the people maintaining the fork) which should be
brought back to the project those changes should be introduced into at
least a branch hosted on the Apache Maven source control in order to
facilitate the easier review by the community. The PMC should encourage
by example the early committing of such changes from a fork (that they
are involved in maintaining) back to Apache Maven source control.
Similarly, if a fork is being hosted elsewhere in order to get contributions
from other talented individuals, the PMC members should endevour to bring
those individuals and their talent to the project as committers.
Finally, where a fork is hosted outside of Apache hardware, there is less
traceability of the code provenance, for example GIT commits can be squashed
and history re-written to mask or otherwise hide the source of contributions.
This does not mean that code coming from an external fork inherently has
such issues, instead it means that the requirements for review and verification
of provenance grow exponentially when dealing with large sets of changes
originating from a long running fork hosted outside of Apache foundation
source control. Anybody maintaining a long running fork should be aware
of the risk that review obligations may grow above the time capabilities
of the PMC and committers such that when they eventually decide to try and
bring the changes in their fork back to the Apache Maven project their
contribution may end up being rejected on the basis of the review of a
large set of changes being too difficult/timeconsuming.
### [Project Management Chair](http://www.apache.org/foundation/how-it-works.html#pmc-chair)
For various legal reasons, there are certain things that the Apache
Software Foundation can only delegate to an officer of the foundation.
The Project Management Committee is responsible for nominating
the lucky victim who gets made an officer of the foundation (subject
to the approval of the board).
This person then becomes the interface between the board and
the project management committee. They do not have any other
additional gravitas in the project, it is the Project Management
Committee as a whole that is responsible for the direction of the project.
If things break down and there is no consensus and there is no clear
ability to reach any conclusion *and* it is in the interest of the
foundation because damage is done and the board expects the chair
to act as an officier of the foundation and clean things up, then the chair
can act as an ultimate decision maker, however, by this point the
board of the foundation must already be well aware of the situation and
should be actively monitoring the chair.
[1]: http://stackoverflow.com/questions/tagged/maven
[2]: mailto:users@maven.apache.org
[3]: mailto:private@maven.apache.org
[4]: http://www.apache.org/licenses/#clas
[5]: /developers/index.html#Developers_Conventions
[6]: http://www.apache.org/legal/3party.html
[7]: http://www.apache.org/legal/3party.html#category-a
[8]: http://www.apache.org/legal/3party.html#category-b