<!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="The Apache Cassandra Community">
    <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>Join Us for Google Summer of Code 2022!</h1>
                <h3>March 8, 2022 | Paulo Motta</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">
<img src="../_images/blog/gsoc2022.png" alt="GSoC 2022">
</div>
</div>
<div class="paragraph">
<p>It’s time to don your shades and sandals! Apache Cassandra will be participating in the Google Summer of Code (GSoc) in 2022 again after a successful project in 2021, and the program itself this year has some changes we are excited to announce.</p>
</div>
<div class="paragraph">
<p>GSoC is a Google-sponsored program that promotes open source development and enables individuals to submit project proposals to open source mentoring organizations and get paid to work on these projects during the Northern Hemisphere&#8217;s summer.</p>
</div>
<div class="paragraph">
<p>The Apache Software Foundation (ASF) has been a <a href="https://community.apache.org/gsoc.html" target="_blank" rel="noopener">GSoC Mentor Organization</a> for the past 17 years and acts as an "umbrella" organization, which means that applicants can submit project proposals to any subproject within the ASF, including Apache Cassandra.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="announcing-gsoc-program-changes-this-year"><a class="anchor" href="#announcing-gsoc-program-changes-this-year"></a>Announcing GSoC Program Changes this Year</h3>
<div class="paragraph">
<p>Previously, the program has only been open to post-secondary students, such as university students or recent graduates, but this year it will be open to <strong>anyone 18 years and older</strong> who is an <strong>open source newcomer</strong>.</p>
</div>
<div class="paragraph">
<p>GSoC has recognized that the program can benefit anyone at various stages of their career, and that includes people changing careers, those who are self-taught, and those returning to the workforce and more. The goal is to create a starting point for anyone who isn’t sure how to get started in open source or uncertain whether open source communities would welcome their contributions.</p>
</div>
<div class="paragraph">
<p>You can find more details about the program on the official <a href="https://summerofcode.withgoogle.com/programs/2022" target="_blank" rel="noopener">GSoC</a> website, including information on stipends.</p>
</div>
</div>
<div class="sect2">
<h3 id="announcing-apache-cassandra-gsoc-project-ideas"><a class="anchor" href="#announcing-apache-cassandra-gsoc-project-ideas"></a>Announcing Apache Cassandra GSoC Project Ideas</h3>
<div class="paragraph">
<p>The following <a href="https://issues.apache.org/jira/browse/CASSANDRA-17381?jql=project%20%3D%20CASSANDRA%20AND%20labels%20in%20(gsoc2022%2C%20gsoc22)">project ideas</a> are available this year in Apache Cassandra for Google Summer of Code:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="https://issues.apache.org/jira/browse/CASSANDRA-17380" target="_blank" rel="noopener">Add support to EXPLAIN (CASSANDRA-17380)</a>.</p>
<div class="paragraph">
<p>Mentor: Benjamin Lerer</p>
</div>
<div class="paragraph">
<p>A project for adding functionality to CQL so that it supports EXPLAIN, which provides users with a way to understand how their query will be executed and some information on the amount of work that will be performed. For more details please refer to <a href="https://docs.google.com/document/d/1s_gc4TDYdDbHnYHHVxxjqVVUn3MONUqG6W2JehnC11g/edit" target="_blank" rel="noopener">Cassandra Enhanced Proposal (CEP) draft 4</a>.</p>
</div>
</li>
<li>
<p><a href="https://issues.apache.org/jira/browse/CASSANDRA-17381" target="_blank" rel="noopener">Produce and verify BoundedReadCompactionStrategy as a unified general purpose compaction algorithm (CASSANDRA-17381)</a></p>
<div class="paragraph">
<p>Mentor: Joey Lynch</p>
</div>
<div class="paragraph">
<p>In this project the contributor will perform validation and make the necessary code changes required to introduce a new compaction strategy in Cassandra. The prior knowledge required to complete this task are Java programming skills, and optimization algorithm skillsets would be useful. Prior experience with Cassandra is helpful but not needed as compaction is a somewhat isolated part of the code base that can be independently tested and even published as separate jars as compaction strategies are pluggable.</p>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>You are welcome to propose other projects if they’re not on this list.</p>
</div>
</div>
<div class="sect2">
<h3 id="how-to-get-involved"><a class="anchor" href="#how-to-get-involved"></a>How to get involved</h3>
<div class="paragraph">
<p>If you are interested in contributing to Apache Cassandra during GSoC, please join the <strong>#cassandra-gsoc</strong> room on <a href="https://infra.apache.org/slack.html" target="_blank" rel="noopener">Slack</a> and introduce yourself!</p>
</div>
<div class="paragraph">
<p>Potential mentors will give you initial instructions on how to get started and suggest you some warm-up tasks.</p>
</div>
<div class="sect3">
<h4 id="getting-started-with-apache-cassandra-development"><a class="anchor" href="#getting-started-with-apache-cassandra-development"></a>Getting Started With Apache Cassandra Development</h4>
<div class="paragraph">
<p>The best way to get started if you&#8217;re new to Apache Cassandra is to get acquainted with the project&#8217;s <a href="/doc/latest/index.html">documentation</a> and set up a local <a href="../development/ide.html" class="page">development environment</a>.</p>
</div>
<div class="paragraph">
<p>Play around with a locally running instance via <a href="/doc/latest/cassandra/tools/cqlsh.html">cqlsh</a> and <a href="/doc/latest/cassandra/tools/nodetool/nodetool.html">nodetool</a> to get a feel for how to use the database.</p>
</div>
<div class="paragraph">
<p>If you run into problems or roadblocks during this exercise, don&#8217;t be shy to ask questions on <strong>#cassandra-gsoc</strong>.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="google-summer-of-code-tips"><a class="anchor" href="#google-summer-of-code-tips"></a>Google Summer of Code Tips</h3>
<div class="paragraph">
<p>There are many good resources on the web on preparing for GSoC, particularly the <a href="https://community.apache.org/gsoc.html" target="_blank" rel="noopener">ASF GSoC Guide</a> and the Python community notes on <a href="https://wiki.python.org/moin/SummerOfCode/Expectations" target="_blank" rel="noopener">GSoC expectations</a>.</p>
</div>
<div class="paragraph">
<p>The best GSoC participants are self-motivated and proactive, and following the tips above should increase your chances of getting selected and delivering your project successfully. Good luck!</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>
