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 this year has some changes we are excited to announce.
GSoC is a Google-sponsored program that promotes open source development and enables individuals to submit project proposals to open source mentor organizations. Applicants whose proposals are accepted get paid to work on their project during the Northern Hemisphere's summer. The Apache Software Foundation (ASF) has been a GSoC mentor organization for the past 17 years. It acts as an umbrella organization, which means that applicants can submit project proposals to any subproject within the ASF, including Apache Cassandra.
Last year I was a mentor, and I found that being able to switch hats and look at the program from a different perspective was invaluable. Back in 2013, I participated in my first GSoC as a student, so it is not far from the truth to say that I am a good example of how well GSOC can work! Once I dipped my toes into open source, I was immediately hooked. Even if you do not gain committer status in your first GSoC project, the exposure to the world of open source will help to get you there eventually.
Big changes to GSoC eligibility
Previously, the program was open only to post-secondary students, such as university students or recent graduates. This year, however, it will be open to anyone 18 years old or older who is an open source newcomer.
GSoC recognizes that the program can benefit anyone at various stages of their career, including people changing careers, those who are self-taught, those returning to the workforce, and more. The goal is to create a starting point for anyone who is not sure how to get started in open source or uncertain whether open source communities would welcome their contributions.
You can find more details about the program on the official GSoC website, including information on stipends.
Apache Cassandra GSoC project ideas
Currently, we have two project ideas with appointed mentors, but you are welcome to propose other projects.
Add support to EXPLAIN (CASSANDRA-17380)
Mentor: Benjamin Lerer
This is a project for adding functionality to CQL so that it supports
EXPLAIN statements, which provide 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, see Cassandra Enhanced Proposal (CEP) draft 4.
Produce and verify BoundedReadCompactionStrategy as a unified general-purpose compaction algorithm (CASSANDRA-17381)
Mentor: Joey Lynch
This project focuses on performing validation and making the necessary code changes to introduce a new compaction strategy in Cassandra. You'll need prior knowledge in Java programming, and algorithm optimization skillsets would be useful too. Previous experience with Cassandra is helpful but not required. Compaction is a somewhat isolated part of the codebase that can be independently tested and even published as separate jars as compaction strategies are pluggable.
How to get involved
If you are interested in contributing to Apache Cassandra during GSoC, please join the #cassandra-gsoc room on Slack and introduce yourself! Potential mentors will give you initial instructions on how to get started and suggest some warm-up tasks.
Getting started with Apache Cassandra development
The best way to get started if you are new to Apache Cassandra is to get acquainted with the project's documentation and set up a local development environment. You will be able to play around with a locally running instance via cqlsh and nodetool to get a feel for how to use the database. If you run into problems or roadblocks during this exercise, do not be shy about asking questions on #cassandra-gsoc.
Google Summer of Code tips
There are many good resources on the web on preparing for GSoC, particularly the ASF GSoC Guide and the Python community notes on GSoC expectations. The best GSoC participants are self-motivated and proactive. Following the tips above should increase your chances of getting selected and delivering your project successfully. Good luck!