<!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>
    <meta charset="UTF-8">
    <title>Issues - 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://gitbox.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>Issues</li></ul>

        <div id="-middle-content">
          <h1 id="issues">Issues</h1>

<p>Qpid uses an
<a href="http://en.wikipedia.org/wiki/Issue_tracking_system">issue tracking system</a>
to organize its work, breaking it into individual bugs, enhancements,
and tasks.  Qpid uses the
<a href="http://www.atlassian.com/software/jira/overview">JIRA</a> issue tracking
system.</p>

<h2 id="search-issues">Search issues</h2>

<form id="-jira-search-form">
  <input name="text" type="text"/>
  <button type="submit">Search</button>
</form>

<h2 id="report-a-bug">Report a bug</h2>

<p>JIRA allows users to anonymously search issues, but an account is
required to create new ones.  <a href="https://issues.apache.org/jira/secure/Signup!default.jspa">Sign up for an
account</a>.</p>

<p>Before reporting a bug, <a href="#search-issues">search the existing issues</a>
to see if it has already been reported.  If it has, feel free to add a
comment describing the case where you see it.</p>

<p>If it hasn't, it's time to report a bug.  Two guidelines are
essential.</p>

<ul>
<li><p>Be specific.  What version of the software are you using?  What
component?  What OS are you running it on?  What are you trying to
do?  (Someone might very well buy you a beer if you include a
script that reproduces the problem.)</p></li>
<li><p>Don't pile more than one problem into one bug.  The developer
workflow requires discrete tasks that can be prioritized and
resolved independently.</p></li>
</ul>

<p>If you're not sure what to put into a field, don't sweat it.  The
important fields are <em>Summary</em>, <em>Environment</em>, and <em>Description</em>.</p>

<p>Bug reports are highly useful contributions.  We appreciate the time
you give to make Qpid better.</p>

<div class="flex">

<section>

<h3 id="qpid-c-java-and-python">Qpid C++, Java, and Python</h3>

<ul>
<li><a href="https://issues.apache.org/jira/secure/CreateIssue.jspa?pid=12310520&amp;issuetype=1&amp;priority=3">Report a bug</a></li>
<li><a href="https://issues.apache.org/jira/secure/CreateIssue.jspa?pid=12310520">Create a new issue</a></li>
<li><a href="https://issues.apache.org/jira/browse/QPID">JIRA project page</a></li>
</ul>

</section>

<section>

<h3 id="qpid-jms">Qpid JMS</h3>

<ul>
<li><a href="https://issues.apache.org/jira/secure/CreateIssue.jspa?pid=12314524&amp;issuetype=1&amp;priority=3">Report a bug</a></li>
<li><a href="https://issues.apache.org/jira/secure/CreateIssue.jspa?pid=12314524">Create a new issue</a></li>
<li><a href="https://issues.apache.org/jira/browse/QPIDJMS">JIRA project page</a></li>
</ul>

</section>

<section>

<h3 id="qpid-proton">Qpid Proton</h3>

<ul>
<li><a href="https://issues.apache.org/jira/secure/CreateIssue.jspa?pid=12313720&amp;issuetype=1&amp;priority=3">Report a bug</a></li>
<li><a href="https://issues.apache.org/jira/secure/CreateIssue.jspa?pid=12313720">Create a new issue</a></li>
<li><a href="https://issues.apache.org/jira/browse/PROTON">JIRA project page</a></li>
</ul>

</section>

<section>

<h3 id="qpid-dispatch">Qpid Dispatch</h3>

<ul>
<li><a href="https://issues.apache.org/jira/secure/CreateIssue.jspa?pid=12315321&amp;issuetype=1&amp;priority=3">Report a bug</a></li>
<li><a href="https://issues.apache.org/jira/secure/CreateIssue.jspa?pid=12315321">Create a new issue</a></li>
<li><a href="https://issues.apache.org/jira/browse/DISPATCH">JIRA project page</a></li>
</ul>

</section>

</div>

<h2 id="notifications">Notifications</h2>

<p>Alerts for new and updated issues are directed to the
<a href="/discussion.html#mailing-lists">developer list</a>.</p>

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

<ul>
<li><a href="https://issues.apache.org/jira/secure/Signup!default.jspa">Sign up for an account</a></li>
<li><a href="http://www.atlassian.com/software/jira/overview">JIRA product page</a></li>
<li><a href="http://www.atlassian.com/software/jira/docs/latest/">JIRA documentation</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>
