|
- <?xml version="1.0"?>
- <document>
-
- <properties>
- <title>Apache Ant Project Bylaws</title>
- </properties>
-
- <body>
- <section name="Apache Ant Project Bylaws">
- <p>
- This document defines the bylaws under which the Apache Ant project
- operates. It defines the 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>
- 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, 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>
-
- </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
- within the project. The roles are defined in the the following sections
- </p>
-
- <ul>
- <li><a href="#Users">Users</a></li>
- <li><a href="#Developers">Developers</a></li>
- <li><a href="#Committers">Committers</a></li>
- <li><a href="#Project Management Committee">
- 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
- their development efforts from the user's perspective.
- </p>
-
- <p>
- Users contribute to the Apache projects by providing feedback to
- developers in the 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
- 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
- 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 four months. An emeritus committer may request
- reinstatement of commit access fromt he PMC. Such reinstatement is
- subject to lazy consensus of active PMC members. 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
- Agreement (CLA) on file with the Apache Software Foundation. There is 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 contibution to the project may be
- invited to become a member of the PMC.
- </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
- of the Apache Ant codebase. The responsibilites of the PMC include
- </p>
-
- <ul>
- <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
- repository, mailing lists, websites.
- </li>
- <li>Speaking on behalf of the project.
- </li>
- <li>Resolving license disputes regarding products of the project
- </li>
- <li>Nominating new PMC members and committers
- </li>
- <li>Maintaining these bylaws and other guidelines of the project
- </li>
- </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 four 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.
- Ultimately, however, it is the board's responsibility who 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
- 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 indicated by subject line starting with [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>
- "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>
- This vote indicates a willingness for the action under
- consideration to go ahead. The voter, however will not be able
- to help.
- </td>
- </tr>
-
- <tr>
- <td><strong>-0</strong></td>
- <td>
- This vote indicates that the voter does not, in general, agree with
- the proposed action but is not concerned enough to prevent the
- 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 vetos must
- contain an explanation of why the veto is appropriate. Vetos with
- no explanation are void.
- </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 Committers 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.
- </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>
- For this to pass, all voters with binding votes must vote and there
- can be no binding vetos (-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>
- Lazy consensus requires 3 binding +1 votes and no binding vetos.
- </td>
- </tr>
-
- <tr>
- <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>
- An action with lazy approval is implicitly allowed unless a -1 vote
- is received, at which time, depending on the type of action, either
- Lazy Majority or Lazy consensus approval must be obtained.
- </td>
- </tr>
- </table>
- </subsection>
-
- <subsection name="Vetos">
- <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 challeneged, 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. If you disagree with a 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 bust 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 correspnding approval required for that action and
- those who have binding votes over the action.
- </p>
-
- <table>
- <tr>
- <th>Action</th>
- <th>Description</th>
- <th>Approval</th>
- <th>Binding Votes</th>
- </tr>
- <tr>
- <td><strong>Codebase Change</strong></td>
- <td>
- A change made to the main codebase of the project and committed
- by a committer. This includes source code, documentation, website
- content, etc.
- </td>
- <td>
- Lazy Approval and then Lazy consensus.
- </td>
- <td>
- Active committers.
- </td>
- </tr>
- <tr>
- <td><strong>Release Plan</strong></td>
- <td>
- Defines the timetable and actions for a release. The plan also
- nominates a Release Manager.
- </td>
- <td>
- Lazy Majority
- </td>
- <td>
- Active committers
- </td>
- </tr>
- <tr>
- <td><strong>Product Release</strong></td>
- <td>
- When a release of one of the project's products is ready, a vote is
- required to accept the release as an official release of the
- Project.
- </td>
- <td>
- Lazy Majority
- </td>
- <td>
- Active PMC members
- </td>
- </tr>
- <tr>
- <td><strong>New Committer</strong></td>
- <td>
- When a new committer is proposed for the project
- </td>
- <td>
- Lazy consensus
- </td>
- <td>
- Active PMC members
- </td>
- </tr>
- <tr>
- <td><strong>New PMC Member</strong></td>
- <td>
- When a committer is proposed for the PMC
- </td>
- <td>
- Lazy consensus
- </td>
- <td>
- Active PMC members
- </td>
- </tr>
- </table>
- </subsection>
- </section>
- </body>
- </document>
|