How to Commit Code to Apache Cassandra

Tools You Need

• Java SDK (>= 7)
• Apache Ant
• Git
• Python2 (optional)

I think you already knew Apache Cassandra is written in Java. Since the release of Apache Cassandra v2.0, Cassandra began using Java7 features, so you need JDK7 to compile your project. We use Apache Ant for building, and all the necessary jars are downloaded at build time. We use git for source code management. Python is used for running tools such as cqlsh.


The Cassandra project is managed at Apache’s hosted JIRA. All the bug reports/feature requests go here. Don’t forget to create an account!

Writing a Patch

Cassandra source code is hosted at Apache git repository. Use it as source code reference or linking to the line of code.

For writing patches, you can use your favorite editor or IDE. Just follow the coding style. If you are using Eclipse, set up guide is posted here. Recently we created a set up guide for Intellij IDEA too.

When you finish writing your patch, let’s check if your patch does not break anything. Cassandra source code comes with various unit tests, which you can run through Apache Ant.

How Can I Test Distributed Behavior on my Machine?

There is a tool called CCM that lets you easily create a Cassandra cluster for testing. CCM is also used for the Cassandra distributed test suite called cassandra-dtest. You can run cassandra-dtest using nose, but it takes a very long time to run all of these tests.

Hopefully, there is a Jenkins CI server set up at (buildbot at is retired).

Submitting a patch is easy. Take diff and attach it to JIRA. Don’t forget to press the “Submit Patch” button, which expressed that the patch is ready for review.

Ready to get started? Start with “low hanging fruits” and check out the SlideShare presentation below for more information on contributing code.

Not a Programmer? You Can Still Contribute

There are many ways you can contribute without writing code:
• Report the bug to JIRA
• Test submitted patches (anyone can be a reviewer)
• Tell about your use case
• Help others on the mailing list/IRC 

This posting was created by Apache Cassandra committer Yuki Morishita.