<!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="./security.html">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://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</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="https://lists.apache.org/list.html?user@jmeter.apache.org">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="https://lists.apache.org/list.html?dev@jmeter.apache.org">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="https://lists.apache.org/list.html?commits@jmeter.apache.org">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://github.com/apache/jmeter">GitHub</a> notifications 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="https://lists.apache.org/list.html?issues@jmeter.apache.org">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="https://lists.apache.org/list.html?dev@jakarta.apache.org">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="https://lists.apache.org/list.html?jmeter-user@jakarta.apache.org">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="https://lists.apache.org/list.html?jmeter-dev@jakarta.apache.org">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="https://lists.apache.org/list.html?notifications@jakarta.apache.org">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;
            2024
            , 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>
