<?xml version="1.0"?>
<!--
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.
-->
<!--
 +======================================================================+
 |****                                                              ****|
 |****      THIS FILE IS GENERATED BY THE COMMONS BUILD PLUGIN      ****|
 |****                    DO NOT EDIT DIRECTLY                      ****|
 |****                                                              ****|
 +======================================================================+
 | TEMPLATE FILE: mail-lists-template.xml                               |
 | commons-build-plugin/trunk/src/main/resources/commons-xdoc-templates |
 +======================================================================+
 |                                                                      |
 | 1) Re-generate using: mvn commons:mail-page                          |
 |                                                                      |
 | 2) Set the following properties in the component's pom:              |
 |    - commons.componentid (required, alphabetic, lower case)          |
 |                                                                      |
 | 3) Example Properties                                                |
 |                                                                      |
 |  <properties>                                                        |
 |    <commons.componentid>math</commons.componentid>                   |
 |  </properties>                                                       |
 |                                                                      |
 +======================================================================+
-->
<document>
  <properties>
    <title>Apache Commons Statistics Mailing Lists</title>
    <author email="dev@commons.apache.org">Apache Commons Documentation Team</author>
  </properties>
  <body>

    <section name="Overview">
      <p>
        <a href="index.html">Apache Commons Statistics</a> shares mailing lists with all the other
        <a href="https://commons.apache.org/components.html">Commons Components</a>.
        To make it easier for people to only read messages related to components they are interested in,
        the convention in Commons is to prefix the subject line of messages with the component's name,
        for example:
      </p>
      <ul>
        <li>[statistics] Problem with the ...</li>
      </ul>
      <p>
        Questions related to the usage of Apache Commons Statistics should be posted to the
        <a href="https://mail-archives.apache.org/mod_mbox/commons-user/">User List</a>.
        <br />
        The <a href="https://mail-archives.apache.org/mod_mbox/commons-dev/">Developer List</a>
        is for questions and discussion related to the development of Apache Commons Statistics.
        <br />
        Please do not cross-post; developers are also subscribed to the user list.
        <br />
        You must be subscribed to post to the mailing lists.  Follow the Subscribe links below
        to subscribe.
      </p>
      <p>
        <strong>Note:</strong> please don't send patches or attachments to any of the mailing lists.
        Patches are best handled via the <a href="issue-tracking.html">Issue Tracking</a> system.
        Otherwise, please upload the file to a public server and include the URL in the mail.
      </p>
    </section>

    <section name="Apache Commons Statistics Mailing Lists">
      <p>
        <strong>Please prefix the subject line of any messages for <a href="index.html">Apache Commons Statistics</a>
        with <i>[statistics]</i></strong> - <i>thanks!</i>
        <br />
        <br />
      </p>

      <table>
        <tr>
          <th>Name</th>
          <th>Subscribe</th>
          <th>Unsubscribe</th>
          <th>Post</th>
          <th>Archive</th>
          <th>Other Archives</th>
        </tr>


        <tr>
          <td>
            <strong>Commons User List</strong>
            <br /><br />
            Questions on using Apache Commons Statistics.
            <br /><br />
          </td>
          <td><a href="mailto:user-subscribe@commons.apache.org">Subscribe</a></td>
          <td><a href="mailto:user-unsubscribe@commons.apache.org">Unsubscribe</a></td>
          <td><a href="mailto:user@commons.apache.org?subject=[statistics]">Post</a></td>
          <td><a href="https://mail-archives.apache.org/mod_mbox/commons-user/">mail-archives.apache.org</a></td>
          <td><a href="http://markmail.org/list/org.apache.commons.users/">markmail.org</a><br />
              <a href="http://www.mail-archive.com/user@commons.apache.org/">www.mail-archive.com</a><br />
              <a href="http://news.gmane.org/gmane.comp.jakarta.commons.devel">news.gmane.org</a>
          </td>
        </tr>


        <tr>
          <td>
            <strong>Commons Developer List</strong>
            <br /><br />
            Discussion of development of Apache Commons Statistics.
            <br /><br />
          </td>
          <td><a href="mailto:dev-subscribe@commons.apache.org">Subscribe</a></td>
          <td><a href="mailto:dev-unsubscribe@commons.apache.org">Unsubscribe</a></td>
          <td><a href="mailto:dev@commons.apache.org?subject=[statistics]">Post</a></td>
          <td><a href="https://mail-archives.apache.org/mod_mbox/commons-dev/">mail-archives.apache.org</a></td>
          <td><a href="http://markmail.org/list/org.apache.commons.dev/">markmail.org</a><br />
              <a href="http://www.mail-archive.com/dev@commons.apache.org/">www.mail-archive.com</a><br />
              <a href="http://news.gmane.org/gmane.comp.jakarta.commons.devel">news.gmane.org</a>
          </td>
        </tr>


        <tr>
          <td>
            <strong>Commons Issues List</strong>
            <br /><br />
            Only for e-mails automatically generated by the <a href="issue-tracking.html">issue tracking</a> system.
            <br /><br />
          </td>
          <td><a href="mailto:issues-subscribe@commons.apache.org">Subscribe</a></td>
          <td><a href="mailto:issues-unsubscribe@commons.apache.org">Unsubscribe</a></td>
          <td><i>read only</i></td>
          <td><a href="https://mail-archives.apache.org/mod_mbox/commons-issues/">mail-archives.apache.org</a></td>
          <td><a href="http://markmail.org/list/org.apache.commons.issues/">markmail.org</a><br />
              <a href="http://www.mail-archive.com/issues@commons.apache.org/">www.mail-archive.com</a>
          </td>
        </tr>


        <tr>
          <td>
            <strong>Commons Commits List</strong>
            <br /><br />
            Only for e-mails automatically generated by the <a href="scm.html">source control</a> sytem.
            <br /><br />
          </td>
          <td><a href="mailto:commits-subscribe@commons.apache.org">Subscribe</a></td>
          <td><a href="mailto:commits-unsubscribe@commons.apache.org">Unsubscribe</a></td>
          <td><i>read only</i></td>
          <td><a href="https://mail-archives.apache.org/mod_mbox/commons-commits/">mail-archives.apache.org</a></td>
          <td><a href="http://markmail.org/list/org.apache.commons.commits/">markmail.org</a><br />
              <a href="http://www.mail-archive.com/commits@commons.apache.org/">www.mail-archive.com</a>
          </td>
        </tr>

      </table>

    </section>
    <section name="Apache Mailing Lists">
      <p>
        Other mailing lists which you may find useful include:
      </p>

      <table>
        <tr>
          <th>Name</th>
          <th>Subscribe</th>
          <th>Unsubscribe</th>
          <th>Post</th>
          <th>Archive</th>
          <th>Other Archives</th>
        </tr>
        <tr>
          <td>
            <strong>Apache Announce List</strong>
            <br /><br />
            General announcements of Apache project releases.
            <br /><br />
          </td>
          <td><a class="externalLink" href="mailto:announce-subscribe@apache.org">Subscribe</a></td>
          <td><a class="externalLink" href="mailto:announce-unsubscribe@apache.org">Unsubscribe</a></td>
          <td><i>read only</i></td>
          <td><a class="externalLink" href="https://mail-archives.apache.org/mod_mbox/www-announce/">mail-archives.apache.org</a></td>
          <td><a class="externalLink" href="http://markmail.org/list/org.apache.announce/">markmail.org</a><br />
              <a class="externalLink" href="http://old.nabble.com/Apache-News-and-Announce-f109.html">old.nabble.com</a><br />
              <a class="externalLink" href="http://www.mail-archive.com/announce@apache.org/">www.mail-archive.com</a><br />
              <a class="externalLink" href="http://news.gmane.org/gmane.comp.apache.announce">news.gmane.org</a>
          </td>
        </tr>
      </table>

    </section>
  </body>
</document>
