<!DOCTYPE html>
<html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">

    <title>Project By-laws</title>

    <!-- Bootstrap core CSS -->
    <link href="/assets/css/bootstrap.min.css" rel="stylesheet">
    <!-- Bootstrap theme -->
    <link href="/assets/css/bootstrap-theme.min.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link rel="stylesheet" href="http://fortawesome.github.io/Font-Awesome/assets/font-awesome/css/font-awesome.css">
    <link href="/css/style.css" rel="stylesheet">
    <link href="/assets/css/owl.theme.css" rel="stylesheet">
    <link href="/assets/css/owl.carousel.css" rel="stylesheet">
    <script type="text/javascript" src="/assets/js/jquery.min.js"></script>
    <script type="text/javascript" src="/assets/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="/assets/js/owl.carousel.min.js"></script>
    <script type="text/javascript" src="/assets/js/storm.js"></script>
    <!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
    <!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
    
    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>


  <body>
    <header>
  <div class="container-fluid">
     <div class="row">
          <div class="col-md-5">
            <a href="/index.html"><img src="/images/logo.png" class="logo" /></a>
          </div>
          <div class="col-md-5">
            
          </div>
          <div class="col-md-2">
            <a href="/downloads.html" class="btn-std btn-block btn-download">Download</a>
          </div>
        </div>
    </div>
</header>
<!--Header End-->
<!--Navigation Begin-->
<div class="navbar" role="banner">
  <div class="container-fluid">
      <div class="navbar-header">
          <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
        </div>
        <nav class="collapse navbar-collapse bs-navbar-collapse" role="navigation">
          <ul class="nav navbar-nav">
              <li><a href="/index.html" id="home">Home</a></li>
                <li><a href="/getting-help.html" id="getting-help">Getting Help</a></li>
                <li><a href="/about/integrates.html" id="project-info">Project Information</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="documentation">Documentation <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                      
                        
                          <li><a href="/releases/2.4.0/index.html">2.4.0</a></li>
                        
                      
                        
                          <li><a href="/releases/2.3.0/index.html">2.3.0</a></li>
                        
                      
                        
                          <li><a href="/releases/2.2.1/index.html">2.2.1</a></li>
                        
                      
                        
                          <li><a href="/releases/2.2.0/index.html">2.2.0</a></li>
                        
                      
                        
                          <li><a href="/releases/2.1.1/index.html">2.1.1</a></li>
                        
                      
                        
                          <li><a href="/releases/2.1.0/index.html">2.1.0</a></li>
                        
                      
                        
                          <li><a href="/releases/2.0.0/index.html">2.0.0</a></li>
                        
                      
                        
                          <li><a href="/releases/1.2.4/index.html">1.2.4</a></li>
                        
                      
                        
                          <li><a href="/releases/1.2.3/index.html">1.2.3</a></li>
                        
                      
                    </ul>
                </li>
                <li><a href="/talksAndVideos.html">Talks and Slideshows</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="contribute">Community <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="/contribute/Contributing-to-Storm.html">Contributing</a></li>
                        <li><a href="/contribute/People.html">People</a></li>
                        <li><a href="/contribute/BYLAWS.html">ByLaws</a></li>
                        <li><a href="/Powered-By.html">PoweredBy</a></li>
                    </ul>
                </li>
                <li><a href="/2021/10/14/storm211-released.html" id="news">News</a></li>
            </ul>
        </nav>
    </div>
</div>



    <div class="container-fluid">
    <h1 class="page-title">Project By-laws</h1>
          <div class="row">
           	<div class="col-md-12">
	             <!-- Documentation -->

<p class="post-meta"></p>

<div class="documentation-content"><h2 id="roles-and-responsibilities">Roles and Responsibilities</h2>

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

<h3 id="users">Users:</h3>

<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&#39;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>

<h3 id="contributors">Contributors:</h3>

<p>Contributors are all of the volunteers who are contributing time, code, documentation, or resources to the Storm 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>

<h3 id="committers">Committers:</h3>

<p>The project&#39;s Committers are responsible for the project&#39;s technical management. Committers have access to all project source repositories. Committers may cast binding votes on any technical discussion regarding storm.</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 approval of active PMC members.</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="https://www.apache.org/dev/committers.html">Committers&#39; 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>

<h3 id="project-management-committee-pmc">Project Management Committee(PMC):</h3>

<p>The PMC is responsible to the board and the ASF for the management and oversight of the Apache Storm codebase. The responsibilities of the PMC include:</p>

<ul>
<li>Deciding what is distributed as products of the Apache Storm project. In particular all releases must be approved by the PMC.</li>
<li>Maintaining the project&#39;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 consensus approval of active PMC members. A PMC member is considered &quot;emeritus&quot; 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 consensus approval of the active 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 Storm) and has primary responsibility to the board for the management of the projects within the scope of the Storm PMC. The chair reports to the board quarterly on developments within the Storm 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">http://wiki.apache.org/general/BoardVoting</a> for specifics. The decision must be ratified by the Apache board.</p>

<h2 id="voting">Voting</h2>

<p>Decisions regarding the project are made by votes on the primary project development mailing list (<a href="mailto:dev@storm.apache.org">dev@storm.apache.org</a>). Where necessary, PMC voting may take place on the private Storm 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>

<table><thead>
<tr>
<th>Vote</th>
<th>Meaning</th>
</tr>
</thead><tbody>
<tr>
<td>+1</td>
<td>&#39;Yes,&#39; &#39;Agree,&#39; or &#39;the action should be performed.&#39;</td>
</tr>
<tr>
<td>+0</td>
<td>Neutral about the proposed action.</td>
</tr>
<tr>
<td>-0</td>
<td>Mildly negative, but not enough so to want to block it.</td>
</tr>
<tr>
<td>-1</td>
<td>This is a negative vote. On issues where consensus is required, this vote counts as a veto. 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>
</tbody></table>

<p>All participants in the Storm 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 Storm community. For PMC decisions, only the votes of active PMC members are binding.</p>

<p>Voting can also be applied to changes already made to the Storm codebase. These typically take the form of a veto (-1) in reply to the commit message sent when the commit is made. Note that this should be a rare occurrence. All efforts should be made to discuss issues when they are still patches before the code is committed.</p>

<p>Only active (i.e. non-emeritus) Committers and PMC members have binding votes.</p>

<h2 id="approvals">Approvals</h2>

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

<table><thead>
<tr>
<th>Approval Type</th>
<th>Criteria</th>
</tr>
</thead><tbody>
<tr>
<td>Consensus Approval</td>
<td>Consensus approval requires 3 binding +1 votes and no binding vetoes.</td>
</tr>
<tr>
<td>Majority Approval</td>
<td>Majority approval requires at least 3 binding +1 votes and more +1 votes than -1 votes.</td>
</tr>
<tr>
<td>Lazy Consensus</td>
<td>Lazy consensus requires no -1 votes (&#39;silence gives assent&#39;).</td>
</tr>
<tr>
<td>2/3 Majority</td>
<td>2/3 majority votes requires at least 3 votes and twice as many +1 votes as -1 votes.</td>
</tr>
</tbody></table>

<h3 id="vetoes">Vetoes</h3>

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

<h2 id="actions">Actions</h2>

<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><thead>
<tr>
<th>Actions</th>
<th>Description</th>
<th>Approval</th>
<th>Binding Votes</th>
<th>Minimum Length</th>
<th>Mailing List</th>
</tr>
</thead><tbody>
<tr>
<td>Code Change</td>
<td>A change made to a source code of the project and committed by a Committer.</td>
<td>A minimum of one +1 from a Committer other than the one who authored the patch, and no -1s. The code can be committed after the first +1. If a -1 is received to the patch within 7 days after the patch was posted, it may be reverted immediately if it was already merged.</td>
<td>Active Committers</td>
<td>1 day from initial patch (<strong>Note:</strong> Committers should consider allowing more time for review based on the complexity and/or impact of the patch in question.)</td>
<td>JIRA or Github pull ( with notification sent to <a href="mailto:dev@storm.apache.org">dev@storm.apache.org</a>)</td>
</tr>
<tr>
<td>Non-Code Change</td>
<td>A change made to a repository of the project and committed by a Committer. This includes documentation, website content, etc., but not source code, unless only comments are being modified.</td>
<td>Lazy Consensus</td>
<td>Active Committers</td>
<td>At the discression of the Committer</td>
<td>JIRA or Github pull (with notification sent to <a href="mailto:dev@storm.apache.org">dev@storm.apache.org</a>)</td>
</tr>
<tr>
<td>Product Release</td>
<td>A vote is required to accept a proposed release as an official release of the project. Any Committer may call for a release vote at any point in time.</td>
<td>Majority Approval</td>
<td>Active PMC members</td>
<td>3 days</td>
<td><a href="mailto:dev@storm.apache.org">dev@storm.apache.org</a></td>
</tr>
<tr>
<td>Adoption of New Codebase</td>
<td>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. This also covers the creation of new sub-projects and submodules within the project as well as merging of feature branches.</td>
<td>2/3 Majority</td>
<td>Active PMC members</td>
<td>6 days</td>
<td><a href="mailto:dev@storm.apache.org">dev@storm.apache.org</a></td>
</tr>
<tr>
<td>New Committer</td>
<td>When a new Committer is proposed for the project.</td>
<td>Consensus Approval</td>
<td>Active PMC members</td>
<td>3 days</td>
<td><a href="mailto:private@storm.apache.org">private@storm.apache.org</a></td>
</tr>
<tr>
<td>New PMC Member</td>
<td>When a member is proposed for the PMC.</td>
<td>Consensus Approval</td>
<td>Active PMC members</td>
<td>3 days</td>
<td><a href="mailto:private@storm.apache.org">private@storm.apache.org</a></td>
</tr>
<tr>
<td>Emeritus PMC Member re-instatement</td>
<td>When an emeritus PMC member requests to be re-instated as an active PMC member.</td>
<td>Consensus Approval</td>
<td>Active PMC members</td>
<td>6 days</td>
<td><a href="mailto:private@storm.apache.org">private@storm.apache.org</a></td>
</tr>
<tr>
<td>Emeritus Committer re-instatement</td>
<td>When an emeritus Committer requests to be re-instated as an active Committer.</td>
<td>Consensus Approval</td>
<td>Active PMC members</td>
<td>6 days</td>
<td><a href="mailto:private@storm.apache.org">private@storm.apache.org</a></td>
</tr>
<tr>
<td>Committer Removal</td>
<td>When removal of commit privileges is sought. Note: Such actions will also be referred to the ASF board by the PMC chair.</td>
<td>2/3 Majority</td>
<td>Active PMC members (excluding the Committer in question if a member of the PMC).</td>
<td>6 Days</td>
<td><a href="mailto:private@storm.apache.org">private@storm.apache.org</a></td>
</tr>
<tr>
<td>PMC Member Removal</td>
<td>When removal of a PMC member is sought. Note: Such actions will also be referred to the ASF board by the PMC chair.</td>
<td>2/3 Majority</td>
<td>Active PMC members (excluding the member in question).</td>
<td>6 Days</td>
<td><a href="mailto:private@storm.apache.org">private@storm.apache.org</a></td>
</tr>
<tr>
<td>Modifying Bylaws</td>
<td>Modifying this document.</td>
<td>2/3 Majority</td>
<td>Active PMC members</td>
<td>6 Days</td>
<td><a href="mailto:dev@storm.apache.org">dev@storm.apache.org</a></td>
</tr>
</tbody></table>
</div>


	          </div>
	       </div>
	  </div>
<footer>
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-3">
                <div class="footer-widget">
                    <h5>Meetups</h5>
                    <ul class="latest-news">
                        
                        <li><a href="http://www.meetup.com/Apache-Storm-Apache-Kafka/">Apache Storm & Apache Kafka</a> <span class="small">(Sunnyvale, CA)</span></li>
                        
                        <li><a href="http://www.meetup.com/Apache-Storm-Kafka-Users/">Apache Storm & Kafka Users</a> <span class="small">(Seattle, WA)</span></li>
                        
                        <li><a href="http://www.meetup.com/New-York-City-Storm-User-Group/">NYC Storm User Group</a> <span class="small">(New York, NY)</span></li>
                        
                        <li><a href="http://www.meetup.com/Bay-Area-Stream-Processing">Bay Area Stream Processing</a> <span class="small">(Emeryville, CA)</span></li>
                        
                        <li><a href="http://www.meetup.com/Boston-Storm-Users/">Boston Realtime Data</a> <span class="small">(Boston, MA)</span></li>
                        
                        <li><a href="http://www.meetup.com/storm-london">London Storm User Group</a> <span class="small">(London, UK)</span></li>
                        
                        <!-- <li><a href="http://www.meetup.com/Apache-Storm-Kafka-Users/">Seatle, WA</a> <span class="small">(27 Jun 2015)</span></li> -->
                    </ul>
                </div>
            </div>
            <div class="col-md-3">
                <div class="footer-widget">
                    <h5>About Apache Storm</h5>
                    <p>Apache Storm integrates with any queueing system and any database system. Apache Storm's spout abstraction makes it easy to integrate a new queuing system. Likewise, integrating Apache Storm with database systems is easy.</p>
               </div>
            </div>
            <div class="col-md-3">
                <div class="footer-widget">
                    <h5>First Look</h5>
                    <ul class="footer-list">
                        <li><a href="/releases/current/Rationale.html">Rationale</a></li>
                        <li><a href="/releases/current/Tutorial.html">Tutorial</a></li>
                        <li><a href="/releases/current/Setting-up-development-environment.html">Setting up development environment</a></li>
                        <li><a href="/releases/current/Creating-a-new-Storm-project.html">Creating a new Apache Storm project</a></li>
                    </ul>
                </div>
            </div>
            <div class="col-md-3">
                <div class="footer-widget">
                    <h5>Documentation</h5>
                    <ul class="footer-list">
                        <li><a href="/releases/current/index.html">Index</a></li>
                        <li><a href="/releases/current/javadocs/index.html">Javadoc</a></li>
                        <li><a href="/releases/current/FAQ.html">FAQ</a></li>
                    </ul>
                </div>
            </div>
        </div>
        <hr/>
        <div class="row">   
            <div class="col-md-12">
                <p align="center">Copyright © 2021 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved. 
                    <br>Apache Storm, Apache, the Apache feather logo, and the Apache Storm project logos are trademarks of The Apache Software Foundation. 
                    <br>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
            </div>
        </div>
    </div>
</footer>
<!--Footer End-->
<!-- Scroll to top -->
<span class="totop"><a href="#"><i class="fa fa-angle-up"></i></a></span> 

</body>

</html>

