How you can contribute to Apache Cassandra


Published on

Lightening talk I did on Cassandra Summit 2013 about contributing to Apache Cassandra project.

Published in: Technology

How you can contribute to Apache Cassandra

  1. 1. #CASSANDRA13Yuki Morishita | Apache Cassandra Committer, Software Developer@DataStaxHow you can contribute to Apache Cassandra
  2. 2. #CASSANDRA13*Apache Cassandra committer sinceMay, 2012*Also a software developer at DataStax*Tokyo ✈ Austin, TXHi, my name is Yuki.@yukim
  3. 3. #CASSANDRA13Today, I want to (quickly) talk about* How to get started writing and submit a patch* Non-programmer’s guide to contribute
  4. 4. #CASSANDRA13Programmer’s (quick) guide to submit patch
  5. 5. #CASSANDRA13Tools*Java SDK (>= 7 preferred)*Apache Ant*git*(optionally) python
  6. 6. #CASSANDRA13Search or create an issue onSearch issues startingwith ‘CASSANDRA’Create an issue
  7. 7. #CASSANDRA13$ git clone the code of mirror# It’s a good practice to always work on topic branch$ git checkout -b CASSANDRA-4315 origin/cassandra-1.2# to build, simply run$ ant
  8. 8. #CASSANDRA13*Just follow the coding style*For Eclipse users with your favorite IDE
  9. 9. #CASSANDRA13or you can run one test classTest it$ ant test$ ant test
  10. 10. #CASSANDRA13But wait, isn’t C* a distributed database?*How do I test C* in distributed manner?*Do I need boxes for that?
  11. 11. #CASSANDRA13Enter “ccm”*Cassandra Cluster Manager on your computer.*You can launch C* cluster from released version or local src tree.# create 3-node cluster of v1.2.5$ ccm create my-test-cluster -n 3 -v 1.2.5# launch all 3 nodes$ ccm start# show ring$ ccm node1 ring# do stress test$ ccm stress
  12. 12. #CASSANDRA13Enter “ccm”*Hosted on*You can even write your own test scenario using pythonimport osfrom ccmlib.cluster import Clusteros.mkdir(‘test_dir’)cluster = Cluster(‘test_dir’, ‘Test Cluster’, cassandra_version=‘1.2.5’)cluster.populate(3)for node in cluster.nodelist():print
  13. 13. #CASSANDRA13cassandra-dtest*C* cluster functional test based on nose and ccm*Get from$ git clone$ cd cassandra-dtest# run all distributed test$ nosetests
  14. 14. #CASSANDRA13cassandra-dtest*Too much for running long test? We got you covered.
  15. 15. #CASSANDRA13Ready to submit patch?$ git diff origin/cassandra-1.2 > CASSANDRA-XXXX.txt# or you can submit a patch created by following command too$ git format-patch origin/cassandra-1.2*Now, upload your patch using JIRA*Don’t forget to “Submit Patch” afterupload
  16. 16. #CASSANDRA13Got it? Start with “low-hanging fruits”!%3D%20Resolved
  17. 17. #CASSANDRA13Not a programmer? You can contribute too.
  18. 18. #CASSANDRA13There are many ways you can contribute*Report the bug*Test the patches*Tell about your use case*Help others on mailing list
  19. 19. #CASSANDRA13Reporting bug/Testing patches*JIRA is your friend. Feel free to “Create Issue”.But don’t ask the question on JIRA. Post it to user mailing list.*You always can be a reviewer/tester too.Grab, apply the patch, build and deploy to your testing environment.
  20. 20. #CASSANDRA13Tell your experience to the world*Blog and tweet with #cassandra*Get listed on*Help others on the mailing list
  21. 21. #CASSANDRA13* ask(don’t ask to ask) on irc (#cassandra, #cassandra-dev on freenode)* post to mailing list (* tweet with hash tag #cassandra* or contact me yuki@datastax.comQuestions? You can always