<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>Apache Cassandra | Apache Cassandra Documentation</title>
    <link rel="stylesheet" href="../../assets/css/site.css">
    <meta name="description" content="Apache Cassandra World Party Moderators and Schedule">
    <meta name="keywords" content="apache cassandra, world party, cassandra world party, CWP, 2022, schedule, moderator">
    <link rel="schema.dcterms" href="https://purl.org/dc/terms/">
    <meta name="dcterms.subject" content="_">
    <meta name="dcterms.identifier" content="master">
    <meta name="generator" content="Antora 2.3.4">
    <link rel="icon" href="../../assets/img/favicon.ico" type="image/x-icon">
<script>
  const script = document.createElement("script");
  const domain = window.location.hostname;
  script.type = "text/javascript";
  script.src = "https://plausible.cassandra.apache.org/js/plausible.js";
  script.setAttribute("data-domain",domain);
  script.setAttribute("defer",'true');
  script.setAttribute("async",'true');
  document.getElementsByTagName("head")[0].appendChild(script);
</script>  </head>
  <body class="single-post">
      <div class="container mx-auto relative">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <meta property="og:type" content="website" />
	<meta property="og:description" content="" />
	<meta property="og:url" content="/" />
	<meta property="og:site_name" content="Apache Cassandra" />

<header id="top-nav">
    <div class="inner relative">
        <div class="header-social-icons text-right">
            <a href="https://twitter.com/cassandra?lang=en" target="_blank" styles="margin-left: 20px;"><img src="../../assets/img/twitter-icon-circle-white.svg" alt="twitter icon" width="24"></a>
            <a href="https://www.linkedin.com/company/apache-cassandra/"  target="_blank" styles="margin-left: 20px;"><img src="../../assets/img/LI-In-Bug.png" alt="linked-in icon" width="24"></a>
            <a href="https://www.youtube.com/c/PlanetCassandra" target="_blank" styles="margin-left: 20px;"><img src="../../assets/img/youtube-icon.png" alt="youtube icon" width="24"></a>
        </div>
        <div class="cf">
            <div class="logo left"><a href="/"><img src="../../assets/img/logo-white-r.png" alt="cassandra logo"></a></div>
            <div class="mobile-nav-icon right">
                <img class="toggle-icon" src="../../assets/img/hamburger-nav.svg">
            </div>
            <ul class="main-nav nav-links right flex flex-vert-center flex-space-between">
    <li>
        <a class="nav-link hide-mobile">Get Started</a>
        <ul class="sub-menu bg-white">
            <li class="pa-micro">
                <a href="/_/cassandra-basics.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-basics.png" alt="cassandra basics icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Cassandra Basics
                    </div>
                </a>
            </li>
            <li class="pa-micro">
                <a href="/_/quickstart.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-rocket.png" alt="cassandra basics icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Quickstart
                    </div>
                </a>
            </li>
            <li class="pa-micro">
                <a href="/_/ecosystem.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-ecosystem.png" alt="cassandra basics icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Ecosystem
                    </div>
                </a>
            </li>
        </ul>
    </li>
    <li><a class="nav-link" href="/doc/latest/">Documentation</a></li>
    <li>
        <a class="nav-link" href="/_/community.html">Community</a>
        <ul class="sub-menu bg-white">
            <li class="pa-micro">
                <a href="/_/community.html#code-of-conduct">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-welcome.png" alt="welcome icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Welcome
                    </div>
                </a>
            </li>
            <li class="pa-micro hide-mobile">
                <a href="/_/community.html#discussions">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-discussions.png" alt="discussions icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Discussions
                    </div>
                </a>
            </li>
            <li class="pa-micro hide-mobile">
                <a href="/_/community.html#project-governance">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-governance.png" alt="Governance icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Governance
                    </div>
                </a>
            </li>
            <li class="pa-micro hide-mobile">
                <a href="/_/community.html#how-to-contribute">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-contribute.png" alt="Contribute icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Contribute
                    </div>
                </a>
            </li>
            <li class="pa-micro hide-mobile">
                <a href="/_/community.html#meet-the-community">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-community.png" alt="Meet the Community icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Meet the Community
                    </div>
                </a>
            </li>
            <li class="pa-micro hide-mobile">
                <a href="/_/cassandra-catalyst-program.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-catalyst.png" alt="Catalyst icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Catalyst Program
                    </div>
                </a>
            </li>
            <li class="pa-micro hide-mobile">
                <a href="/_/events.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-events.png" alt="Events icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Events
                    </div>
                </a>
            </li>
        </ul>
    </li>
    <li>
        <a class="nav-link hide-mobile">Learn</a>
        <ul class="sub-menu bg-white">
            <li class="pa-micro">
                <a href="/_/Apache-Cassandra-5.0-Moving-Toward-an-AI-Driven-Future.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-basics.png" alt="Basics icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Cassandra 5.0
                    </div>
                </a>
            </li>
            <li class="pa-micro">
                <a href="/_/case-studies.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-case-study.png" alt="Case Studies icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Case Studies
                    </div>
                </a>
            </li>
            <li class="pa-micro">
                <a href="/_/resources.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-resources.png" alt="Resources icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Resources
                    </div>
                </a>
            </li>
            <li class="pa-micro">
                <a href="/_/blog.html">
                    <div class="sub-nav-icon">
                        <img src="../../assets/img/sub-menu-blog.png" alt="Blog icon">
                    </div>
                    <div class="sub-nav-text teal py-small">
                        Blog
                    </div>
                </a>
            </li>
        </ul>
    </li>
    <li><a class="nav-link btn btn--filled" href="/_/download.html">Download Now</a></li>
</ul>
        </div>
    </div>
</header>

        <div class="hero hero--home grad">
            <div class="eye"></div>
            <div id="home-content" class="text-center flex flex-center flex-column relative z2 ma-xlarge">
                <h1>Last Chance to Register: Schedule &amp; Moderators Announced</h1>
                <h3>July 15, 2022 | Cassandra Community</h3>
            </div>
        </div>
        <div id="blog-post" class="flex-center py-large arrow">
            <div class="blog-breadcrumb mb-medium">
                <div class="inner inner--narrow">
                    <a href="/_/blog.html">« Back to the Apache Cassandra Blog</a>
                </div>
            </div>
            <div class="post-content">
                <div class="inner inner--narrow">
                    <div id="preamble">
<div class="sectionbody">
<div class="imageblock">
<div class="content">
<a class="image" href="https://www.cassandraworldparty.org/" target="_blank" rel="noopener"><img src="../_images/blog/apache-cassandra-world-party-logo.png" alt="Apache Cassandra World Party 2022"></a>
</div>
</div>
<div class="paragraph">
<p>The <a href="https://www.cassandraworldparty.org/" target="_blank" rel="noopener">Apache Cassandra World Party (CWP)</a> is this <strong>Wednesday, July 20, 2022</strong>! CWP is a one-day virtual event, held in three time zones, that unites the global community to celebrate the people and the technology behind Apache Cassandra.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="moderators-confirmed"><a class="anchor" href="#moderators-confirmed"></a>Moderators Confirmed</h3>
<div class="paragraph">
<p>The event promises to be a lot of fun with fast and informative talks from the Cassandra community, where speakers are given five minutes and their slides auto-advance every minute whether they’re ready or not. Today, we’re pleased to announce that the moderators for each session will be:</p>
</div>
<div class="paragraph">
<p><strong>1200-1300 UTC:</strong> Jeremy Hanna and Chris Bradford</p>
</div>
<div class="paragraph">
<p><strong>1800-1900 UTC:</strong> Ekaterina Dimitrova and Patrick McFadin</p>
</div>
<div class="paragraph">
<p><strong>0100-0200 UTC</strong> Ben Bromhead and Erick Ramirez</p>
</div>
<div class="paragraph">
<p>To see the full schedule for these sessions, visit <a href="https://www.cassandraworldparty.org/" class="bare">www.cassandraworldparty.org/</a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="local-watch-party-update"><a class="anchor" href="#local-watch-party-update"></a>Local Watch Party Update</h3>
<div class="paragraph">
<p>Unfortunately, we have some sad news to relay. As COVID-19 infection levels have reached a record high in the UK, we have taken the difficult decision to postpone the London Watch Party for the safety of attendees, but UK community members can still gather together online for the virtual event, which will take place between <strong>1800-1900 UTC</strong>.</p>
</div>
<div class="paragraph">
<p>If you <a href="https://5iwm1iun629.typeform.com/to/R9eTh906?typeform-source=www.cassandraworldparty.org" target="_blank" rel="noopener">register</a> for CWP updates, we will provide details of the future Cassandra event as soon as they have been confirmed.</p>
</div>
<div class="paragraph">
<p>We would like to thank our official sponsors for this year’s Apache Cassandra World Party: <a href="https://axonops.com" target="_blank" rel="noopener"><strong>AxonOps</strong></a> and <a href="https://datastax.com/" target="_blank" rel="noopener"><strong>DataStax</strong></a>.</p>
</div>
<div class="paragraph">
<p><span class="image"><a class="image" href="https://axonops.com" target="_blank" rel="noopener"><img src="../_images/blog/CWP-sponsors/axonops.svg" alt="AxonOps" width="300"></a></span></p>
</div>
<div class="paragraph">
<p><span class="image"><a class="image" href="https://www.datastax.com/" target="_blank" rel="noopener"><img src="../_images/blog/CWP-sponsors/datastax.png" alt="DataStax" width="300"></a></span></p>
</div>
<div class="paragraph">
<p>Learn more about the imminent release of Apache Cassandra 4.1 by heading to the <a href="../blog.html" class="page">official blog</a>, where you’ll find a series of articles on the forthcoming features.</p>
</div>
</div>
                </div>
            </div>
        </div>
        <footer class="grad grad--two flex-center pb-xlarge">
    <div class="inner text-center z2 relative">
        <h2 class="white py-small">Get started with Cassandra, fast.</h2>
        <a id="footer-cta" href="/_/quickstart.html" class="btn btn--filled ma-medium">Quickstart Guide</a>
    </div>
    <div class="inner flex flex-distribute-items mt-xlarge z2 relative">
        <div class="col-2">
            <div id="footer-logo" class="logo logo--footer mb-medium"><img src="../../assets/img/logo-white-r.png" alt="Cassandra Logo"></div>
            <p>Apache Cassandra<img src="../../assets/img/registered.svg" alt="®" style="width:18px;"> powers mission-critical deployments with improved performance and unparalleled levels of scale in the cloud.</p>
            <div class="footer-social-icons">
                <a href="https://twitter.com/cassandra?lang=en" target="_blank"><img src="../../assets/img/twitter-icon-circle-white.svg" alt="twitter icon" width="24"></a>
                <a href="https://www.linkedin.com/company/apache-cassandra/" target="_blank"><img src="../../assets/img/LI-In-Bug.png" alt="linked-in icon" width="24"></a>
                 <a href="https://www.youtube.com/c/PlanetCassandra" target="_blank"><img src="../../assets/img/youtube-icon.png" alt="youtube icon" width="24"></a>
            </div>
        </div>
        <div class="col-2 flex flex-center">
            <ul class="columns-2">
                <li class="mb-small"><a href="/">Home</a></li>
                <li class="mb-small"><a href="/_/cassandra-basics.html">Cassandra Basics</a></li>
                <li class="mb-small"><a href="/_/quickstart.html">Quickstart</a></li>
                <li class="mb-small"><a href="/_/ecosystem.html">Ecosystem</a></li>
                <li class="mb-small"><a href="/doc/latest/">Documentation</a></li>
                <li class="mb-small"><a href="/_/community.html">Community</a></li>
                <li class="mb-small"><a href="/_/case-studies.html">Case Studies</a></li>
                <li class="mb-small"><a href="/_/resources.html">Resources</a></li>
                <li class="mb-small"><a href="/_/blog.html">Blog</a></li>
            </ul>
        </div>
    </div>
</footer>
<div class="lower-footer bg-white pa-medium">
    <div class="flex flex-row flex-vert-center">
        <div class="pr-medium"><img src="../../assets/img//feather-small.png" alt="ASF" width="20"></div>
        <div class="pr-medium"><a href="http://www.apache.org/" target="_blank">Foundation</a></div>
        <div class="pr-medium"><a href="https://www.apache.org/events/current-event.html" target="_blank">Events</a></div>
        <div class="pr-medium"><a href="https://www.apache.org/licenses/" target="_blank">License</a></div>
        <div class="pr-medium"><a href="https://www.apache.org/foundation/thanks" target="_blank">Thanks</a></div>
        <div class="pr-medium"><a href="https://www.apache.org/security" target="_blank">Security</a></div>
        <div class="pr-medium"><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank">Privacy</a></div>
        <div class="pr-medium"><a href="https://www.apache.org/foundation/sponsorship" target="_blank">Sponsorship</a></div>
    </div>
    <p class="my-medium">© 2009-<script>document.write(new Date().getFullYear())</script> <a href="https://apache.org" target="_blank">The Apache Software Foundation</a> under the terms of the Apache License 2.0.  Apache, the Apache feather logo, Apache Cassandra, Cassandra, and the Cassandra logo, are either registered trademarks or trademarks of The Apache Software Foundation.</p>
</div>
<div id="fade" class="hidden"></div>
<div id="modal" class="hidden">
  <div id="close-modal" class="cursor-pointer"><svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" class="css-i6dzq1"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></div>
  <div id="mod-content" class="vid-mod-content resp-container"></div>
</div>
<script>
jQuery(function(){
    var windowW = $(window).width();
    $(document)
    .on('click','.mobile-nav-icon',function(){
        $('.main-nav').fadeIn();
    })
    .on('click','.main-nav',function(){
        if(windowW <= 1000){
            $(this).fadeOut();
        }
    })
    .on('click','#version-toggle',function(){
      $(this).toggleClass('active');
      $(this).next().fadeToggle();
    })
    .on('click','#mobile-docs-nav-burger', function(){
      $(this).toggleClass('active');
      $('.docs-nav').toggleClass('active');
    });
    var url = window.location.pathname;
    var isQuickstart = url.includes('quickstart.html');
    if(isQuickstart){
      var footerCTA = document.getElementById('footer-cta');
      footerCTA.innerHTML = 'Get latest updates';
      footerCTA.setAttribute('href', '/_/blog.html');
    }
});
</script>
      </div>
  </body>
<script>
jQuery(function(){
    
});
</script>
</html>
