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

Reply via email to