<html lang="en"><head>
    
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="Apex is an enterprise grade native YARN big data-in-motion platform that unifies stream processing as well as batch processing.">
    <meta name="author" content="Apache Software Foundation">
    <link rel="icon" href="favicon.ico">

    <title>Apache Apex</title>

    <!-- Main Stylesheet -->
    <link href="css/main.css" rel="stylesheet">

    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-85540278-1', 'auto');
      ga('send', 'pageview');
    </script>
    
  </head>

  <body>
    <nav class="navbar navbar-default navbar-static-top" id="main-nav">
      <div class="container">

      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="/">
          <img src="images/apex-logo.svg" class="logo" alt="Apache Apex Logo">
          Apache Apex<span class="trademark">&trade;</span>
        </a>
      </div>

      <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-right navbar-nav">
          <li class="nav-item">
            <a class="nav-link " href="/">Home</a>
          </li>
          <li class="nav-item">
            <a class="nav-link " href="/docs.html">Documentation</a>
          </li>
          <li class="nav-item">
            <a class="nav-link " href="/powered-by-apex.html">Powered By Apex</a>
          </li>
          <li class="nav-item">
            <a class="nav-link " href="/roadmap.html">Roadmap</a>
          </li>

            <li class="nav-item nav-mouseover">
              <ul class="dropdown-menu">
                <li class=""><a href="/community.html#mailing-lists">Mailing Lists</a></li>
                <li class=""><a href="/community.html#issue-tracking">Issue Tracking</a></li>
                <li class=""><a href="http://stackoverflow.com/questions/tagged/apache-apex">Stack Overflow</a></li>
                <li class=""><a href="/community.html#events">Events</a></li>
                <li class=""><a href="/community.html#contributing">Contributing</a></li>
                <li class=""><a href="http://www.apache.org/foundation/how-it-works.html">Apache Foundation</a></li>
              </ul>
              <a href="/community.html" class="nav-link">Community</a>
            </li>
          

            <li class="nav-item nav-mouseover">
              <ul class="dropdown-menu">
                <li class=""><a href="https://github.com/apache/apex-core">Apex Core</a></li>
                <li class=""><a href="https://github.com/apache/apex-malhar">Apex Malhar</a></li>
                <li class=""><a href="https://github.com/apache/apex-site">Apex Site</a></li>
              </ul>
              <a href="https://github.com/apache/apex-core" class="nav-link">Github</a>
            </li>
          
          <li class="nav-item">
            <a class="nav-link btn btn-success btn-download" href="/downloads.html">Download</a>
          </li>
        </ul>
        
      </div>
    </nav>

<div class="container">
  
  <h1 id="community">Community</h1>
<h2 id="mailing-lists">Mailing Lists</h2>
<p>The following mailing lists are available for Apex.</p>
<ul>
<li><a href="https://lists.apache.org/list.html?users@apex.apache.org">users@apex.apache.org</a> is a discussion forum for people who want to build applications and/or solutions using Apex. <a href="mailto:users-subscribe@apex.apache.org?subject=send%20this%20email%20to%20subscribe">subscribe</a>, <a href="mailto:users-unsubscribe@apex.apache.org?subject=send%20this%20email%20to%20unsubscribe">unsubscribe</a>, <a href="https://lists.apache.org/list.html?users@apex.apache.org">ponymail</a>, <a href="https://s.apache.org/apex-users">nabble</a>, <a href="https://mail-archives.apache.org/mod_mbox/apex-users/">archives</a></li>
<li><a href="https://lists.apache.org/list.html?dev@apex.apache.org">dev@apex.apache.org</a> is for people who want to contribute code to Apex. Traffic on the list is generally high and includes JIRA notifications and code review comment. <a href="mailto:dev-subscribe@apex.apache.org?subject=send%20this%20email%20to%20subscribe">subscribe</a>, <a href="mailto:dev-unsubscribe@apex.apache.org?subject=send%20this%20email%20to%20unsubscribe">unsubscribe</a>, <a href="https://lists.apache.org/list.html?dev@apex.apache.org">ponymail</a>, <a href="https://s.apache.org/apex-dev">nabble</a>, <a href="https://mail-archives.apache.org/mod_mbox/apex-dev/">archives</a></li>
<li><a href="https://lists.apache.org/list.html?commits@apex.apache.org">commits@apex.apache.org</a> is for commit messages and patches to Apex. <a href="mailto:commits-subscribe@apex.apache.org?subject=send%20this%20email%20to%20subscribe">subscribe</a>, <a href="mailto:commits-unsubscribe@apex.apache.org?subject=send%20this%20email%20to%20unsubscribe">unsubscribe</a>, <a href="https://lists.apache.org/list.html?commits@apex.apache.org">ponymail</a>, <a href="https://s.apache.org/apex-commits">nabble</a>, <a href="https://mail-archives.apache.org/mod_mbox/apex-commits/">archives</a></li>
<li><a href="mailto:security@apex.apache.org">security@apex.apache.org</a> is for reporting security related issues with Apex. It is a private list to discuss security related issues. Subscription is limited to PMC members and to committers that actively work on security issues. Please post potential security vulnerabilities to this list so that they can be investigated and fixed before the vulnerabilities are published to the public. You can post to the list without subscribing to it.</li>
</ul>
<h2 id="events">Events</h2>
<h3 id="meetup-groups">Meetup Groups</h3>
<p>Meetups are events organized and hosted by community members world-wide. They are a great platform to present the project and use cases. See <a href="http://apache-apex.meetup.com">http://apache-apex.meetup.com</a> to find a meetup in your area.</p>
<h2 id="people">People</h2>
<p><a href="/people.html">List of committers</a></p>
<h2 id="powered-by-apex">Powered By Apex</h2>
<p>List of organizations using Apache Apex is available at <a href="/powered-by-apex.html">Powered by Apex</a>.</p>
<h2 id="contributing">Contributing</h2>
<p>Looking for ideas to get involved? Please see <a href="https://issues.apache.org/jira/issues/?jql=project%20in%20%28APEXCORE%2C%20APEXMALHAR%29%20and%20resolution%20%3D%20Unresolved%20and%20labels%20%3D%20newbie">JIRA tickets for newcomers</a> and pick a ticket. Please also sign up to the dev mailing list and JIRA. </p>
<p><strong>To learn more about contributing to the project, <a href="/contributing.html">check out the contributing guidelines</a>.</strong></p>
<p>For contributions to the Apex Malhar library (operators, connectors etc.), please <a href="/malhar-contributing.html">see these guidelines</a>.</p>
<h2 id="issue-tracking">Issue Tracking</h2>
<ul>
<li><a href="https://issues.apache.org/jira/browse/APEXCORE/">Apex Core JIRA</a></li>
<li><a href="https://issues.apache.org/jira/browse/APEXMALHAR/">Apex Malhar JIRA</a></li>
</ul>
<h3 id="roadmap">Roadmap</h3>
<ul>
<li><a href="roadmap.html">Apex Roadmap</a> comprises key features planned for the future releases</li>
</ul>
<h2 id="release-process">Release Process</h2>
<p>To learn more about the release process for Apex, <a href="/release.html">check out the release guidelines</a>.</p>
<p>To learn more about the release candidate verification for Apex, <a href="/verification.html">check out the verification guidelines</a>.</p>
<h2 id="security-process">Security Process</h2>
<p>To report security vulnerabilities send an email to <a href="mailto:security@apex.apache.org">security@apex.apache.org</a>.</p>
<p>The process for handling security vulnerabilities is the one recommended by Apache, it is described <a href="http://www.apache.org/security/committers.html">here</a>.</p>
<h2 id="project-maturity-model">Project Maturity Model</h2>
<p>To see self assessment of the project, <a href="/maturity.html">check out project maturity model</a></p>

</div>

  <hr>
  <div class="container">
    <footer id="main-footer">
      <p>
        Copyright &copy; <span id="copyright-year">2015</span> <a href="http://apache.org">The Apache Software Foundation</a>,
        Licensed under the Apache License, Version 2.0<br>
        Apache and the Apache feather logo are trademarks of The Apache Software Foundation. | <a href="/privacy.html">Privacy Policy</a><br>
        <a class="footer-link-img" href="http://apache.org"><img src="/images/asf_logo.svg" alt="The Apache Software Foundation"></a>
      </p>
    </footer>
  </div> <!-- /container -->

  <!-- Placed at the end of the document so the pages load faster -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  <script src="/js/bootstrap.min.js"></script>
  <script src="js/docs.js"></script>

  <script>
    $('#copyright-year').text((new Date()).getFullYear());

    $('.btn-download').click(function(e){
      ga('send', {
        hitType: 'event',
        eventCategory: 'Download Button',
        eventAction: 'Button Click',
        eventLabel: 'Page Header'
      });
    });

  </script>

</body>
</html>
