<!DOCTYPE html>
<!--

    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE- 2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<html>
  <head>
    <title>Apache BookKeeper - Credits</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Bootstrap -->
    <link href="/archives/css/bootstrap.min.css" rel="stylesheet">
    <link href="/archives/css/bootstrap-responsive.min.css" rel="stylesheet">
    <link href="/archives/css/styles.css" rel="stylesheet">
  </head>
  <body>
    <header class="navbar navbar-inverse navbar-static-top" role="banner">
      <div class="container">
    	<div class="navbar-header hidden-xs hidden-sm">
    	  <a class="navbar-brand navbar-logo" href="/archives/"><img class="img-responsive" src="/archives/img/bookkeeper_blk40.png" alt="Bookkeeper Logo" /></a>
    	</div>
    	<div class="navbar-header">
    	  <button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse">
            <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="/archives/">Apache BookKeeper</a>
    	</div>
    	<nav class="collapse navbar-collapse bs-navbar-collapse" role="navigation">
    	  <ul class="nav navbar-nav">
    	    <li><a href="/archives/releases.html">Download</a></li>

    	    <li class="dropdown">
    	      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Documentation<span class="caret"></span></a>
    	      <ul class="dropdown-menu" role="menu">
		<li><a href="/archives/docs/master">Latest (master)</a></li>
		<li><ul>
		    <li><a href="/archives/docs/master/apidocs">Java API docs</a></li>
		    <li><a href="/archives/docs/master/bookkeeperTutorial.html">Tutorial</a></li>
		    <li><a href="/archives/docs/master/bookkeeperConfig.html">Admin guide</a></li>
		</ul><li>
                <li><a href="/archives/docs/r4.4.0">Release 4.4.0</a></li>
                <li class="divider"></li>
                <li>Older releases</li>
                <li><a href="/archives/docs/r4.3.2">Release 4.3.2</a></li>
                <li><a href="/archives/docs/r4.3.1">Release 4.3.1</a></li>
                <li><a href="/archives/docs/r4.3.0">Release 4.3.0</a></li>
                <li><a href="/archives/docs/r4.2.4">Release 4.2.4</a></li>
                <li><a href="/archives/docs/r4.2.3">Release 4.2.3</a></li>
                <li><a href="/archives/docs/r4.2.2">Release 4.2.2</a></li>
                <li><a href="/archives/docs/r4.2.1">Release 4.2.1</a></li>
                <li><a href="/archives/docs/r4.2.0">Release 4.2.0</a></li>
                <li><a href="/archives/docs/r4.1.0">Release 4.1.0</a></li>
                <li><a href="/archives/docs/r4.0.0">Release 4.0.0</a></li>
              </ul>
            </li>
            
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Get Involved<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/archives/lists.html">Mailing Lists</a></li>
                <li><a href="/archives/irc.html">IRC</a></li>
                <li><a href="/archives/svn.html">Version Control</a></li>
                <li><a href="https://issues.apache.org/jira/browse/BOOKKEEPER">Issue Tracker</a></li>
              </ul>
            </li>

            <li><a href="https://cwiki.apache.org/confluence/display/BOOKKEEPER/Index">Wiki</a></li>
            <!--<li><a href="#">Hedwig</a></li>//-->
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Project Info<span class="caret"></span></a>
              <ul class="dropdown-menu" role="menu">
                <li><a href="/archives/credits.html">Who are we?</a></li>
                <li><a href="/archives/bylaws.html">Bylaws</a></li>
                <li><a href="http://www.apache.org/licenses/">License</a></li>
                <li class="divider"></li>
                <li><a href="/archives/privacy.html">Privacy Policy</a></li>
                <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsership</a></li>
                <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
              </ul>
            </li>
          </ul>
          <script>
            (function() {
            var cx = '017580107654524087317:iqnsyimpydg';
            var gcse = document.createElement('script');
            gcse.type = 'text/javascript';
            gcse.async = true;
            gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//www.google.com/cse/cse.js?cx=' + cx;
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(gcse, s);
            })();
          </script>
          
          <div class="navbar-form navbar-right visible-lg" id="googlebox">
            <gcse:searchbox-only></gcse:searchbox-only>
          </div>
        </nav>
      </div>
    </header>
    <div class="container">

 <h1><span class="caps">PMC</span> Members</h1>

<p>BookKeeper's <span class="caps">PMC </span>members are</p>

<table class="table" cellspacing="0"><tr><th>username</th><th>name</th><th>organization</th><th>timezone</th></tr><tr><td>breed</td><td>Ben Reed</td><td>Facebook</td><td>-8</td></tr><tr><td>fpj</td><td>Flavio Junqueira</td><td>Microsoft</td><td>+1</td></tr><tr><td>ivank</td><td>Ivan Kelly</td><td>Midokura</td><td>+2</td></tr><tr><td>jiannan</td><td>Jiannan Wang</td><td>Yahoo Inc.</td><td>+8</td></tr><tr><td>mmerli</td><td>Matteo Merli</td><td>Yahoo Inc.</td><td>-8</td></tr><tr><td>sijie</td><td>Sijie Guo</td><td>Twitter</td><td>-8</td></tr><tr><td>umamahesh</td><td>Uma Maheswara Rao G</td><td>Intel</td><td>+5</td></tr><tr><td>rakeshr</td><td>Rakesh Radhakrishnan</td><td>Huawei</td><td>+5:30</td></tr></table>

<h1>Committers</h1>

<p>BookKeeper's active committers are</p>

<table class="table" cellspacing="0"><tr><th>username</th><th>name</th><th>organization</th><th>timezone</th></tr><tr><td>breed</td><td>Ben Reed</td><td>Facebook</td><td>-8</td></tr><tr><td>fpj</td><td>Flavio Junqueira</td><td>Microsoft</td><td>+1</td></tr><tr><td>ivank</td><td>Ivan Kelly</td><td>Midokura</td><td>+2</td></tr><tr><td>jiannan</td><td>Jiannan Wang</td><td>Yahoo Inc.</td><td>+8</td></tr><tr><td>jujjuri</td><td>JV Jujjuri</td><td>Salesforce</td><td>-8</td></tr><tr><td>mmerli</td><td>Matteo Merli</td><td>Yahoo Inc.</td><td>-8</td></tr><tr><td>sijie</td><td>Sijie Guo</td><td>Twitter</td><td>-8</td></tr><tr><td>umamahesh</td><td>Uma Maheswara Rao G</td><td>Intel</td><td>+5</td></tr><tr><td>rakeshr</td><td>Rakesh Radhakrishnan</td><td>Huawei</td><td>+5:30</td></tr><tr><td>robindh</td><td>Robin Dhamankar</td><td>Facebook</td><td>-8</td></tr><tr><td>zhaijia</td><td>Jia Zhai</td><td><span class="caps">EMC</span></td><td>+8</td></tr><tr><td>eolivelli</td><td>Enrico Olivelli</td><td>Diennea</td><td>+2</td></tr></table>

<h2 id="contributors">Contributors</h2>

<p>A list of BookKeeper contributors and their contributions is available from <a href="https://issues.apache.org/jira/browse/BookKeeper">Jira</a></p>

    </div>
    <footer class="footer">
      <div class="container">
        <p class="text-muted">Copyright &copy; 2014 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.<br/>
	Apache BookKeeper, BookKeeper, Apache, Apache ZooKeeper, ZooKeeper, the Apache feather logo, and the Apache BookKeeper project logo are trademarks of The Apache Software Foundation.</p>
      </div>
    </footer>

    <script src="//code.jquery.com/jquery.js"></script>
    <script src="/archives/js/bootstrap.min.js"></script>
  </body>
</html>
