blob: 18753e052a3129381db48ac81bf8b18f46f778e7 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Copyright 1999-2005 The Apache Software Foundation
Licensed 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.
-->
<!--
// ======================================================================== 78
-->
<document>
<properties>
<title>Project Management Committee Charter</title>
</properties>
<body>
<section name="Apache Struts PMC Charter">
<p>
Struts is a Project of the
<a href="http://apache.org/foundation">
Apache Software Foundation</a>
(ASF), formed by a resolution of the
<a href="http://apache.org/foundation/board/">ASF Board of
Directors</a>
. As an ASF Project, Struts is subject to the
<a href="http://apache.org/foundation/bylaws.html">ASF
Bylaws</a>
and the direction of the ASF Board.
</p>
<subsection name="Roles and Responsibilities">
<p>
The roles and responsibilities that people can assume in
the project
are based on merit. Everybody can help no matter what
their role.
Those who have been longterm or valuable contributors to
the project
can earn the right to commit directly to the source
repository and to
cast binding votes during the decision-making process.
</p>
<p>
<strong>Users.</strong>
Users are the people who use the products of the Project.
People in
this role aren't contributing code, but they are using the
products,
reporting bugs, making feature requests, and such. This is
by far
the most important category of people as, without users,
there is no
reason for the Project. When a user starts to contribute
code or
documentation patches, they become a Contributor.
</p>
<p>
<strong>Contributors.</strong>
Contributors are the people who write code or
documentation patches or
contribute positively to the project in other ways. When a
volunteer's
patch is applied, the contribution is recognized in the
version control
log.
</p>
<p>
<strong>Committers.</strong>
Contributors who give frequent and valuable contributions
to a
subproject of the Project can have their status promoted
to that of
a &quot;
<em>Committer</em>
&quot; for that subproject. A Committer
has write access to the source code repository. Committer
status is
granted by the Project Management Committee by majority
vote.
</p>
<p>
<strong>Project Management Committee (PMC).</strong>
Committers and other volunteers who frequently participate
with
valuable contributions may have their status promoted to
that of a
&quot;
<em>Project Management Committee Member</em>
&quot;. The PMC
is responsible for the day-to-day management of the
Project.
</p>
</subsection>
<subsection name="Management">
<p>
The Vice President is appointed by the ASF Board. The Vice
President is assisted by the Project Management Committee
(PMC)
and also serves as the PMC chair. The PMC may nominate new
members. Nominees may then be approved with a 3/4 majority
vote
of the PMC. Membership can be revoked by a unanimous vote
of all
the active PMC members other than the member in question.
The
list of active PMC members can be found on our
<a href="volunteers.html">Volunteers page</a>
.
</p>
</subsection>
<subsection name="PMC Duties">
<p>
The PMC is responsible for the day-to-day
management of the Struts Project. The PMC oversees all
changes
made to the codebase. The PMC must ensure that all code
under a
Apache Struts repository is the lawful property of the
Foundation and
may be distributed under the
<a href="http://apache.org/licenses/">
Apache Software License</a>
. All releases of a Struts subproject
must be sanctioned by the Project Management Committee.
</p>
</subsection>
<subsection name="Subprojects">
<p>
Subprojects are the Project's unit of release. Each
subproject should
represent an implementation of a Struts framework or a
related component.
Each subproject should focus on creating, maintaining, and
releasing a
single software product or "deliverable".
</p>
<p>
All PMC Members have voting rights in all subprojects.
Members not familiar
with a subproject codebase may abstain from any given
vote. All Committers
have write access to all subprojects. Subprojects are
units of release, not
units of work.
</p>
<p>
PMC members may propose the creation of new subprojects.
Proposals are
to contain the scope of the project, identify the initial
source from
which the project is to be populated, identify any mailing
lists or
repositories, if any, which are to be created. Creation of
a new
subproject requires approval by a 3/4 majority vote of the
PMC.
</p>
</subsection>
<subsection name="Decision Making">
<p>
All Volunteers are encouraged to participate in decisions,
but the
decision itself is made by the Project Management
Committee.
The Project is a &quot;
<em>Minimum Threshold Meritocracy</em>
&quot;.
</p>
</subsection>
<subsection name="Voting">
<p>
Any subscriber to the list may vote on any issue or action
item.
Votes from Contributors and Committers are especially
welcome.
However, the only binding votes are those cast by a PMC
Member.
</p>
<p>
The act of voting carries certain obligations. Voters are
not only
stating their opinion, they are also agreeing to help do
the work.
</p>
<p>Each vote can be made in one of three flavors:</p>
<table>
<tr>
<td>
<strong>+1</strong>
</td>
<td>
&quot;Yes,&quot; &quot;Agree,&quot; or &quot;the
action should be
performed.&quot; On some issues this is only
binding if the voter
has tested the action on their own system(s).
</td>
</tr>
<tr>
<td>
<strong>+/-0</strong>
</td>
<td>
&quot;Abstain,&quot; &quot;no opinion&quot;. An
abstention may
have detrimental effects if too many people
abstain.
</td>
</tr>
<tr>
<td>
<strong>-1</strong>
</td>
<td>
<p>
&quot;No.&quot; On issues where consensus is
required, this vote
counts as a
<strong>veto</strong>
. All vetos must contain an
explanation of why the veto is appropriate.
Vetos with no
explanation are void. A veto cannot be
overruled. If you disagree
with the veto, you should lobby the person who
cast the veto.
Voters intending to veto an action item should
make their opinions
known to the group immediately so that the
problem can be remedied
as early as possible.
</p>
<p>
If a Committer tries to "override" a veto by
restoring a vetoed
change, the PMC may ask the infrastructure
team to revoke that
Committer's write privileges.
</p>
</td>
</tr>
</table>
<p>
An action requiring consensus approval must receive at
least
<strong>3 binding +1</strong>
votes and
<strong>no binding
vetos</strong>
. An action requiring majority approval must receive
at least
<strong>3 binding +1</strong>
votes and more
<strong>+1</strong>
votes than
<strong>-1</strong>
votes. All other
action items are considered to have lazy approval until
somebody
votes
<strong>-1</strong>
, after which point they are decided by
either consensus or majority vote, depending on the type
of action
item.
</p>
<p>
Voting represent consensus and votes are never final.
Circumstances
change, and so may votes. A veto may be converted to a +1
after
discussion, and likewise a +1 may be converted to a -1.
By convention, Committers should allow a vote to circulate
for 72
hours before taking action.
</p>
</subsection>
<subsection name="Action Items">
<p>
All decisions revolve around &quot;
<em>Action
Items.</em>
&quot; Action Items consist of the following:
</p>
<ul>
<li>Long Term Plans</li>
<li>Short Term Plans</li>
<li>Product Changes</li>
<li>Showstoppers</li>
<li>Release Plan</li>
<li>Release Grade</li>
</ul>
</subsection>
<subsection name="Long Term Plans">
<p>
Long term plans are simply announcements that group
members are
working on particular issues related to the Project. These
are not
voted on, but Committers and PMC Members who do not agree
with a
particular plan, or think that an alternative plan would
be better,
are obligated to inform the group of their feelings.
</p>
</subsection>
<subsection name="Short Term Plan">
<p>
Short term plans are announcements that a volunteer is
working on a
particular set of documentation or code files with the
implication
that other volunteers should avoid them or try to
coordinate their
changes.
</p>
</subsection>
<subsection name="Product Changes">
<p>
All product changes to the repository are subject to
lazy consensus.
</p>
</subsection>
<subsection name="Showstoppers">
<p>
Showstoppers are issues that require a fix be in place
before the
next public release. They are listed in the status file in
order to
focus special attention on these problems. An issue
becomes a
showstopper when it is listed as such in the status file
and remains
so by lazy consensus.
</p>
</subsection>
<subsection name="Release Plan">
<p>
A release plan must be used to keep all volunteers aware
of when a
release is desired, whether it will be a major, minor, or
milestone release, who will be the release manager, when
the
repository will be tagged to create the distribution, and
other assorted
information to keep volunteers from tripping over each
other. A release
plan must be announced to the DEV list. Lazy majority
decides each issue
in a release plan.
</p>
</subsection>
<subsection name="Release Grade">
<p>
After a proposed release is built, it must be tested and
classified before
being released to the general public. The proposed release
may be assigned
"Alpha", "Beta" or "General Availability" classifications
by majority vote.
Once a release is classified by the PMC Members, it may be
distributed to
the general public on behalf of the Foundation.
Distributions may be
reclassified or withdrawn by majority vote, but the
release number may not
be reused by another distribution.
</p>
</subsection>
</section>
<section>
<p class="right">
Next:
<a href="releases.html">Release Guidelines</a>
</p>
</section>
</body>
</document>