

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
        <html lang="en">
    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
    <head>
      <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Apache Ant - Project Bylaws</title>
        <link type="text/css" href="./page.css" rel="stylesheet">
          <meta name="author" content="Apache Ant PMC">
  <meta name="email" content="">
      </head>

    <body>
      <p class="navpath">
        <script src="./breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
      </p>

      <div class="logobar">
        <table width="100%" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td align="left"><img border="0" alt="Apache Ant site" src="./images/group-logo.gif"></td>
            <td align="center" width="100%"><img alt="Apache Ant logo" border="0" src="./images/project-logo.gif"></td>
            <td align="right">
              <form target="_blank" onsubmit="q.value = query.value + ' site:ant.apache.org'" action="http://www.google.com/search" method="get">
                <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
                  <tr>
                    <td colspan="3"><img height="10" width="1" alt="" src="./images/spacer.gif"></td>
                  </tr>
                  <tr>
                    <td><img height="1" width="1" alt="" src="./images/spacer.gif"></td>
                    <td nowrap="nowrap" class="searchcaption">
                      <input name="q" type="hidden">
                      <input size="15" id="query" type="text">
                      <img height="1" width="5" alt="" src="./images/spacer.gif">
                      <input name="Search" value="Search" type="submit">
                      <br>
                      the Apache Ant site
                    </td>
                    <td><img height="1" width="1" alt="" src="./images/spacer.gif"></td>
                  </tr>
                  <tr>
                    <td><img alt="" border="0" height="10" width="9" src="./images/search-left.gif"></td>
                    <td><img height="1" width="1" alt="" src="./images/spacer.gif"></td>
                    <td><img alt="" border="0" height="10" width="9" src="./images/search-right.gif"></td>
                  </tr>
                </table>
              </form>
            </td>
          </tr>
        </table>
      </div>

                  <div class="tab">
              <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
                <tr>
                                  <td width="8"><img alt="" height="5" width="8" src="./images/spacer.gif"></td><td valign="bottom">
                      <table summary="selected tab" style="height: 1.5em" border="0" cellpadding="0" cellspacing="0">
                        <tr>
                        <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="./images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>Home</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="./images/tabSel-right.gif"></td>
                        </tr>
                      </table>
                    </td>
                                    <td width="5"><img alt="" height="8" width="8" src="./images/spacer.gif"></td><td valign="bottom">
                      <table summary="non selected tab" style="height: 1.4em" border="0" cellpadding="0" cellspacing="0">
                        <tr>
                          <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="./images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="./projects/index.html"><font size="2" face="Arial, Helvetica, Sans-serif">Projects</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="./images/tab-right.gif"></td>
                        </tr>
                      </table>
                    </td>
                            </tr>
              </table>
            </div>

      <div class="bluebar"></div>
                    
  <div class="menucontainer">

    <div class="menu">
      <ul>
              <li class="menuheader">Apache Ant
          <ul>
                            <li>
                                    <a href="./index.html">Welcome</a>
                                </li>
                            <li>
                                    <a href="./license.html">License</a>
                                </li>
                            <li>
                                    <a href="./antnews.html">News</a>
                                </li>
                      </ul>
        </li>
              <li class="menuheader">Documentation
          <ul>
                            <li>
                                    <a href="./manual/index.html">Manual</a>
                                </li>
                            <li>
                                    <a href="./projects.html">Related Projects</a>
                                </li>
                            <li>
                                    <a href="./external.html">External Tools and Tasks</a>
                                </li>
                            <li>
                                    <a href="./resources.html">Resources</a>
                                </li>
                            <li>
                                    <a href="./faq.html">Frequently Asked Questions</a>
                                </li>
                            <li>
                                    <a href="http://wiki.apache.org/ant/FrontPage">Wiki</a>
                                </li>
                            <li>
                                    <a href="./problems.html">Having Problems?</a>
                                </li>
                      </ul>
        </li>
              <li class="menuheader">Download
          <ul>
                            <li>
                                    <a href="http://ant.apache.org/bindownload.cgi">Binary Distributions</a>
                                </li>
                            <li>
                                    <a href="http://ant.apache.org/srcdownload.cgi">Source Distributions</a>
                                </li>
                      </ul>
        </li>
              <li class="menuheader">Contributing
          <ul>
                            <li>
                                    <a href="./mail.html">Mailing Lists</a>
                                </li>
                            <li>
                                    <a href="./cvs.html">CVS Repositories</a>
                                </li>
                            <li>
                                    <a href="http://issues.apache.org/bugzilla/enter_bug.cgi?product=Ant">Bug Database</a>
                                </li>
                            <li>
                                    <a href="http://issues.apache.org/bugzilla/enter_bug.cgi?product=Ant&amp;bug_severity=enhancement">Enhancement Requests</a>
                                </li>
                            <li>
                                    <a href="http://www.apache.org/foundation/contributing.html">Donations</a>
                                </li>
                      </ul>
        </li>
              <li class="menuheader">Project Management
          <ul>
                            <li>
                                    <a href="./contributors.html">Contributors</a>
                                </li>
                            <li>
                                    <a href="./mission.html">Apache Ant Mission</a>
                                </li>
                            <li>
                              <span class="sel">Project Bylaws</span>
                              </li>
                            <li>
                                    <a href="./legal.html">Legal</a>
                                </li>
                      </ul>
        </li>
            </ul>
    </div>
    <img style="float: left" height="10" width="10" border="0" alt="" src="./images/menu-left.gif">
    <img style="float: right" height="10" width="10" border="0" alt="" src="./images/menu-right.gif">
  </div>
      <div class="lightbluebar">&nbsp;</div>
  <div class="main">
  <div class="content">
    <h1 class="title">Project Bylaws</h1>
            <h3 class="section">
      <a name="Apache Ant Project Bylaws"></a>
      Apache Ant Project Bylaws
    </h3>
                        <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,
      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 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>
                        <h3 class="section">
      <a name="Roles and Responsibilities"></a>
      Roles and Responsibilities
    </h3>
                        <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 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>
                                      <h4 class="subsection">
        <a name="Users"></a>
        Users
      </h4>
                        <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 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>
                                                    <h4 class="subsection">
        <a name="Developers"></a>
        Developers
      </h4>
                        <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>
                                                    <h4 class="subsection">
        <a name="Committers"></a>
        Committers
      </h4>
                        <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 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.
      </p>
                                <p>
        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 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>
                                                    <h4 class="subsection">
        <a name="Project Management Committee"></a>
        Project Management Committee
      </h4>
                        <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 responsibilities 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 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 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>
                                      <h3 class="section">
      <a name="Decision Making"></a>
      Decision Making
    </h3>
                        <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>
                                      <h4 class="subsection">
        <a name="Voting"></a>
        Voting
      </h4>
                        <p>
        Decisions regarding the project are made by votes on the primary project
        development mailing list (dev@ant.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 class="ForrestTable" cellspacing="1" cellpadding="4">
              <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>+1</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            "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 colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>+0</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            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 colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>-0</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            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 colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>-1</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            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,
        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>
                                                    <h4 class="subsection">
        <a name="Approvals"></a>
        Approvals
      </h4>
                        <p>
        These are the types of approvals that can be sought. Different actions
        require different types of approvals
      </p>
                                      <table class="ForrestTable" cellspacing="1" cellpadding="4">
              <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>Consensus</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            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 colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>Lazy Consensus</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Lazy consensus requires 3 binding +1 votes and no binding vetoes.
          
      </td>
      </tr>
                  <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>Lazy Majority</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            A lazy majority vote requires 3 binding +1 votes and more binding +1
            votes that -1 votes.
          
      </td>
      </tr>
                  <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>Lazy Approval</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            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>
                  <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>2/3 Majority</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            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>
                                                    <h4 class="subsection">
        <a name="Vetoes"></a>
        Vetoes
      </h4>
                        <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
        a binding vote. This does not necessarily  signify agreement with the
        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
        that has been vetoed must be reversed in a timely manner.
      </p>
                                                    <h4 class="subsection">
        <a name="Actions"></a>
        Actions
      </h4>
                        <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 class="ForrestTable" cellspacing="1" cellpadding="4">
              <tr>
                      <th colspan="1" rowspan="1"
      valign="top" align="left">
          Action
      </th>
                          <th colspan="1" rowspan="1"
      valign="top" align="left">
          Description
      </th>
                          <th colspan="1" rowspan="1"
      valign="top" align="left">
          Approval
      </th>
                          <th colspan="1" rowspan="1"
      valign="top" align="left">
          Binding Votes
      </th>
      </tr>
                  <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>Code Change</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            A change made to a codebase of the project and committed
            by a committer. This includes source code, documentation, website
            content, etc.
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Lazy approval and then lazy consensus.
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Active committers.
          
      </td>
      </tr>
                  <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>Release Plan</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Defines the timetable and actions for a release. The plan also
            nominates a Release Manager.
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Lazy majority
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Active committers
          
      </td>
      </tr>
                  <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>Product Release</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            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 colspan="1" rowspan="1"
      valign="top" align="left">
          
            Lazy Majority
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Active PMC members
          
      </td>
      </tr>
                  <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>Adoption of New Codebase</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            <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 colspan="1" rowspan="1"
      valign="top" align="left">
          
            2/3 majority
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Active committers
          
      </td>
      </tr>
                  <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>New Committer</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            When a new committer is proposed for the project
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Lazy consensus
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Active PMC members
          
      </td>
      </tr>
                  <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>New PMC Member</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            When a committer is proposed for the PMC
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Lazy consensus
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Active PMC members
          
      </td>
      </tr>
                  <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>Committer Removal</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            <p>When removal of commit privileges is sought.</p>
            <p><b>Note: </b> Such actions will also be referred to the ASF
            board by the PMC chair</p>
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Consensus
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Active PMC members (excluding the committer in question if a
            member of the PMC).
          
      </td>
      </tr>
                  <tr>
                      <td colspan="1" rowspan="1"
      valign="top" align="left">
          <strong>PMC Member Removal</strong>
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            <p>When removal of a PMC member is sought.</p>
            <p><b>Note: </b> Such actions will also be referred to the
            ASF board by the PMC chair</p>
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Consensus
          
      </td>
                          <td colspan="1" rowspan="1"
      valign="top" align="left">
          
            Active PMC members (excluding the member in question).
          
      </td>
      </tr>
        </table>
                                                    <h4 class="subsection">
        <a name="Voting Timeframes"></a>
        Voting Timeframes
      </h4>
                        <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
        subject to a strict timetable but should be made as timely as possible.
      </p>
                              
    </div>
  </div>

        <p class="copyright">
        Copyright &copy; 2000-2005&nbsp;The Apache Software Foundation. All rights reserved.
        <script type="text/javascript" language="JavaScript"><!--
                document.write(" - "+"Last Published: " + document.lastModified);
              //  -->
        </script>
      </p>
    </body>
  </html>










