<!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>Discussion - 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>Discussion</li></ul>

        <div id="-middle-content">
          <h1 id="discussion">Discussion</h1>

<p>Have a question or an idea?  We'd be pleased to talk about it.</p>

<h2 id="mailing-lists">Mailing lists</h2>

<p>Mailing lists are the primary means of collaboration at Qpid.</p>

<p>Subscribe to these lists by sending an email to the <em>subscribe address</em> listed, <em>not</em> the main list address, and you will receive a verification email. To unsubscribe, send an email to the <em>unsubscribe</em> address. <em>Responses to list postings go back to the list, you must subscribe to receive them.</em></p>

<table>
<thead>
<tr>
  <th>List</th>
  <th>Purpose</th>
  <th>Subscribe</th>
  <th>Unsubscribe</th>
  <th>Archives</th>
</tr>
</thead>
<tbody>
<tr>
  <td><a href="http://mail-archives.apache.org/mod_mbox/qpid-users/">users@qpid.apache.org</a></td>
  <td>General discussion</td>
  <td><a href="mailto:users-subscribe@qpid.apache.org">users-subscribe@qpid.apache.org</a></td>
  <td><a href="mailto:users-unsubscribe@qpid.apache.org">users-unsubscribe@</a></td>
  <td><a href="http://mail-archives.apache.org/mod_mbox/qpid-users/">ASF</a>, <a href="https://lists.apache.org/list.html?users@qpid.apache.org">ASF2</a>, <a href="http://qpid.2158936.n2.nabble.com/Apache-Qpid-users-f2158936.html">Nabble</a></td>
</tr>
<tr>
  <td><a href="http://mail-archives.apache.org/mod_mbox/qpid-dev/">dev@qpid.apache.org</a></td>
  <td>Issue notifications</td>
  <td><a href="mailto:dev-subscribe@qpid.apache.org">dev-subscribe@qpid.apache.org</a></td>
  <td><a href="mailto:dev-unsubscribe@qpid.apache.org">dev-unsubscribe@</a></td>
  <td><a href="http://mail-archives.apache.org/mod_mbox/qpid-dev/">ASF</a>, <a href="https://lists.apache.org/list.html?dev@qpid.apache.org">ASF2</a>, <a href="http://qpid.2158936.n2.nabble.com/Apache-Qpid-developers-f7254403.html">Nabble</a></td>
</tr>
</tbody>
</table>

<p>Qpid also offers lists for
<a href="/source-code.html#commits-list">commits</a> and
<a href="/source-code.html#notifications-list">notifications</a>.</p>

<p>Archives for the retired proton@ list are also available (<a href="http://mail-archives.apache.org/mod_mbox/qpid-proton/">ASF</a>, <a href="http://qpid.2158936.n2.nabble.com/Apache-Qpid-Proton-f7580687.html">Nabble</a>) for historic reference. Going forward, use the users list for discussion of Proton.</p>

<p><strong>NOTE</strong>: The Qpid project offers various components in many different
languages. When mailing the lists, please be specific about which
components (or even which part of them) and which versions that you are
using. For example, "I'm using the Qpid Broker-J
&lt;version&gt; with the Qpid JMS &lt;version&gt; AMQP 1.0 client"
rather than "I'm using the broker and JMS client".</p>

<h2 id="chat">Chat</h2>

<p>We hang out on <code>#qpid</code> on <a href="https://freenode.net">freenode</a>.</p>

<ul>
<li><a href="irc://irc.freenode.net/qpid">irc://irc.freenode.net/qpid</a></li>
<li><a href="http://webchat.freenode.net/?channels=#qpid">freenode webchat</a></li>
</ul>

<h2 id="more-information">More information</h2>

<ul>
<li><a href="http://www.apache.org/foundation/mailinglists.html">Mailing lists at Apache</a></li>
<li><a href="http://qpid.2158936.n2.nabble.com/">Qpid lists at Nabble</a></li>
</ul>


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