<!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 - BookKeeper Mailing lists</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">

 <h2>Users</h2>

<p>If you use BookKeeper or Hedwig, please subscribe to the BookKeeper user mailing list.</p>

<p>The BookKeeper user mailing list is: <a href="mailto:%75%73%65%72%40%62%6F%6F%6B%6B%65%65%70%65%72%2E%61%70%61%63%68%65%2E%6F%72%67">user@bookkeeper.apache.org</a>.</p>

<ul>
<li><a href="mailto:%75%73%65%72%2D%73%75%62%73%63%72%69%62%65%40%62%6F%6F%6B%6B%65%65%70%65%72%2E%61%70%61%63%68%65%2E%6F%72%67">Subscribe to List</a></li>
<li><a href="mailto:%75%73%65%72%2D%75%6E%73%75%62%73%63%72%69%62%65%40%62%6F%6F%6B%6B%65%65%70%65%72%2E%61%70%61%63%68%65%2E%6F%72%67">Unsubscribe from List</a></li>
<li><a href="http://mail-archives.apache.org/mod_mbox/bookkeeper-user/">Archives</a></li>
</ul>

<p>Note:<br />
In order to post to the list, it is necessary to first subscribe to it.</p>


<h2>Developers</h2>

<p>If you'd like to contribute to BookKeeper or Hedwig, please subscribe to the BookKeeper developer mailing list.</p>

<p>The BookKeeper developer mailing list is : <a href="mailto:%64%65%76%40%62%6F%6F%6B%6B%65%65%70%65%72%2E%61%70%61%63%68%65%2E%6F%72%67">dev@bookkeeper.apache.org</a>.</p>

<ul>
<li><a href="mailto:%64%65%76%2D%73%75%62%73%63%72%69%62%65%40%62%6F%6F%6B%6B%65%65%70%65%72%2E%61%70%61%63%68%65%2E%6F%72%67">Subscribe to List</a></li>
<li><a href="mailto:%64%65%76%2D%75%6E%73%75%62%73%63%72%69%62%65%40%62%6F%6F%6B%6B%65%65%70%65%72%2E%61%70%61%63%68%65%2E%6F%72%67">Unsubscribe from List</a></li>
<li><a href="http://mail-archives.apache.org/mod_mbox/bookkeeper-dev/">Archives</a></li>
</ul>

<p>Note<br />
In order to post to the list, it is necessary to first subscribe to it.</p>

<h2>Commits</h2>

<p>If you'd like to see changes made in BookKeeper's version control system then subscribe to the BookKeeper commit mailing list.</p>

<p>The BookKeeper commits list is:</p>

<ul>
<li><a href="mailto:%63%6F%6D%6D%69%74%73%2D%73%75%62%73%63%72%69%62%65%40%62%6F%6F%6B%6B%65%65%70%65%72%2E%61%70%61%63%68%65%2E%6F%72%67">Subscribe to List</a></li>
<li><a href="mailto:%63%6F%6D%6D%69%74%73%2D%75%6E%73%75%62%73%63%72%69%62%65%40%62%6F%6F%6B%6B%65%65%70%65%72%2E%61%70%61%63%68%65%2E%6F%72%67">Unsubscribe from List</a></li>
<li><a href="http://mail-archives.apache.org/mod_mbox/bookkeeper-commits/">Archives</a></li>
</ul>

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