<!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 xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>Contributors - Apache Qpid&#8482;</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
    <script type="text/javascript">var _deferredFunctions = [];</script>
    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
    <!--[if lte IE 8]>
      <link rel="stylesheet" href="/ie.css" type="text/css"/>
      <script type="text/javascript" src="/html5shiv.js"></script>
    <![endif]-->

    <!-- Redirects for `go get` and godoc.org -->
    <meta name="go-import"
          content="qpid.apache.org git https://git-wip-us.apache.org/repos/asf/qpid-proton.git"/>
    <meta name="go-source"
          content="qpid.apache.org
https://github.com/apache/qpid-proton/blob/go1/README.md
https://github.com/apache/qpid-proton/tree/go1{/dir}
https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
  </head>
  <body>
    <div id="-content">
      <div id="-top" class="panel">
        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>

        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>

        <ul id="-global-navigation">
          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
          <li><a href="/documentation.html">Documentation</a></li>
          <li><a href="/download.html">Download</a></li>
          <li><a href="/discussion.html">Discussion</a></li>
        </ul>
      </div>

      <div id="-menu" class="panel" style="display: none;">
        <div class="flex">
          <section>
            <h3>Project</h3>

            <ul>
              <li><a href="/overview.html">Overview</a></li>
              <li><a href="/components/index.html">Components</a></li>
              <li><a href="/releases/index.html">Releases</a></li>
            </ul>
          </section>

          <section>
            <h3>Messaging APIs</h3>

            <ul>
              <li><a href="/proton/index.html">Qpid Proton</a></li>
              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
            </ul>
          </section>

          <section>
            <h3>Servers and tools</h3>

            <ul>
              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
            </ul>
          </section>

          <section>
            <h3>Resources</h3>

            <ul>
              <li><a href="/dashboard.html">Dashboard</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
              <li><a href="/resources.html">More resources</a></li>
            </ul>
          </section>
        </div>
      </div>

      <div id="-search" class="panel" style="display: none;">
        <form action="http://www.google.com/search" method="get">
          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
          <button type="submit">Search</button>
          <a href="/search.html">More ways to search</a>
        </form>
      </div>

      <div id="-middle" class="panel">
        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li>Contributors</li></ul>

        <div id="-middle-content">
          <h1 id="contributors">Contributors</h1>

<p>These are the people who have built Qpid.  We are grateful for their
contributions.  If you'd like to become a contributor, learn how to
<a href="/get-involved.html">get involved</a>.</p>

<h2 id="current-committers">Current committers</h2>

<p>As of 28 September 2015, the following committers have been active in
the past year.</p>

<div class="four-column">

<ul>
<li>Alan Conway</li>
<li>Andrew MacBean</li>
<li>Andrew Stitcher</li>
<li>Bo&#382;o Dragojevic</li>
<li>Chuck Rolke</li>
<li>Cliff Jansen</li>
<li>Darryl Pierce</li>
<li>Dominic Evans</li>
<li>Ernie Allen</li>
<li>Fraser Adams</li>
<li>Gordon Sim</li>
<li>Jakub Scholz</li>
<li>Justin Ross</li>
<li>Keith Wall</li>
<li>Ken Giusti</li>
<li>Kim van der Riet</li>
<li>Mick Goulish</li>
<li>Oleksandr Rudyy</li>
<li>Pavel Moravec</li>
<li>Rafael Schloming</li>
<li>Rajith Attapattu</li>
<li>Rob Godfrey</li>
<li>Robbie Gemmell</li>
<li>Steve Huston</li>
<li>Ted Ross</li>
<li>Tim Bish</li>
</ul>

</div>

<h2 id="past-committers">Past committers</h2>

<div class="four-column">

<ul>
<li>Aidan Skinner</li>
<li>Andrea Gazzarini</li>
<li>Andrew Kennedy</li>
<li>Arnaud Simon</li>
<li>Carl Trieloff</li>
<li>Jim Meyering</li>
<li>John O'Hara</li>
<li>Jonathan Robie</li>
<li>Lahiru Gunathilake</li>
<li>Manuel Teira</li>
<li>Marnie McCormack</li>
<li>Martin Ritchie</li>
<li>Nuno Santos</li>
<li>Paul Fremantle</li>
<li>Phil Harvey</li>
<li>Robert Greig</li>
<li>Rupert Smith</li>
<li>Weston Price</li>
<li>Yoav Shapira</li>
</ul>

</div>

<h2 id="other-contributors">Other contributors</h2>

<div class="four-column">

<ul>
<li>Bhupendra Bhardwaj</li>
<li>Colin Crist</li>
<li>Ernie Allen</li>
<li>Kevin Smith</li>
<li>Steve Vinoski</li>
<li>Steven Shaw</li>
<li>Tomas Restrepo</li>
</ul>

</div>

<h2 id="project-mentors">Project mentors</h2>

<div class="four-column">

<ul>
<li>Cliff Schmidt</li>
<li>Craig Russell</li>
<li>Paul Fremantle</li>
<li>Scott Deboy</li>
<li>Yoav Shapira</li>
</ul>

</div>

<h2 id="companies">Companies</h2>

<p>Thanks to the following companies for letting us use their software to
improve ours.</p>

<ul>
<li><p><img class="company-logo" src="/images/coverity.png"/>
<a href="http://www.coverity.com/">Coverity</a> for granting us use of their
static analysis tools for Qpid C++ and Qpid for Java code.</p></li>
<li><p><img class="company-logo" src="/images/jprofiler.png"/>
<a href="http://www.ej-technologies.com/">ej-technologies</a> for giving us a
free team license for profiling Qpid for Java code.</p></li>
<li><p><img class="company-logo" src="/images/structure101.jpg"/>
<a href="http://structure101.com/">Headway Software</a> for giving us free
licenses of Structure101 for analyzing and managing the
architecture of Qpid for Java code.</p></li>
</ul>

<h2 id="apache-sponsors">Apache sponsors</h2>

<p>As a member of the Apache Software Foundation, Qpid would like to
<a href="http://www.apache.org/foundation/thanks.html">thank the sponsors</a> who
generously support its ongoing work.</p>


          <hr/>

          <ul id="-apache-navigation">
            <li><a href="http://www.apache.org/">Apache</a></li>
            <li><a href="http://www.apache.org/licenses/">License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
            <li><a href="/security.html">Security</a></li>
            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
          </ul>

          <p id="-legal">
            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
            The Apache Software Foundation; Licensed under
            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
            Proton, Apache, the Apache feather logo, and the Apache Qpid
            project logo are trademarks of The Apache Software
            Foundation; All other marks mentioned may be trademarks or
            registered trademarks of their respective owners
          </p>
        </div>
      </div>
    </div>
  </body>
</html>
