<!DOCTYPE html>
<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="A new open source Apache Hadoop ecosystem project, Apache Kudu completes Hadoop's storage layer to enable fast analytics on fast data" />
    <meta name="author" content="Cloudera" />
    <title>Apache Kudu - Committers and PMC Members</title>
    <!-- Bootstrap core CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
          integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7"
          crossorigin="anonymous">

    <!-- Custom styles for this template -->
    <link href="/css/kudu.css" rel="stylesheet"/>
    <link href="/css/asciidoc.css" rel="stylesheet"/>
    <link rel="shortcut icon" href="/img/logo-favicon.ico" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" />

    

    <!-- 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>
    <div class="kudu-site container-fluid">
      <!-- Static navbar -->
        <nav class="navbar navbar-default">
          <div class="container-fluid">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                <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="logo" href="/"><img
                src="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png"
                srcset="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png 1x, //d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_160px.png 2x"
                alt="Apache Kudu"/></a>
              
            </div>
            <div id="navbar" class="collapse navbar-collapse">
              <ul class="nav navbar-nav navbar-right">
                <li >
                  <a href="/">Home</a>
                </li>
                <li >
                  <a href="/overview.html">Overview</a>
                </li>
                <li >
                  <a href="/docs/">Documentation</a>
                </li>
                <li >
                  <a href="/releases/">Releases</a>
                </li>
                <li >
                  <a href="/blog/">Blog</a>
                </li>
                <!-- NOTE: this dropdown menu does not appear on Mobile, so don't add anything here
                     that doesn't also appear elsewhere on the site. -->
                <li class="dropdown active">
                  <a href="/community.html" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a>
                  <ul class="dropdown-menu">
                    <li class="dropdown-header">GET IN TOUCH</li>
                    <li><a class="icon email" href="/community.html">Mailing Lists</a></li>
                    <li><a class="icon slack" href="https://getkudu-slack.herokuapp.com/">Slack Channel</a></li>
                    <li role="separator" class="divider"></li>
                    <li><a href="/community.html#meetups-user-groups-and-conference-presentations">Events and Meetups</a></li>
                    <li><a href="/committers.html">Project Committers</a></li>
                    <!--<li><a href="/roadmap.html">Roadmap</a></li>-->
                    <li><a href="/community.html#contributions">How to Contribute</a></li>
                    <li role="separator" class="divider"></li>
                    <li class="dropdown-header">DEVELOPER RESOURCES</li>
                    <li><a class="icon github" href="https://github.com/apache/incubator-kudu">GitHub</a></li>
                    <li><a class="icon gerrit" href="http://gerrit.cloudera.org:8080/#/q/status:open+project:kudu">Gerrit Code Review</a></li>
                    <li><a class="icon jira" href="https://issues.apache.org/jira/browse/KUDU">JIRA Issue Tracker</a></li>
                    <li role="separator" class="divider"></li>
                    <li class="dropdown-header">SOCIAL MEDIA</li>
                    <li><a class="icon twitter" href="https://twitter.com/ApacheKudu">Twitter</a></li>
                    <li><a href="https://www.reddit.com/r/kudu/">Reddit</a></li>
                    <li role="separator" class="divider"></li>
                    <li class="dropdown-header">APACHE SOFTWARE FOUNDATION</li>
                    <li><a href="https://www.apache.org/security/" target="_blank">Security</a></li>
                    <li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a></li>
                    <li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
                    <li><a href="https://www.apache.org/licenses/" target="_blank">License</a></li>
                  </ul>
                </li>
                <li >
                  <a href="/faq.html">FAQ</a>
                </li>
              </ul><!-- /.nav -->
            </div><!-- /#navbar -->
          </div><!-- /.container-fluid -->
        </nav>


<div class="row-fluid">
  <div class="col-lg-12 committers">

<h1 id="apache-kudu-committers-and-pmc-members">Apache Kudu Committers and PMC Members</h1>

<p>Following is a list of current Kudu committers and members of the Kudu PMC.</p>

<table>
  <thead>
    <tr>
      <th>Username</th>
      <th>Name</th>
      <th>Role</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>abukor</td>
      <td>Attila Bukor</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>adar</td>
      <td>Adar Dembo</td>
      <td>VP, PMC</td>
    </tr>
    <tr>
      <td>alexey</td>
      <td>Alexey Serbin</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>awong</td>
      <td>Andrew Wong</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>bankim</td>
      <td>Bankim Bhavsar</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>bchang</td>
      <td>Binglin Chang</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>danburkert</td>
      <td>Dan Burkert</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>dralves</td>
      <td>David Alves</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>granthenke</td>
      <td>Grant Henke</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>hahao</td>
      <td>Hao Hao</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>helifu</td>
      <td>LiFu He</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>jarcec</td>
      <td>Jarek Jarcec Cecho</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>jdcryans</td>
      <td>Jean-Daniel Cryans</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>jfarrell</td>
      <td>Jake Farrell</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>jtbirdsell</td>
      <td>Jordan Birdsell</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>julien</td>
      <td>Julien Le Dem</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>laiyingchun</td>
      <td>Yingchun Lai</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>mattmann</td>
      <td>Chris Mattmann</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>misty</td>
      <td>Misty Linville</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>mpercy</td>
      <td>Mike Percy</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>sailesh</td>
      <td>Sailesh Mukil</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>stack</td>
      <td>Michael Stack</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>todd</td>
      <td>Todd Lipcon</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>wdberkeley</td>
      <td>William Berkeley</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>yaoxu</td>
      <td>Yao Xu</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>yaozhang</td>
      <td>Yao Zhang</td>
      <td>PMC</td>
    </tr>
    <tr>
      <td>zhangyifan</td>
      <td>Yifan Zhang</td>
      <td>PMC</td>
    </tr>
  </tbody>
</table>

<p>Committership is a recognition of an individual’s contribution within the
Apache Kudu community, including, but not limited to:</p>

<ul>
  <li>Writing quality code and tests</li>
  <li>Writing documentation</li>
  <li>Improving the website</li>
  <li>Participating in code review (+1s are appreciated! Reviews help reduce the
burden on other committers)</li>
  <li>Voting on release candidates (non-binding votes are appreciated! Trying out
release candidates helps expand test coverage in more environments)</li>
  <li>Answering questions on public forums, like Slack, mailing lists, etc.</li>
  <li>Participating in feature design discussions</li>
  <li>Participating in Jira discussions</li>
  <li>Evangelizing Kudu at conferences, meetups, etc.</li>
  <li>Operating Kudu deployments, potentially testing bug fixes and features, and
sharing feedback to the community</li>
  <li>Sustained contribution to the Kudu project and community</li>
</ul>

<p>While not all of these are required to become a committer, they are all taken
into account when considering contributors for committership. There is no set
number of commits required, set number of lines of code merged, or set number
of questions answered that will automatically qualify someone for
committership. The Kudu PMC will take note of contributors and periodically
vote on them, based on past contributions and interactions with the community.</p>

<p>Committership is an acknowledgement from the Kudu PMC that a contributor has
demonstrated solid judgement in their contributions, and demonstrated that they
are thoughtful and collaborative when working on trickier contributions.</p>

<p>If PMC membership is also granted, committership comes with the privilege to
vote on matters that affect the wider Kudu community, including merging code,
moving forward on releases, and introducing new committers. Committership is
intended for those who are interested in the project’s future and want to take
a more active role in shaping it.</p>

<p>For more details about how the Apache Software Foundation defines contributors
and committers, see the <a href="https://community.apache.org/contributors/">Apache
Contributors</a> page.</p>


  </div>
</div>

      <footer class="footer">
        <div class="row">
          <div class="col-md-9">
            <p class="small">
            Copyright &copy; 2019 The Apache Software Foundation. 
            </p>
            <p class="small">
            Apache Kudu, Kudu, Apache, the Apache feather logo, and the Apache Kudu
            project logo are either registered trademarks or trademarks of The
            Apache Software Foundation in the United States and other countries.
            </p>
          </div>
          <div class="col-md-3">
            <a class="pull-right" href="https://www.apache.org/events/current-event.html">
                <img src="https://www.apache.org/events/current-event-234x60.png"/>
            </a>
          </div>
        </div>
      </footer>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script>
      // Try to detect touch-screen devices. Note: Many laptops have touch screens.
      $(document).ready(function() {
        if ("ontouchstart" in document.documentElement) {
          $(document.documentElement).addClass("touch");
        } else {
          $(document.documentElement).addClass("no-touch");
        }
      });
    </script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
            integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
            crossorigin="anonymous"></script>
    <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','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-68448017-1', 'auto');
      ga('send', 'pageview');
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/3.1.0/anchor.js"></script>
    <script>
      anchors.options = {
        placement: 'right',
        visible: 'touch',
      };
      anchors.add();
    </script>
  </body>
</html>

