<html lang="en"><head>
    
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="Apex is an enterprise grade native YARN big data-in-motion platform that unifies stream processing as well as batch processing.">
    <meta name="author" content="Apache Software Foundation">
    <link rel="icon" href="favicon.ico">

    <title>Apache Apex</title>

    <!-- Main Stylesheet -->
    <link href="css/main.css" rel="stylesheet">

    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-85540278-1', 'auto');
      ga('send', 'pageview');
    </script>
    
  </head>

  <body>
    <nav class="navbar navbar-default navbar-static-top" id="main-nav">
      <div class="container">

      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="/">
          <img src="images/apex-logo.svg" class="logo" alt="Apache Apex Logo">
          Apache Apex<span class="trademark">&trade;</span>
        </a>
      </div>

      <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-right navbar-nav">
          <li class="nav-item">
            <a class="nav-link " href="/">Home</a>
          </li>
          <li class="nav-item">
            <a class="nav-link " href="/docs.html">Documentation</a>
          </li>
          <li class="nav-item">
            <a class="nav-link " href="/powered-by-apex.html">Powered By Apex</a>
          </li>
          <li class="nav-item">
            <a class="nav-link " href="/roadmap.html">Roadmap</a>
          </li>

            <li class="nav-item nav-mouseover">
              <ul class="dropdown-menu">
                <li class=""><a href="/community.html#mailing-lists">Mailing Lists</a></li>
                <li class=""><a href="/community.html#issue-tracking">Issue Tracking</a></li>
                <li class=""><a href="http://stackoverflow.com/questions/tagged/apache-apex">Stack Overflow</a></li>
                <li class=""><a href="/community.html#events">Events</a></li>
                <li class=""><a href="/community.html#contributing">Contributing</a></li>
                <li class=""><a href="http://www.apache.org/foundation/how-it-works.html">Apache Foundation</a></li>
              </ul>
              <a href="/community.html" class="nav-link">Community</a>
            </li>
          

            <li class="nav-item nav-mouseover">
              <ul class="dropdown-menu">
                <li class=""><a href="https://github.com/apache/apex-core">Apex Core</a></li>
                <li class=""><a href="https://github.com/apache/apex-malhar">Apex Malhar</a></li>
                <li class=""><a href="https://github.com/apache/apex-site">Apex Site</a></li>
              </ul>
              <a href="https://github.com/apache/apex-core" class="nav-link">Github</a>
            </li>
          
          <li class="nav-item">
            <a class="nav-link btn btn-success btn-download" href="/downloads.html">Download</a>
          </li>
        </ul>
        
      </div>
    </nav>

<div class="container">
  
  <h1 id="podling-maturity-assessment">Podling Maturity Assessment</h1>
<h2 id="overview">Overview</h2>
<p>This is an assessment of the Apex podling&#39;s maturity, meant to help inform the decision (of the mentors, community, Incubator PMC and ASF Board of Directors) to graduate it as a top-level Apache project.</p>
<p>It is based on the ASF project maturity model at <a href="https://community.apache.org/apache-way/apache-project-maturity-model.html">https://community.apache.org/apache-way/apache-project-maturity-model.html</a></p>
<h2 id="maturity-model-assessment">Maturity model assessment</h2>
<p>Mentors and community members are encouraged to contribute to this and comment on it.</p>
<h3 id="code">Code</h3>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CD10</strong>
The project produces Open Source software, for distribution to the public at no charge.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CD20</strong>
The project&#39;s code is easily discoverable and publicly accessible.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CD30</strong>
The code can be built in a reproducible way using widely available standard tools.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CD40</strong>
The full history of the project&#39;s code is available via a source code control system, in a way that allows any released version to be recreated.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CD50</strong>
The provenance of each line of code is established via the source code control system, in a reliable way based on strong authentication of the committer. When third-party contributions are committed, commit messages provide reliable information about the code provenance.</p>
<h3 id="licenses-and-copyright">Licenses and Copyright</h3>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>LC10</strong>
The code is released under the Apache License, version 2.0.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>LC20</strong>
Libraries that are mandatory dependencies of the project&#39;s code do not create more restrictions than the Apache License does. </p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>LC30</strong>
The libraries mentioned in LC20 are available as Open Source software.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>LC40</strong>
Committers are bound by an Individual Contributor Agreement (the &quot;Apache iCLA&quot;) that defines which code they are allowed to commit and how they need to identify code that is not their own.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>LC50</strong>
The copyright ownership of everything that the project produces is clearly defined and documented. </p>
<h3 id="releases">Releases</h3>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>RE10</strong>
Releases consist of source code, distributed using standard and open archive formats that are expected to stay readable in the long term.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>RE20</strong>
Releases are approved by the project&#39;s PMC (see CS10), in order to make them an act of the Foundation.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>RE30</strong>
Releases are signed and/or distributed along with digests that can be reliably used to validate the downloaded archives.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>RE40</strong>
Convenience binaries can be distributed alongside source code but they are not Apache Releases -- they are just a convenience provided with no guarantee.</p>
<h3 id="quality">Quality</h3>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>QU10</strong>
The project is open and honest about the quality of its code. Various levels of quality and maturity for various modules are natural and acceptable as long as they are clearly communicated.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>QU20</strong>
The project puts a very high priority on producing secure software.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>QU30</strong>
The project provides a well-documented channel to report security issues, along with a documented way of responding to them. </p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>QU40</strong>
The project puts a high priority on backwards compatibility and aims to document any incompatible changes and provide tools and documentation to help users transition to new features.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>QU50</strong>
The project strives to respond to documented bug reports in a timely manner.</p>
<h3 id="community">Community</h3>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CO10</strong>
The project has a well-known homepage that points to all the information required to operate according to this maturity model.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CO20</strong>
The community welcomes contributions from anyone who acts in good faith and in a respectful manner and adds value to the project.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CO30</strong>
Contributions include not only source code, but also documentation, constructive bug reports, constructive discussions, marketing and generally anything that adds value to the project.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CO40</strong>
The community is meritocratic and over time aims to give more rights and responsibilities to contributors who add value to the project.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CO50</strong>
The way in which contributors can be granted more rights such as commit access or decision power is clearly documented and is the same for all contributors.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CO60</strong>
The community operates based on consensus of its members (see CS10) who have decision power. Dictators, benevolent or not, are not welcome in Apache projects.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CO70</strong>
The project strives to answer user questions in a timely manner.</p>
<h3 id="consensus-building">Consensus Building</h3>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CS10</strong>
The project maintains a public list of its contributors who have decision power -- the project&#39;s PMC (Project Management Committee) consists of those contributors.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CS20</strong>
Decisions are made by consensus among PMC members 9 and are documented on the project&#39;s main communications channel. Community opinions are taken into account but the PMC has the final word if needed.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CS30</strong>
Documented voting rules are used to build consensus when discussion is not sufficient. <a href="http://www.apache.org/foundation/voting.html">Voting Rules</a>, <a href="https://github.com/apache/incubator-apex-site/pull/22">Bylaws Draft</a></p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CS40</strong>
In Apache projects, vetoes are only valid for code commits and are justified by a technical explanation, as per the Apache voting rules defined in CS30.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>CS50</strong>
All &quot;important&quot; discussions happen asynchronously in written form on the project&#39;s main communications channel. Offline, face-to-face or private discussions 11 that affect the project are also documented on that channel.</p>
<h3 id="independence">Independence</h3>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>IN10</strong>
The project is independent from any corporate or organizational influence.</p>
<p><i class="glyphicon glyphicon-ok text-success"></i> <strong>IN20</strong>
Contributors act as themselves as opposed to representatives of a corporation or organization.</p>

</div>

  <hr>
  <div class="container">
    <footer id="main-footer">
      <p>
        Copyright &copy; <span id="copyright-year">2015</span> <a href="http://apache.org">The Apache Software Foundation</a>,
        Licensed under the Apache License, Version 2.0<br>
        Apache and the Apache feather logo are trademarks of The Apache Software Foundation. | <a href="/privacy.html">Privacy Policy</a><br>
        <a class="footer-link-img" href="http://apache.org"><img src="/images/asf_logo.svg" alt="The Apache Software Foundation"></a>
      </p>
    </footer>
  </div> <!-- /container -->

  <!-- Placed at the end of the document so the pages load faster -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="/js/bootstrap.min.js"></script>
  <script src="js/docs.js"></script>

  <script>
    $('#copyright-year').text((new Date()).getFullYear());

    $('.btn-download').click(function(e){
      ga('send', {
        hitType: 'event',
        eventCategory: 'Download Button',
        eventAction: 'Button Click',
        eventLabel: 'Page Header'
      });
    });

  </script>

</body>
</html>
