#CASSANDRA13
Yuki Morishita | Apache Cassandra Committer, Software Developer@DataStax
How you can contribute to Apache Cassandra
#CASSANDRA13
*Apache Cassandra committer since
May, 2012
*Also a software developer at DataStax
*Tokyo ✈ Austin, TX
Hi, my name is Yuki.
@yukim
#CASSANDRA13
Today, I want to (quickly) talk about
* How to get started writing and submit a patch
* Non-programmer’s guide to contribute
#CASSANDRA13
Programmer’s (quick) guide to submit patch
#CASSANDRA13
Tools
*Java SDK (>= 7 preferred)
*Apache Ant
*git
*(optionally) python
#CASSANDRA13
Search or create an issue on
Search issues starting
with ‘CASSANDRA’
Create an issue
#CASSANDRA13
$ git clone https://git-wip-us.apache.org/repos/asf/cassandra.git
Get the code with
git.apache.org/cassandra.git
github.com/apache/cassandra.git
mirror
mirror 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
#CASSANDRA13
*Just follow the coding style
http://wiki.apache.org/cassandra/CodeStyle
*For Eclipse users
https://github.com/tjake/cassandra-style-eclipse
Code with your favorite IDE
#CASSANDRA13
or you can run one test class
Test it
$ ant test -Dtest.name=IWantToRunOnlyThisTest
$ ant test
#CASSANDRA13
But wait, isn’t C* a distributed database?
*How do I test C* in distributed manner?
*Do I need boxes for that?
#CASSANDRA13
Enter “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
#CASSANDRA13
Enter “ccm”
*Hosted on https://github.com/pcmanus/ccm
*You can even write your own test scenario using python
import os
from ccmlib.cluster import Cluster
os.mkdir(‘test_dir’)
cluster = Cluster(‘test_dir’, ‘Test Cluster’, cassandra_version=‘1.2.5’)
cluster.populate(3)
for node in cluster.nodelist():
print node.name
#CASSANDRA13
cassandra-dtest
*C* cluster functional test based on nose and ccm
*Get from https://github.com/riptano/cassandra-dtest
$ git clone git@github.com:riptano/cassandra-dtest.git
$ cd cassandra-dtest
# run all distributed test
$ nosetests
#CASSANDRA13
cassandra-dtest
*Too much for running long test? We got you covered.
http://buildbot.datastax.com:8010/waterfall
#CASSANDRA13
Ready 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” after
upload
#CASSANDRA13
Got it? Start with “low-hanging fruits”
https://issues.apache.org/jira/issues/?jql=project%20%3D%20CASSANDRA%20AND%20labels%20%3D
%20lhf%20AND%20status%20!%3D%20Resolved
#CASSANDRA13
Not a programmer? You can contribute too.
#CASSANDRA13
There are many ways you can contribute
*Report the bug
*Test the patches
*Tell about your use case
*Help others on mailing list
#CASSANDRA13
Reporting 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.
#CASSANDRA13
Tell your experience to the world
*Blog and tweet with #cassandra
*Get listed on http://www.planetcassandra.org/
*Help others on the mailing list
#CASSANDRA13
* ask(don’t ask to ask) on irc (#cassandra, #cassandra-dev on freenode)
* post to mailing list (user@cassandra.apache.org)
* tweet with hash tag #cassandra
* or contact me yuki@datastax.com
Questions? You can always

How you can contribute to Apache Cassandra

  • 1.
    #CASSANDRA13 Yuki Morishita |Apache Cassandra Committer, Software Developer@DataStax How you can contribute to Apache Cassandra
  • 2.
    #CASSANDRA13 *Apache Cassandra committersince May, 2012 *Also a software developer at DataStax *Tokyo ✈ Austin, TX Hi, my name is Yuki. @yukim
  • 3.
    #CASSANDRA13 Today, I wantto (quickly) talk about * How to get started writing and submit a patch * Non-programmer’s guide to contribute
  • 4.
  • 5.
    #CASSANDRA13 Tools *Java SDK (>=7 preferred) *Apache Ant *git *(optionally) python
  • 6.
    #CASSANDRA13 Search or createan issue on Search issues starting with ‘CASSANDRA’ Create an issue
  • 7.
    #CASSANDRA13 $ git clonehttps://git-wip-us.apache.org/repos/asf/cassandra.git Get the code with git.apache.org/cassandra.git github.com/apache/cassandra.git mirror mirror 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.
    #CASSANDRA13 *Just follow thecoding style http://wiki.apache.org/cassandra/CodeStyle *For Eclipse users https://github.com/tjake/cassandra-style-eclipse Code with your favorite IDE
  • 9.
    #CASSANDRA13 or you canrun one test class Test it $ ant test -Dtest.name=IWantToRunOnlyThisTest $ ant test
  • 10.
    #CASSANDRA13 But wait, isn’tC* a distributed database? *How do I test C* in distributed manner? *Do I need boxes for that?
  • 11.
    #CASSANDRA13 Enter “ccm” *Cassandra ClusterManager 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.
    #CASSANDRA13 Enter “ccm” *Hosted onhttps://github.com/pcmanus/ccm *You can even write your own test scenario using python import os from ccmlib.cluster import Cluster os.mkdir(‘test_dir’) cluster = Cluster(‘test_dir’, ‘Test Cluster’, cassandra_version=‘1.2.5’) cluster.populate(3) for node in cluster.nodelist(): print node.name
  • 13.
    #CASSANDRA13 cassandra-dtest *C* cluster functionaltest based on nose and ccm *Get from https://github.com/riptano/cassandra-dtest $ git clone git@github.com:riptano/cassandra-dtest.git $ cd cassandra-dtest # run all distributed test $ nosetests
  • 14.
    #CASSANDRA13 cassandra-dtest *Too much forrunning long test? We got you covered. http://buildbot.datastax.com:8010/waterfall
  • 15.
    #CASSANDRA13 Ready to submitpatch? $ 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” after upload
  • 16.
    #CASSANDRA13 Got it? Startwith “low-hanging fruits” https://issues.apache.org/jira/issues/?jql=project%20%3D%20CASSANDRA%20AND%20labels%20%3D %20lhf%20AND%20status%20!%3D%20Resolved
  • 17.
    #CASSANDRA13 Not a programmer?You can contribute too.
  • 18.
    #CASSANDRA13 There are manyways you can contribute *Report the bug *Test the patches *Tell about your use case *Help others on mailing list
  • 19.
    #CASSANDRA13 Reporting bug/Testing patches *JIRAis 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.
    #CASSANDRA13 Tell your experienceto the world *Blog and tweet with #cassandra *Get listed on http://www.planetcassandra.org/ *Help others on the mailing list
  • 21.
    #CASSANDRA13 * ask(don’t askto ask) on irc (#cassandra, #cassandra-dev on freenode) * post to mailing list (user@cassandra.apache.org) * tweet with hash tag #cassandra * or contact me yuki@datastax.com Questions? You can always