There's been discussion happening in #2761
(https://issues.apache.org/jira/browse/CASSANDRA-2761) on and off now
for more than 3 months, and I think it could benefit from some wider
exposure.

The issue was created in the wake of the driver move from
asf/cassandra/trunk/drivers to asf/cassandra/drivers and the original
scope was to create a working build for the JDBC driver post-move (at
the time it had no build of its own).  That work has since been
completed, but it was left open to include some related items, in
hindsight it should have been closed and other issues opened as
needed.

The remainder of the discussion that's taken place in CASSANDRA-2761
revolves around moving the driver code back under Cassandra's tree.

I don't want this to happen because, as I've mentioned elsewhere,
drivers are supposed to be coded to a specification, not a Cassandra
version; Any given driver release is expected to work with any version
of Cassandra that uses a CQL version >= to that of the driver.  As
such there is a need to release them independently, with their own
versions, on a more or less frequently basis than Cassandra does.  To
this point I think there is agreement.

Where we disagree I guess is in how to accomplish this.

Moving the driver has made things less convenient in part because in
it's current location it isn't mirrored by git.apache.org, and in part
because it's quite obviously less convenient than having everything
all in one monolithic tree.  Most often cited for the latter is #3010
(https://issues.apache.org/jira/browse/CASSANDRA-3010), an issue
opened to create a CQL-based shell written in Java.

The lack of Git mirroring is unfortunate, but shouldn't be a blocker
IMO since the equivalent could be accomplished using git-svn.  I would
however be willing to do this once, for everyone, and publish the
result on Github if that would help.

As for cases like #3010, these are applications and it's no more or
less convenient than it would be for any other application.  If the
JDBC driver is unsuitable for use by us as a dependency, then it's
unsuitable for our users as well.  My suggestion here was to do what
we do with every other dependency we have and store a jar in lib/.

There are some workarounds that have been proposed for moving the
drivers back under Cassandra's source tree while creating independent
releases from there.  For example, keeping them only in trunk/ and
deleting drivers/ in new branches (which doesn't solve the case for
#3010).   In my opinion, these are half-measures that fail to create
the needed separation while making the release process brittle, or
complicated, or both, and generate confusion (which incidentally is
exactly why they were moved in the first place).

One other point that seems relevant is that all of the discussion has
centered around the JDBC driver only.  If we were to eliminate it from
the equation, it appears there'd be no (or at least a lot less)
opposition to the move.  This seems to reinforce the idea that we're
special-casing our own uses.

Thoughts? Suggestions?

--
Eric Evans
Acunu | http://www.acunu.com | @acunu

Reply via email to