<!DOCTYPE html>
<html>
  



<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="description" content="The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages.
">
  <meta name="keywords" content="cassandra, apache, apache cassandra, distributed storage, key value store, scalability, bigtable, dynamo" />
  <meta name="robots" content="index,follow" />
  <meta name="language" content="en" />  

  <title>Community</title>

  <link rel="canonical" href="http://cassandra.apache.org/community/">

  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
  <link rel="stylesheet" href="./../css/style.css">
  

  
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">
  
  <link type="application/atom+xml" rel="alternate" href="http://cassandra.apache.org/feed.xml" title="Apache Cassandra Website" />
</head>

  <body>
    <!-- breadcrumbs -->
<div class="topnav">
  <div class="container breadcrumb-container">
    <ul class="breadcrumb">
      <li>
        <div class="dropdown">
          <img class="asf-logo" src="./../img/asf_feather.png" />
          <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
            <li><a href="http://www.apache.org">Apache Homepage</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="http://www.apache.org/security/">Security</a></li>
          </ul>
        </div>
      </li>

      
      <li><a href="./../">Apache Cassandra</a></li>
      

      
        
        <li>Community</li>
        
      

      

      
    </ul>
  </div>

  <!-- navbar -->
  <nav class="navbar navbar-default navbar-static-top" role="navigation">
    <div class="container">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#cassandra-menu" 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="./../img/cassandra_logo.png" alt="Apache Cassandra logo" /></a>
      </div><!-- /.navbar-header -->

      <div id="cassandra-menu" class="collapse navbar-collapse">
        <ul class="nav navbar-nav navbar-right">
          <li><a href="./../">Home</a></li>
          <li><a href="./../download/">Download</a></li>
          <li><a href="./../doc/latest/">Documentation</a></li>
          <li><a href="./../community/">Community</a></li>
          <li>
            <a href="./../blog/">Blog</a>
        </li>
        </ul>
      </div><!-- /#cassandra-menu -->

      
    </div>
  </nav><!-- /.navbar -->
</div><!-- /.topnav -->

    <div class="content">
  <div class="container">
  <h2 id="community">Community</h2>

<h3 id="getting-and-keeping-in-touch">Getting and keeping in touch</h3>

<h4 id="mailing-lists">Mailing lists<a name="mailing"></a></h4>

<p>Discussion and questions on Cassandra’s usage and development happens mainly on the following mailing lists:</p>

<ul>
  <li><a href="http://www.mail-archive.com/user@cassandra.apache.org/">Users</a>: General mailing list for user questions and discussions. This is also where new releases are announced
(<a href="mailto:user-subscribe@cassandra.apache.org">subscribe</a> | <a href="mailto:user-unsubscribe@cassandra.apache.org">unsubscribe</a> | <a href="https://lists.apache.org/list.html?user@cassandra.apache.org">Archives</a>).</li>
  <li><a href="http://www.mail-archive.com/dev@cassandra.apache.org/">Developers</a>: Questions and discussions related to Cassandra development
(<a href="mailto:dev-subscribe@cassandra.apache.org">subscribe</a> | <a href="mailto:dev-unsubscribe@cassandra.apache.org">unsubscribe</a> | <a href="https://lists.apache.org/list.html?dev@cassandra.apache.org">Archives</a>).</li>
  <li><a href="http://www.mail-archive.com/commits@cassandra.apache.org/">Commits</a>: Notification on commits done to the source
repository and on <a href="https://issues.apache.org/jira/browse/CASSANDRA">JIRA</a> updates. This is a fairly noisy mailing list
mostly useful for Cassandra developers and those who would like to keep close tabs on Cassandra’s development
(<a href="mailto:commits-subscribe@cassandra.apache.org">subscribe</a> | <a href="mailto:commits-unsubscribe@cassandra.apache.org">unsubscribe</a> | <a href="https://lists.apache.org/list.html?commits@cassandra.apache.org">Archives</a>).</li>
</ul>

<h4 id="slack">Slack</h4>

<p>We have recently moved to the ASF Slack organization for all chat.  Please <a href="https://s.apache.org/slack-invite">sign up for an account</a> to participate.</p>

<ul>
  <li><code class="highlighter-rouge">#cassandra</code> - for user questions and general discussions.</li>
  <li><code class="highlighter-rouge">#cassandra-dev</code> - strictly for questions or discussions related to Cassandra development.</li>
</ul>

<h4 id="irc">IRC<a name="irc"></a></h4>

<p><em>Note</em>: Most discussion has been moved to the above Slack channels.</p>

<ul>
  <li><code class="highlighter-rouge">#cassandra-dev</code> - strictly for questions or discussions related to Cassandra development.</li>
  <li><code class="highlighter-rouge">#cassandra-builds</code> - results of automated test builds.</li>
</ul>

<p>Communication on the <code class="highlighter-rouge">#cassandra-dev</code> channel is <a href="http://wilderness.apache.org/channels/#logs-#cassandra-dev">publicly archived</a>.</p>

<h3 id="stack-overflow">Stack Overflow</h3>

<p>You can also check the <a href="http://stackoverflow.com/questions/tagged/cassandra">Q&amp;A about using Cassandra</a> on Stack
Overflow.</p>

<h3 id="books-and-publications">Books and Publications</h3>

<ul>
  <li><a href="http://shop.oreilly.com/product/0636920299837.do">Cassandra: The Definitive Guide, 3rd Edition</a>, by Jeff Carpenter and Eben Hewitt. Updated for Cassandra 4.0</li>
  <li><a href="https://www.amazon.com/Mastering-Apache-Cassandra-Nishant-Neeraj/dp/1784392618/">Mastering Apache Cassandra, 2nd Edition</a>, by Nishant Neeraj</li>
  <li><a href="https://www.amazon.com/Learning-Apache-Cassandra-Tolerant-Real-Time/dp/1783989203/">Learning Apache Cassandra - Manage Fault Tolerant and Scalable Real-Time Data</a>, by Mat Brown</li>
  <li><a href="https://dl.acm.org/citation.cfm?id=1773922">Cassandra: a decentralized structured storage system</a>, by Avinash Lakshman and Prashant Malik</li>
</ul>

<h3 id="reporting-bugs">Reporting bugs</h3>

<p>If you encounter a problem with Cassandra, the first places to ask for help are the <a href="#mailing">user mailing list</a>
and the <code class="highlighter-rouge">#cassandra</code> <a href="#irc">IRC channel</a>.</p>

<p>If, after having asked for help, you suspect that you have found a bug in Cassandra, you should report it by opening a
ticket through the <a href="https://issues.apache.org/jira/browse/CASSANDRA">Apache Cassandra JIRA</a>. Please provide as much
details as you can on your problem, and don’t forget to indicate which version of Cassandra you are running and on which
environment.</p>

  </div>
</div>

    <hr />

<footer>
  <div class="container">
    <div class="col-md-4 social-blk">
      <span class="social">
        <a href="https://twitter.com/cassandra"
           class="twitter-follow-button"
           data-show-count="false" data-size="large">Follow @cassandra</a>
        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
        <a href="https://twitter.com/intent/tweet?button_hashtag=cassandra"
           class="twitter-hashtag-button"
           data-size="large"
           data-related="ApacheCassandra">Tweet #cassandra</a>
        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>

      </span>
      <a class="subscribe-rss icon-link" href="/feed.xml" title="Subscribe to Blog via RSS">
          <span><i class="fa fa-rss"></i></span>
      </a>
    </div>

    <div class="col-md-8 trademark">
      <p>&copy; 2016 <a href="http://apache.org">The Apache Software Foundation</a>.
      Apache, the Apache feather logo, and Apache Cassandra are trademarks of The Apache Software Foundation.
      <p>
    </div>
  </div><!-- /.container -->
</footer>

<!-- Javascript. Placed here so pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="./../js/underscore-min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>



<script type="text/javascript">
  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
  document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

  try {
    var pageTracker = _gat._getTracker("UA-11583863-1");
    pageTracker._trackPageview();
  } catch(err) {}
</script>


  </body>
</html>
