CQL3 is almost two years old now and has proved to be the better API that Cassandra needed. CQL drivers have caught up with and passed the Thrift ones in terms of features, performance, and usability. CQL is easier to learn and more productive than Thrift.
With static columns and LWT batch support [1] landing in 2.0.6, and UDT in 2.1 [2], I don't know of any use cases for Thrift that can't be done in CQL. Contrawise, CQL makes many things easy that are difficult to impossible in Thrift. New development is overwhelmingly done using CQL. To date we have had an unofficial and poorly defined policy of "add support for new features to Thrift when that is 'easy.'" However, even relatively simple Thrift changes can create subtle complications for the rest of the server; for instance, allowing Thrift range tombtones would make filter conversion for CASSANDRA-6506 more difficult. Thus, I think it's time to officially close the book on Thrift. We will retain it for backwards compatibility, but we will commit to adding no new features or changes to the Thrift API after 2.1.0. This will help send an unambiguous message to users and eliminate any remaining confusion from supporting two APIs. If any new use cases come to light that can be done with Thrift but not CQL, we will commit to supporting those in CQL. (To a large degree, this merely formalizes what is already de facto reality. Most thrift clients have not even added support for atomic_batch_mutate and cas from 2.0, and popular clients like Astyanax are migrating to the native protocol.) Reasonable? [1] https://issues.apache.org/jira/browse/CASSANDRA-6561 [2] https://issues.apache.org/jira/browse/CASSANDRA-5590 -- Jonathan Ellis Project Chair, Apache Cassandra co-founder, http://www.datastax.com @spyced