|
|
@@ -8,42 +8,42 @@ |
|
|
|
<body> |
|
|
|
<section name="Apache Ant Project Bylaws"> |
|
|
|
<p> |
|
|
|
This document defines the bylaws under which the Apache Ant project |
|
|
|
operates. It defines the roles and responsibilities of the |
|
|
|
project, who may vote, how voting works, how conflicts are resolved, |
|
|
|
This document defines the bylaws under which the Apache Ant project |
|
|
|
operates. It defines the roles and responsibilities of the |
|
|
|
project, who may vote, how voting works, how conflicts are resolved, |
|
|
|
etc. |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
<p> |
|
|
|
Ant is a project of the |
|
|
|
<a href="http://www.apache.org/foundation/">Apache Software |
|
|
|
Foundation</a>. The foundation holds the copyright on Apache |
|
|
|
code including the code in the Ant codebase. The |
|
|
|
<a href="http://www.apache.org/foundation/faq.html">foundation FAQ</a> |
|
|
|
Ant is a project of the |
|
|
|
<a href="http://www.apache.org/foundation/">Apache Software |
|
|
|
Foundation</a>. The foundation holds the copyright on Apache |
|
|
|
code including the code in the Ant codebase. The |
|
|
|
<a href="http://www.apache.org/foundation/faq.html">foundation FAQ</a> |
|
|
|
explains the operation and background of the foundation. |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
<p> |
|
|
|
Ant is typical of Apache projects in that it operates under a set of |
|
|
|
principles, known collectively as the "Apache Way". If you are |
|
|
|
new to Apache development, please refer to the |
|
|
|
<a href="http://incubator.apache.org">Incubator project</a> |
|
|
|
for more information on how Apache projects operate. <b>Note:</b> the |
|
|
|
incubator project has only been recently set up and does not yet explain |
|
|
|
Ant is typical of Apache projects in that it operates under a set of |
|
|
|
principles, known collectively as the "Apache Way". If you are |
|
|
|
new to Apache development, please refer to the |
|
|
|
<a href="http://incubator.apache.org">Incubator project</a> |
|
|
|
for more information on how Apache projects operate. <b>Note:</b> the |
|
|
|
incubator project has only been recently set up and does not yet explain |
|
|
|
the Apache Way in great detail. |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
<ul> |
|
|
|
<li><a href="#Roles and Responsibilities">Roles and Responsibilities</a></li> |
|
|
|
<li><a href="#Decision Making">How decisions are made</a></li> |
|
|
|
</ul> |
|
|
|
|
|
|
|
</ul> |
|
|
|
|
|
|
|
</section> |
|
|
|
|
|
|
|
<section name="Roles and Responsibilities"> |
|
|
|
<p> |
|
|
|
Apache projects define a set of roles with associated rights and |
|
|
|
responsibilities. These roles govern what tasks an individual may perform |
|
|
|
Apache projects define a set of roles with associated rights and |
|
|
|
responsibilities. These roles govern what tasks an individual may perform |
|
|
|
within the project. The roles are defined in the following sections |
|
|
|
</p> |
|
|
|
|
|
|
@@ -55,83 +55,83 @@ |
|
|
|
Project Management Committee (PMC)</a> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
|
|
|
|
|
|
|
|
<subsection name="Users"> |
|
|
|
<p> |
|
|
|
The most important participants in the project are people who use our |
|
|
|
software. The majority of our developers start out as users and guide |
|
|
|
The most important participants in the project are people who use our |
|
|
|
software. The majority of our developers start out as users and guide |
|
|
|
their development efforts from the user's perspective. |
|
|
|
</p> |
|
|
|
|
|
|
|
<p> |
|
|
|
Users contribute to the Apache projects by providing feedback to |
|
|
|
developers in the form of bug reports and feature suggestions. As |
|
|
|
well, users participate in the Apache community by helping other users |
|
|
|
Users contribute to the Apache projects by providing feedback to |
|
|
|
developers in the form of bug reports and feature suggestions. As |
|
|
|
well, users participate in the Apache community by helping other users |
|
|
|
on mailing lists and user support forums. |
|
|
|
</p> |
|
|
|
|
|
|
|
</subsection> |
|
|
|
|
|
|
|
|
|
|
|
<subsection name="Developers"> |
|
|
|
<p> |
|
|
|
All of the volunteers who are contributing time, code, documentation, |
|
|
|
or resources to the Ant Project. A developer that makes sustained, |
|
|
|
welcome contributions to the project may be invited to become a |
|
|
|
Committer, though the exact timing of such invitations depends on many |
|
|
|
All of the volunteers who are contributing time, code, documentation, |
|
|
|
or resources to the Ant Project. A developer that makes sustained, |
|
|
|
welcome contributions to the project may be invited to become a |
|
|
|
Committer, though the exact timing of such invitations depends on many |
|
|
|
factors. |
|
|
|
</p> |
|
|
|
</subsection> |
|
|
|
|
|
|
|
|
|
|
|
<subsection name="Committers"> |
|
|
|
<p> |
|
|
|
The project's Committers are responsible for the project's technical |
|
|
|
management. All committers have write access to the project's source |
|
|
|
repositories. Committers may cast binding votes on any technical |
|
|
|
The project's Committers are responsible for the project's technical |
|
|
|
management. All committers have write access to the project's source |
|
|
|
repositories. Committers may cast binding votes on any technical |
|
|
|
discussion regarding the project. |
|
|
|
</p> |
|
|
|
|
|
|
|
<p> |
|
|
|
Committer access is by invitation only and must be approved by lazy |
|
|
|
consensus of the active PMC members. A Committer is considered emeritus |
|
|
|
by their own declaration or by not contributing in any form to the |
|
|
|
project for over six months. An emeritus committer may request |
|
|
|
Committer access is by invitation only and must be approved by lazy |
|
|
|
consensus of the active PMC members. A Committer is considered emeritus |
|
|
|
by their own declaration or by not contributing in any form to the |
|
|
|
project for over six months. An emeritus committer may request |
|
|
|
reinstatement of commit access from the PMC. Such reinstatement is |
|
|
|
subject to lazy consensus of active PMC members. |
|
|
|
subject to lazy consensus of active PMC members. |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
<p> |
|
|
|
Commit access can be revoked by a unanimous vote of all the active |
|
|
|
Commit access can be revoked by a unanimous vote of all the active |
|
|
|
PMC members (except the committer in question if they are also a PMC member). |
|
|
|
</p> |
|
|
|
|
|
|
|
<p> |
|
|
|
All Apache committers are required to have a signed Contributor License |
|
|
|
All Apache committers are required to have a signed Contributor License |
|
|
|
Agreement (CLA) on file with the Apache Software Foundation. There is a |
|
|
|
<a href="http://www.apache.org/dev/committers.html">Committer FAQ</a> |
|
|
|
<a href="http://www.apache.org/dev/committers.html">Committer FAQ</a> |
|
|
|
which provides more details on the requirements for Committers |
|
|
|
</p> |
|
|
|
|
|
|
|
<p> |
|
|
|
A committer who makes a sustained contribution to the project may be |
|
|
|
invited to become a member of the PMC. The form of contribution is |
|
|
|
not limited to code. It can also include code review, helping out |
|
|
|
A committer who makes a sustained contribution to the project may be |
|
|
|
invited to become a member of the PMC. The form of contribution is |
|
|
|
not limited to code. It can also include code review, helping out |
|
|
|
users on the mailing lists, documentation, etc. |
|
|
|
</p> |
|
|
|
</subsection> |
|
|
|
<subsection name="Project Management Committee"> |
|
|
|
<p> |
|
|
|
The Project Management Committee (PMC) for Apache Ant was created by a |
|
|
|
<a href="mission.html">resolution</a> of the board of the Apache |
|
|
|
Software Foundation on 18<sup>th</sup> November 2002. The PMC is |
|
|
|
responsible to the board and the ASF for the management and oversight |
|
|
|
The Project Management Committee (PMC) for Apache Ant was created by a |
|
|
|
<a href="mission.html">resolution</a> of the board of the Apache |
|
|
|
Software Foundation on 18<sup>th</sup> November 2002. The PMC is |
|
|
|
responsible to the board and the ASF for the management and oversight |
|
|
|
of the Apache Ant codebase. The responsibilities of the PMC include |
|
|
|
</p> |
|
|
|
|
|
|
|
<ul> |
|
|
|
<li>Deciding what is distributed as products of the Apache Ant project. |
|
|
|
<li>Deciding what is distributed as products of the Apache Ant project. |
|
|
|
In particular all releases must be approved by the PMC |
|
|
|
</li> |
|
|
|
<li>Maintaining the project's shared resources, including the codebase |
|
|
|
<li>Maintaining the project's shared resources, including the codebase |
|
|
|
repository, mailing lists, websites. |
|
|
|
</li> |
|
|
|
<li>Speaking on behalf of the project. |
|
|
@@ -145,61 +145,61 @@ |
|
|
|
</ul> |
|
|
|
|
|
|
|
<p> |
|
|
|
Membership of the PMC is by invitation only and must be approved by a |
|
|
|
lazy consensus of active PMC members. A PMC member is considered |
|
|
|
"emeritus" by their own declaration or by not contributing in |
|
|
|
any form to the project for over six months. An emeritus member may |
|
|
|
request reinstatement to the PMC. Such reinstatement is subject to lazy |
|
|
|
consensus of the active PMC members. Membership of the PMC can be |
|
|
|
revoked by an unanimous vote of all the active PMC members other than |
|
|
|
Membership of the PMC is by invitation only and must be approved by a |
|
|
|
lazy consensus of active PMC members. A PMC member is considered |
|
|
|
"emeritus" by their own declaration or by not contributing in |
|
|
|
any form to the project for over six months. An emeritus member may |
|
|
|
request reinstatement to the PMC. Such reinstatement is subject to lazy |
|
|
|
consensus of the active PMC members. Membership of the PMC can be |
|
|
|
revoked by an unanimous vote of all the active PMC members other than |
|
|
|
the member in question. |
|
|
|
</p> |
|
|
|
|
|
|
|
<p> |
|
|
|
The chair of the PMC is appointed by the ASF board. The chair is an |
|
|
|
office holder of the Apache Software Foundation (Vice President, |
|
|
|
Apache Ant) and has primary responsibility to the board for the |
|
|
|
management of the projects within the scope of the Ant PMC. The chair |
|
|
|
reports to the board quarterly on developments within the Ant project. |
|
|
|
The PMC may consider the position of PMC chair annually and if |
|
|
|
supported by 3/4 Majority may recommend a new chair to the board. |
|
|
|
The chair of the PMC is appointed by the ASF board. The chair is an |
|
|
|
office holder of the Apache Software Foundation (Vice President, |
|
|
|
Apache Ant) and has primary responsibility to the board for the |
|
|
|
management of the projects within the scope of the Ant PMC. The chair |
|
|
|
reports to the board quarterly on developments within the Ant project. |
|
|
|
The PMC may consider the position of PMC chair annually and if |
|
|
|
supported by 2/3 Majority may recommend a new chair to the board. |
|
|
|
Ultimately, however, it is the board's responsibility who it chooses |
|
|
|
to appoint as the PMC chair. |
|
|
|
</p> |
|
|
|
</subsection> |
|
|
|
</section> |
|
|
|
|
|
|
|
|
|
|
|
<section name="Decision Making"> |
|
|
|
<p> |
|
|
|
Within the Ant project, different types of decisions require different |
|
|
|
forms of approval. For example, the |
|
|
|
<a href="#Roles and Responsibilities">previous section</a> describes |
|
|
|
several decisions which require "lazy consensus" approval. This |
|
|
|
section defines how voting is performed, the types of approvals, and which |
|
|
|
Within the Ant project, different types of decisions require different |
|
|
|
forms of approval. For example, the |
|
|
|
<a href="#Roles and Responsibilities">previous section</a> describes |
|
|
|
several decisions which require "lazy consensus" approval. This |
|
|
|
section defines how voting is performed, the types of approvals, and which |
|
|
|
types of decision require which type of approval. |
|
|
|
</p> |
|
|
|
|
|
|
|
<subsection name="Voting"> |
|
|
|
<p> |
|
|
|
Decisions regarding the project are made by votes on the primary project |
|
|
|
development mailing list (ant-dev@jakarta.apache.org). Where necessary, |
|
|
|
PMC voting may take place on the private Ant PMC mailing list. |
|
|
|
Votes are clearly indicated by subject line starting with [VOTE] or |
|
|
|
[PMC-VOTE]. Votes may contain multiple items for approval and these |
|
|
|
should be clearly separated. Voting is carried out by replying to the |
|
|
|
Decisions regarding the project are made by votes on the primary project |
|
|
|
development mailing list (ant-dev@jakarta.apache.org). Where necessary, |
|
|
|
PMC voting may take place on the private Ant PMC mailing list. |
|
|
|
Votes are clearly indicated by subject line starting with [VOTE] or |
|
|
|
[PMC-VOTE]. Votes may contain multiple items for approval and these |
|
|
|
should be clearly separated. Voting is carried out by replying to the |
|
|
|
vote mail. Voting may take four flavours |
|
|
|
</p> |
|
|
|
|
|
|
|
<table> |
|
|
|
<tr> |
|
|
|
<td><strong>+1</strong></td> |
|
|
|
<td><strong>+1</strong></td> |
|
|
|
<td> |
|
|
|
"Yes," "Agree," or "the action should be |
|
|
|
performed." In general, this vote also indicates a willingness |
|
|
|
on the behalf of the voter in "making it happen" |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
|
|
|
|
|
|
|
|
<tr> |
|
|
|
<td><strong>+0</strong></td> |
|
|
|
<td> |
|
|
@@ -208,7 +208,7 @@ |
|
|
|
to help. |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
|
|
|
|
|
|
|
|
<tr> |
|
|
|
<td><strong>-0</strong></td> |
|
|
|
<td> |
|
|
@@ -217,69 +217,69 @@ |
|
|
|
action going ahead. |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
|
|
|
|
|
|
|
|
<tr> |
|
|
|
<td><strong>-1</strong></td> |
|
|
|
<td> |
|
|
|
This is a negative vote. On issues where consensus is required, |
|
|
|
this vote counts as a <strong>veto</strong>. All vetoes must |
|
|
|
contain an explanation of why the veto is appropriate. Vetoes with |
|
|
|
This is a negative vote. On issues where consensus is required, |
|
|
|
this vote counts as a <strong>veto</strong>. All vetoes must |
|
|
|
contain an explanation of why the veto is appropriate. Vetoes with |
|
|
|
no explanation are void. It may also be appropriate for a -1 vote |
|
|
|
to include an alternative course of action. |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
</table> |
|
|
|
|
|
|
|
|
|
|
|
<p> |
|
|
|
All participants in the Ant project are encouraged to show their |
|
|
|
agreement with or against a particular action by voting. For technical |
|
|
|
decisions, only the votes of active committers are binding. Non binding |
|
|
|
votes are still useful for those with binding votes to understand the |
|
|
|
perception of an action in the wider Ant community. For PMC decisions, |
|
|
|
votes are still useful for those with binding votes to understand the |
|
|
|
perception of an action in the wider Ant community. For PMC decisions, |
|
|
|
only the votes of PMC members are binding. |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
<p> |
|
|
|
Voting can also be applied to changes made to the Ant codebase. These |
|
|
|
typically take the form of a veto (-1) in reply to the commit message |
|
|
|
sent when the commit is made. |
|
|
|
sent when the commit is made. |
|
|
|
</p> |
|
|
|
</subsection> |
|
|
|
|
|
|
|
|
|
|
|
<subsection name="Approvals"> |
|
|
|
<p> |
|
|
|
These are the types of approvals that can be sought. Different actions |
|
|
|
require different types of approvals |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
<table> |
|
|
|
<tr> |
|
|
|
<td><strong>Consensus</strong></td> |
|
|
|
<td><strong>Consensus</strong></td> |
|
|
|
<td> |
|
|
|
For this to pass, all voters with binding votes must vote and there |
|
|
|
can be no binding vetoes (-1). Consensus votes are rarely required |
|
|
|
due to the impracticality of getting all eligible voters to cast a |
|
|
|
For this to pass, all voters with binding votes must vote and there |
|
|
|
can be no binding vetoes (-1). Consensus votes are rarely required |
|
|
|
due to the impracticality of getting all eligible voters to cast a |
|
|
|
vote. |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
|
|
|
|
|
|
|
|
<tr> |
|
|
|
<td><strong>Lazy Consensus</strong></td> |
|
|
|
<td><strong>Lazy Consensus</strong></td> |
|
|
|
<td> |
|
|
|
Lazy consensus requires 3 binding +1 votes and no binding vetoes. |
|
|
|
Lazy consensus requires 3 binding +1 votes and no binding vetoes. |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
|
|
|
|
|
|
|
|
<tr> |
|
|
|
<td><strong>Lazy Majority</strong></td> |
|
|
|
<td><strong>Lazy Majority</strong></td> |
|
|
|
<td> |
|
|
|
A lazy majority vote requires 3 binding +1 votes and more binding +1 |
|
|
|
votes that -1 votes. |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
|
|
|
|
|
|
|
|
<tr> |
|
|
|
<td><strong>Lazy Approval</strong></td> |
|
|
|
<td><strong>Lazy Approval</strong></td> |
|
|
|
<td> |
|
|
|
An action with lazy approval is implicitly allowed unless a -1 vote |
|
|
|
is received, at which time, depending on the type of action, either |
|
|
@@ -288,42 +288,42 @@ |
|
|
|
</tr> |
|
|
|
|
|
|
|
<tr> |
|
|
|
<td><strong>2/3 Majority</strong></td> |
|
|
|
<td><strong>2/3 Majority</strong></td> |
|
|
|
<td> |
|
|
|
Some actions require a 2/3 majority of active committers or PMC |
|
|
|
members to pass. Such actions typically affect the foundation |
|
|
|
of the project (e.g. adopting a new codebase to replace an existing |
|
|
|
product). The higher threshold is designed to ensure such changes |
|
|
|
are strongly supported. To pass this vote requires at least 2/3 of |
|
|
|
Some actions require a 2/3 majority of active committers or PMC |
|
|
|
members to pass. Such actions typically affect the foundation |
|
|
|
of the project (e.g. adopting a new codebase to replace an existing |
|
|
|
product). The higher threshold is designed to ensure such changes |
|
|
|
are strongly supported. To pass this vote requires at least 2/3 of |
|
|
|
binding vote holders to vote +1 |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
</table> |
|
|
|
</subsection> |
|
|
|
|
|
|
|
|
|
|
|
<subsection name="Vetoes"> |
|
|
|
<p> |
|
|
|
A valid, binding veto cannot be overruled. If a veto is cast, it must be |
|
|
|
accompanied by a valid reason explaining the reasons for the veto. The |
|
|
|
validity of a veto, if challenged, can be confirmed by anyone who has |
|
|
|
accompanied by a valid reason explaining the reasons for the veto. The |
|
|
|
validity of a veto, if challenged, can be confirmed by anyone who has |
|
|
|
a binding vote. This does not necessarily signify agreement with the |
|
|
|
veto - merely that the veto is valid. |
|
|
|
veto - merely that the veto is valid. |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
<p> |
|
|
|
If you disagree with a valid veto, you must lobby the person casting |
|
|
|
the veto to withdraw their veto. If a veto is not withdrawn, the action |
|
|
|
If you disagree with a valid veto, you must lobby the person casting |
|
|
|
the veto to withdraw their veto. If a veto is not withdrawn, the action |
|
|
|
that has been vetoed must be reversed in a timely manner. |
|
|
|
</p> |
|
|
|
</subsection> |
|
|
|
|
|
|
|
|
|
|
|
<subsection name="Actions"> |
|
|
|
<p> |
|
|
|
This section describes the various actions which are undertaken within |
|
|
|
the project, the corresponding approval required for that action and |
|
|
|
those who have binding votes over the action. |
|
|
|
</p> |
|
|
|
|
|
|
|
|
|
|
|
<table> |
|
|
|
<tr> |
|
|
|
<th>Action</th> |
|
|
@@ -339,7 +339,7 @@ |
|
|
|
content, etc. |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
Lazy approval and then lazy consensus. |
|
|
|
Lazy approval and then lazy consensus. |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
Active committers. |
|
|
@@ -375,13 +375,16 @@ |
|
|
|
<tr> |
|
|
|
<td><strong>Adoption of New Codebase</strong></td> |
|
|
|
<td> |
|
|
|
When the codebase for an existing, released product is to be |
|
|
|
replaced with an alternative codebase. Alternative codebases |
|
|
|
may be developed in the project's source code repository according |
|
|
|
to the |
|
|
|
<a href="http://incubator.apache.org/rules-for-revolutionaries.html"> |
|
|
|
Rules for Revolutionaries</a>. If such a vote fails to gain approval, |
|
|
|
the existing code base will continue. |
|
|
|
<p> |
|
|
|
When the codebase for an existing, released product is to be |
|
|
|
replaced with an alternative codebase. If such a vote fails to |
|
|
|
gain approval, the existing code base will continue. |
|
|
|
</p> |
|
|
|
|
|
|
|
<p> |
|
|
|
This also covers the creation of new sub-projects |
|
|
|
within the project |
|
|
|
</p> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
2/3 majority |
|
|
@@ -418,14 +421,14 @@ |
|
|
|
<td><strong>Committer Removal</strong></td> |
|
|
|
<td> |
|
|
|
<p>When removal of commit privileges is sought.</p> |
|
|
|
<p><b>Note: </b> Such actions will also be referred to the ASF |
|
|
|
<p><b>Note: </b> Such actions will also be referred to the ASF |
|
|
|
board by the PMC chair</p> |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
Consensus |
|
|
|
</td> |
|
|
|
<td> |
|
|
|
Active PMC members (excluding the committer in question if a |
|
|
|
Active PMC members (excluding the committer in question if a |
|
|
|
member of the PMC). |
|
|
|
</td> |
|
|
|
</tr> |
|
|
@@ -433,7 +436,7 @@ |
|
|
|
<td><strong>PMC Member Removal</strong></td> |
|
|
|
<td> |
|
|
|
<p>When removal of a PMC member is sought.</p> |
|
|
|
<p><b>Note: </b> Such actions will also be referred to the |
|
|
|
<p><b>Note: </b> Such actions will also be referred to the |
|
|
|
ASF board by the PMC chair</p> |
|
|
|
</td> |
|
|
|
<td> |
|
|
@@ -443,12 +446,12 @@ |
|
|
|
Active PMC members (excluding the member in question). |
|
|
|
</td> |
|
|
|
</tr> |
|
|
|
</table> |
|
|
|
</table> |
|
|
|
</subsection> |
|
|
|
<subsection name="Voting Timeframes"> |
|
|
|
<p> |
|
|
|
Votes are open for a period of 1 week to allow all active voters |
|
|
|
time to consider the vote. Votes relating to code changes are not |
|
|
|
Votes are open for a period of 1 week to allow all active voters |
|
|
|
time to consider the vote. Votes relating to code changes are not |
|
|
|
subject to a strict timetable but should be made as timely as possible. |
|
|
|
</p> |
|
|
|
</subsection> |
|
|
|