<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en">
<head>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<title>Apache JMeter
          -
          Mailing Lists</title>
<meta name="author" value="Apache JMeter Project">
<meta name="email" value="dev.AT.jmeter.DOT.apache.DOT.org">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./css/new-style.css">
<link rel="apple-touch-icon-precomposed" href="./images/apple-touch-icon.png">
<link rel="icon" href="./images/favicon.png">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="./images/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
</head>
<body role="document">
<a href="#content" class="hidden">Main content</a>
<div class="header">
<!--
            APACHE LOGO
          -->
<div>
<a href="https://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="./images/asf-logo.svg" alt="Logo ASF"></a>
</div>
<!--
              PROJECT LOGO
            -->
<div>
<a href="https://jmeter.apache.org/"><img class="logo" src="./images/logo.svg" alt="Apache JMeter"></a>
</div>
<div class="banner">
<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a>
<div class="clear"></div>
</div>
</div>
<div class="nav">
<ul class="menu">
<li onClick="return true">
<div class="menu-title">About</div>
<ul>
<li>
<a href="./index.html">Overview</a>
</li>
<li>
<a href="https://www.apache.org/licenses/">License</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Download</div>
<ul>
<li>
<a href="./download_jmeter.cgi">Download Releases</a>
</li>
<li>
<a href="./changes.html">Release Notes</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Documentation</div>
<ul>
<li>
<a href="./usermanual/get-started.html">Get Started</a>
</li>
<li>
<a href="./usermanual/index.html">User Manual</a>
</li>
<li>
<a href="./usermanual/best-practices.html">Best Practices</a>
</li>
<li>
<a href="./usermanual/component_reference.html">Component Reference</a>
</li>
<li>
<a href="./usermanual/functions.html">Functions Reference</a>
</li>
<li>
<a href="./usermanual/properties_reference.html">Properties Reference</a>
</li>
<li>
<a href="./changes_history.html">Change History</a>
</li>
<li>
<a href="./api/index.html">Javadocs</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Tutorials</div>
<ul>
<li>
<a href="./usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a>
</li>
<li>
<a href="./usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a>
</li>
<li>
<a href="./usermanual/junitsampler_tutorial.html">JUnit Sampler</a>
</li>
<li>
<a href="./usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a>
</li>
<li>
<a href="./usermanual/jmeter_tutorial.html">Extending JMeter</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Community</div>
<ul>
<li>
<a href="./issues.html">Issue Tracking</a>
</li>
<li>
<a href="https://www.apache.org/security/">Security</a>
</li>
<li>
<a href="./mail.html">Mailing Lists</a>
</li>
<li>
<a href="./svnindex.html">Source Repositories</a>
</li>
<li>
<a href="./building.html">Building and Contributing</a>
</li>
<li>
<a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterCommitters">Contributors</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Foundation</div>
<ul>
<li>
<a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a>
</li>
<li>
<a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a>
</li>
<li>
<a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</li>
</ul>
</div>
<div class="main" id="content">
<div class="social-media">
<ul class="social-media-links">
<li class="twitter">
<a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a>
</li>
<li class="github">
<a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a>
</li>
</ul>
</div>
<div class="section">
<h1>Mailing Lists - Guidelines</h1>

<p>

<strong>Before subscribing to any of the mailing lists, please make sure that you have
read and understand the <a href="mail.html">guidelines</a></strong>.
</p>


<p>
Please note that usage of these mailing lists is subject to the
<a href="http://www.apache.org/foundation/public-archives.html">Public Forum Archive Policy</a>.
</p>


<p>
For details of how to subscribe/unsubscribe please read
<a href="http://www.apache.org/foundation/mailinglists.html#subscribing">Subscribing and Unsubscribing</a>

</p>


</div>
<div class="section">
<h1>JMeter lists and archives at the ASF</h1>

<p>
The following mailing lists are available:
</p>

<div class="subsection">
<h2 id="JMeterUser">Apache JMeter User<a class="sectionlink" href="#JMeterUser" title="Link to here">&para;</a>
</h2>

<p>
This is the list where users of Apache JMeter meet and discuss issues. 
</p>

<p>
Developers are also expected to be lurking on this list to offer support to users of JMeter.
</p>

<p>
This list starts part-way through Nov 2011, when JMeter became an independent Apache project.
For old postings, please see the Jakarta JMeter User list, below.
</p>

<ul>

<li>Subscribe at <a href="mailto:user-subscribe@jmeter.apache.org">user-subscribe@jmeter.apache.org</a>
</li>

<li>Send your message to: <a href="mailto:user@jmeter.apache.org">user@jmeter.apache.org</a> (after the subscription process)</li>

<li>Unsubscribe at <a href="mailto:user-unsubscribe@jmeter.apache.org">user-unsubscribe@jmeter.apache.org</a>
</li>

<li>Archives at <a href="http://mail-archives.apache.org/mod_mbox/jmeter-user/">jmeter-user Archive</a>
</li>

</ul>

</div>

<div class="subsection">
<h2 id="JMeterDev">Apache JMeter Developer<a class="sectionlink" href="#JMeterDev" title="Link to here">&para;</a>
</h2>

<p>
This is the list where participating developers meet and discuss issues, code changes/additions etc.
</p>

<div class="clear"></div>
<div class="note">Please do not send usage questions to this list, see user list above.</div>
<div class="clear"></div>

<p>
This list also collects Wiki update messages.
</p>

<p>
This list starts part-way through Nov 2011, when JMeter became an independent Apache project.
For earlier postings, please see below.
</p>

<ul>

<li>Subscribe at <a href="mailto:dev-subscribe@jmeter.apache.org">dev-subscribe@jmeter.apache.org</a>
</li>

<li>Send your message to: <a href="mailto:dev@jmeter.apache.org">dev@jmeter.apache.org</a> (after the subscription process)</li>

<li>Unsubscribe at <a href="mailto:dev-unsubscribe@jmeter.apache.org">dev-unsubscribe@jmeter.apache.org</a>
</li>

<li>Archives at <a href="http://mail-archives.apache.org/mod_mbox/jmeter-dev/">jmeter-dev Archive</a>
</li>

</ul>

</div>

<div class="subsection">
<h2 id="JMeterCommits">Apache JMeter Commits<a class="sectionlink" href="#JMeterCommits" title="Link to here">&para;</a>
</h2>

<p>
SVN commit messages are sent here.
</p>
Prior to Nov 2011, they were sent to the Jakarta Notifications list, see below. 
<ul>

<li>Subscribe at <a href="mailto:commits-subscribe@jmeter.apache.org">commits-subscribe@jmeter.apache.org</a>
</li>

<li>Unsubscribe at <a href="mailto:commits-unsubscribe@jmeter.apache.org">commits-unsubscribe@jmeter.apache.org</a>
</li>

<li>Archives at <a href="http://mail-archives.apache.org/mod_mbox/jmeter-commits/">jmeter-commits Archive</a>
</li>

</ul>

</div>

<div class="subsection">
<h2 id="JMeterIssues">Apache JMeter Issues<a class="sectionlink" href="#JMeterIssues" title="Link to here">&para;</a>
</h2>

<p>

<a href="https://bz.apache.org/bugzilla/">Bugzilla</a> messages are sent here.
</p>

<p>
Prior to Nov 2011, they were sent to the Jakarta Notifications list, see below.
</p> 


<ul>

<li>Subscribe at <a href="mailto:issues-subscribe@jmeter.apache.org">issues-subscribe@jmeter.apache.org</a>
</li>

<li>Unsubscribe at <a href="mailto:issues-unsubscribe@jmeter.apache.org">issues-unsubscribe@jmeter.apache.org</a>
</li>

<li>Archives at <a href="http://mail-archives.apache.org/mod_mbox/jmeter-issues/">jmeter-issues Archive</a>
</li>

</ul>

</div>

<div class="subsection">
<h2 id="JakartaDev">Jakarta Developer<a class="sectionlink" href="#JakartaDev" title="Link to here">&para;</a>
</h2>

<p>Combined Jakarta developer list, April 2010 to November 2011</p>

<ul>

<li>Archives at <a href="http://mail-archives.apache.org/mod_mbox/jakarta-dev/">jakarta-dev Archive</a>
</li>

</ul>

</div>

<div class="subsection">
<h2 id="JakartaJMeterUser">Jakarta JMeter User<a class="sectionlink" href="#JakartaJMeterUser" title="Link to here">&para;</a>
</h2>
This is the old JMeter user list from when JMeter was a sub-project of Apache Jakarta.
<ul>

<li>Archives at <a href="http://mail-archives.apache.org/mod_mbox/jakarta-jmeter-user/">jakarta-jmeter-user Archive</a>
</li>
</ul>

</div>

<div class="subsection">
<h2 id="JakartaJMeterDev">Jakarta JMeter Developer<a class="sectionlink" href="#JakartaJMeterDev" title="Link to here">&para;</a>
</h2>
Historical list, up to April 2010.
<ul>

<li>Archives at <a href="http://mail-archives.apache.org/mod_mbox/jakarta-jmeter-dev/">jakarta-jmeter-dev Archive</a>
</li>

</ul>

</div>

<div class="subsection">
<h2 id="JakartaNotif">Jakarta Notifications<a class="sectionlink" href="#JakartaNotif" title="Link to here">&para;</a>
</h2>
Combined Jakarta notifications to November 2011.
Includes Bugzilla, SVN and Wiki commit mails for JMeter.
<ul>

<li>Archives at <a href="http://mail-archives.apache.org/mod_mbox/jakarta-notifications/">jakarta-notifications Archive</a>
</li>

</ul>

</div>

</div>
<div class="section">
<h1>Other Archives and Searching</h1>

<p>
There are several 3<sup>rd</sup> party sites that archive and provide searching for our mailing lists:
</p>

<p>

<ul>

<li>
<a href="http://jmeter.markmail.org/">Mark Mail</a> 
</li>

<li>
<a href="http://www.mail-archive.com/">mail-archive.com</a> 
</li>

</ul>

</p>

</div>
<div class="share-links">
      Share this page:
      <ul>
<li class="fb">
<a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a>
</li>
<li class="twitter">
<a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a>
</li>
</ul>
</div>
<a href="#top" id="topButton">Go to top</a>
</div>
<div class="footer">
<div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2019
            , Apache Software Foundation
          </div>
<div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
            feather, and the Apache JMeter logo are
            trademarks of the
            Apache Software Foundation.
          </div>
</div>
<script>(function(){
            "use strict";
            // enable 'go to top' button functionality
            document.addEventListener('scroll', function() {
                if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
                    document.getElementById("topButton").style.display = "block";
                } else {
                    document.getElementById("topButton").style.display = "none";
                }
            });
            // fill in the current location into social links on this page.
            var as = document.getElementsByTagName('a');
            var loc = document.location.href;
            if (!loc.toLowerCase().startsWith('http')) {
                return;
            }
            for (var i=0; i<as.length; i++) {
                var href = as[i].getAttribute('data-social-url');
                if (href !== null) {
                    as[i].href = href + encodeURIComponent(loc);
                }
            }
        })();</script>
</body>
</html>
