how you can contribute to apache cassandra
DESCRIPTION
Lightening talk I did on Cassandra Summit 2013 about contributing to Apache Cassandra project.TRANSCRIPT
#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.gitGet 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 stylehttp://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 pythonimport osfrom 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 [email protected]: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 ([email protected])
* tweet with hash tag #cassandra
* or contact me [email protected]
Questions? You can always