<!DOCTYPE html>

<html lang="en">
<head>
  <meta name="generator" content=
  "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
  <meta charset="utf-8">

  <title>Apache Impala</title>
  <meta name="keywords" content=
  "hadoop, apache, impala, sql, mpp, bi, big data, open source">
  <meta name="description" content=
  "Apache Impala is a modern, open source, distributed SQL query engine for Apache Hadoop.">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <!-- Le styles -->
  <link href="css/bootstrap.css" rel="stylesheet" type="text/css">
  <style type="text/css">
body {
        padding-top: 20px;
        padding-bottom: 40px;
      }

      /* Custom container */
      .container-narrow {
        margin: 0 auto;
        max-width: 700px;
      }
      .container-narrow > hr {
        margin: 30px 0;
      }

      /* Main marketing message and sign up button */
      .jumbotron {
        margin: 60px 0;
        text-align: center;
      }
      .jumbotron h1 {
        font-size: 72px;
        line-height: 1;
      }
      .jumbotron .btn {
        font-size: 21px;
        padding: 14px 24px;
      }

      /* Supporting marketing content */
      .marketing {
        margin: 60px 0;
      }
      .marketing p + h4 {
        margin-top: 28px;
      }
           /* Customize the navbar links to be fill the entire space of the .navbar */
      .navbar .navbar-inner {
        padding: 0;
      }
      .navbar .nav {
        margin: 0;
        display: table;
        width: 100%;
      }
      .navbar .nav li {
        display: table-cell;
        width: 1%;
        float: none;
      }
      .navbar .nav li a {
        font-weight: bold;
        text-align: center;
        border-left: 1px solid rgba(255,255,255,.75);
        border-right: 1px solid rgba(0,0,0,.1);
      }
      .navbar .nav li:first-child a {
        border-left: 0;
        border-radius: 3px 0 0 3px;
      }
      .navbar .nav li:last-child a {
        border-right: 0;
        border-radius: 0 3px 3px 0;
      }
  </style>
  <link href="css/bootstrap-responsive.css" rel="stylesheet" type="text/css">
  <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
  <!--[if lt IE 9]>
      <script src="js/html5shiv.js"></script>
    <![endif]-->

  <script src="js/jquery-3.5.1.min.js" type="text/javascript"></script>
  <script src="js/bootstrap-3.3.5.min.js" type="text/javascript"></script>
</head>

<body>
  <div class="container">
    <div class="masthead">
      <h3 class="muted">Apache Impala</h3>

      <div class="navbar">
        <div class="navbar-inner">
          <div class="container">
            <ul class="nav">
              <li><a href="index.html">Home</a></li>
              <li><a href="downloads.html">Downloads</a></li>
              <li><a href="overview.html">Overview</a></li>

              <li><a href="https://cwiki.apache.org/confluence/display/IMPALA/Contributing+to+Impala">Contribute</a></li>
              <li class="dropdown">
                <a href='#' class="dropdown-toggle" data-toggle="dropdown" role="button">
                  Source code
                </a>
                <ul class="dropdown-menu">
                  <li><a href="https://git-wip-us.apache.org/repos/asf/impala.git">Official source</a></li>
                  <li><a href="https://github.com/apache/impala">GitHub mirror</a></li>
                </ul>
              </li>
              <li><a href="community.html">Community</a></li>
              <li><a href="impala-docs.html">Documentation</a></li>
            </ul>
          </div>
        </div>

  <div class="row-fluid">
    <div class="span12">
      <h1>Apache Impala Project Bylaws</h1><a name="N1000D"></a><a name=
      "Introduction"></a>

      <h2 class="h3">Introduction</h2>

      <div class="section">
        <p>This document defines the bylaws under which the Apache Impala
        project operates. It defines the roles and responsibilities of the project, who
        may vote, how voting works, how conflicts are resolved, etc.</p>

        <p>Impala is a project of the <a href="http://www.apache.org/foundation/">Apache
        Software Foundation</a>. The foundation holds the trademark on the name "Impala"
        and copyright on Apache code including the code in the Impala codebase. The
        <a href="http://www.apache.org/foundation/faq.html">foundation FAQ</a> explains
        the operation and background of the foundation.</p>

        <p>Impala 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
        <a href="https://www.apache.org/foundation/how-it-works.html#management">"How the
        ASF works"</a> for more information on how Apache projects operate.</p>
      </div><a name="N10028"></a><a name="Roles+and+Responsibilities"></a>

      <h2 class="h3">Roles and Responsibilities</h2>

      <div class="section">
        <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>
            <strong>Users</strong>

            <p>The most important participants in the project are people who use our
            software.</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>
          </li>

          <li>
            <strong>Contributors</strong>

            <p>All of the volunteers who are contributing time, code, documentation, or
            resources to the Impala Project. A contributor 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>
          </li>

          <li>
            <strong>Committers</strong>

            <p>The project's Committers are responsible for the project's technical
            management. Committers have write access to the project's version control
            repositories. Committers may cast binding votes on any technical
            discussion.</p>

            <p>Committer access is by invitation only and must be approved by consensus
            approval of the PMC members.</p>

            <p>Significant, pervasive features may be developed in a speculative branch
            of the repository. The PMC may grant commit rights on the branch to its
            consistent contributors for the duration of the initiative. Branch committers
            are responsible for shepherding their feature into an active release and do
            not cast binding votes or vetoes in the project.</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, testing, etc.</p>
          </li>

          <li>
            <strong>Release Manager</strong>

            <p>A Release Manager (RM) is a committer who volunteers to produce a Release
            Candidate. The RM shall publish a Release Plan on the <em>dev@</em> list
            stating the branch from which they intend to make a Release Candidate, at
            least one week before they do so. The RM is responsible for building
            consensus around the content of the Release Candidate, in order to achieve a
            successful Product Release vote.</p>
          </li>

          <li>
            <strong>Project Management Committee</strong>

            <p>The Project Management Committee (PMC) is responsible to the board and the
            ASF for the management and oversight of the Apache Impala codebase. The
            responsibilities of the PMC include</p>

            <ul>
              <li>Deciding what is distributed as products of the Apache Impala 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, and 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
            consensus approval of PMC members.</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 Impala) and
            has primary responsibility to the board for the management of the projects
            within the scope of the Impala PMC. The chair reports to the board quarterly
            on developments within the Impala project.</p>

            <p>The chair of the PMC is rotated annually. When the chair is rotated or if
            the current chair of the PMC resigns, the PMC votes to recommend a new chair
            using Single Transferable Vote (STV) voting. See <a href=
            "http://wiki.apache.org/general/BoardVoting">BoardVoting</a> for specifics.
            The decision must be ratified by the Apache board.</p>
          </li>
        </ul>
      </div><a name="N10094"></a><a name="Decision+Making"></a>

      <h2 class="h3">Decision Making</h2>

      <div class="section">
        <p>Within the Impala 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 "consensus approval" approval. This section defines how voting is
        performed, the types of approvals, and which types of decision require which type
        of approval.</p>

        <ul>
          <li>
            <strong>Voting</strong>

            <p>Decisions regarding the project are made by votes on the primary project
            development mailing list (dev@impala.apache.org). Where necessary,
            PMC voting may take place on the private Impala PMC mailing list. Votes are
            clearly 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 flavors</p>

            <ul>
              <li><strong>+1</strong> "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"</li>

              <li><strong>+0</strong> This vote indicates a willingness for the action
              under consideration to go ahead. The voter, however will not be able to
              help.</li>

              <li><strong>-0</strong> 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.</li>

              <li><strong>-1</strong> 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.</li>
            </ul>

            <p>Patches are reviewed in the code review tool, where the vote flavors
            are:</p>

            <ul>
              <li><strong>+2</strong> "I am confident in the change and this can be
              committed without further review after addressing the remaining points I
              have made."</li>

              <li><strong>+1</strong> "I am OK with this being committed after the
              remaining points in my comment have been addressed and someone else votes
              +2."</li>

              <li><strong>-1</strong> "I oppose this being committed."</li>
            </ul>

            <p>All participants in the Impala project are encouraged to show their
            agreement with or against a particular action by voting. For technical
            decisions, only the votes of committers are binding. Non binding votes are
            still useful for those with binding votes to understand the perception of an
            action in the wider Impala community. For PMC decisions, only the votes of PMC
            members are binding.</p>
          </li>

          <li>
            <strong>Approvals</strong>

            <p>These are the types of approvals that can be sought. Different actions
            require different types of approvals</p>

            <ul>
              <li><strong>Consensus Approval -</strong> Consensus approval requires 3
              binding +1 votes and no binding vetoes.</li>

              <li><strong>Lazy Consensus -</strong> Lazy consensus requires no -1 votes
              ('silence gives assent').</li>

              <li><strong>Lazy Majority -</strong> A lazy majority vote requires 3
              binding +1 votes and more binding +1 votes than -1 votes.</li>

              <li><strong>Lazy 2/3 Majority -</strong> Lazy 2/3 majority votes requires
              at least 3 votes and twice as many +1 votes as -1 votes.</li>
            </ul>
          </li>

          <li>
            <strong>Vetoes</strong>

            <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, any action that has
            been vetoed must be reversed in a timely manner.</p>
          </li>

          <li>
            <strong>Actions</strong>

            <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>

            <ul>
              <li>
                <strong>Code Change</strong>

                <p>A change made to a codebase of the project and committed by a
                committer. This includes source code, documentation, website content,
                etc.</p>

                <p>At least one +2 from a committer and no -1 from any committer.</p>
              </li>

              <li>
                <strong>Product Release</strong>

                <p>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.</p>

                <p>Lazy Majority of PMC members</p>
              </li>

              <li>
                <strong>Branch Creation or Deletion</strong>

                <p>Speculative branches may be used for significant, pervasive features,
                or release managers may create branches to test and stabilize release
                candidates.</p>

                <p>Lazy consensus of PMC members</p>
              </li>

              <li>
                <strong>New Branch Committer</strong>

                <p>When a branch committer is proposed for the PMC</p>

                <p>Lazy consensus of PMC members</p>
              </li>

              <li>
                <strong>New Committer</strong>

                <p>When a new committer is proposed for the project</p>

                <p>Consensus approval of PMC members</p>
              </li>

              <li>
                <strong>New PMC Member</strong>

                <p>When a committer is proposed for the PMC</p>

                <p>Consensus approval of PMC members</p>
              </li>

              <li>
                <strong>Branch Committer Removal</strong>

                <p>When removal of commit privileges is sought <strong>or</strong> when
                the branch is merged to the mainline</p>

                <p>Lazy 2/3 majority of PMC members</p>
              </li>

              <li>
                <strong>Committer Removal</strong>

                <p>When removal of commit privileges is sought. Note: Such actions will
                also be referred to the ASF board by the PMC chair</p>

                <p>Lazy 2/3 majority of PMC members (excluding the committer in question
                if a member of the PMC).</p>
              </li>

              <li>
                <strong>PMC Member Removal</strong>

                <p>When removal of a PMC member is sought. Note: Such actions require
                approval from the ASF board of directors.</p>

                <p>Lazy 2/3 majority of PMC members (excluding the PMC member in
                question)</p>
              </li>

              <li>
                <strong>Modifying Bylaws</strong>

                <p>Modifying this document.</p>

                <p>Lazy majority of PMC members</p>
              </li>
            </ul>
          </li>

          <li>
            <strong>Voting Timeframes</strong>

            <p>Votes are open for a period of 72 hours (excluding weekends in the timezone
            of the person who called the vote) to allow all 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>
          </li>
        </ul>
      </div>
    </div>
  </div><!--+
    |end content
    +-->

  <div class="navbar">
        <div class="navbar-inner">
          <div class="container">

            <ul class="nav">
              <li><a href="https://www.apache.org/licenses/">License</a></li>
              <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
              <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
              <li><a href="https://www.apache.org/security/">Security</a></li>
              <li><a href="https://www.apache.org/">Apache Software Foundation</a></li>
            </ul>
          </div>
        </div>
      </div>

  <div class="footer">
    <center>
      <a href="http://www.apache.org/events/current-event.html">
        <img src="http://www.apache.org/events/current-event-234x60.png"/>
      </a>
    </center>
    <p>Apache Impala, Impala, Apache, the Apache feather logo, and the Apache Impala
    project logo are either registered trademarks or trademarks of The Apache Software
    Foundation in the United States and other countries.
    </p>
  </div>
      </div>
    </div>
  </div>
</body>
</html>
