I generally want to hear from the community on the points raised by Josh
so this message isn't intended to argue for or against any of his points
(I'll save that for later ;) ).  I do have some additional bits of
information that might not be widely known which could provide some
additional guidance to the debate... so I'm aiming to provide that here.

   Let's start with the current state of the 3.x branch.  It's very much
already in the condition Josh described (and has been for a bit).  We're
not adding new features to 3.x; when we added vector support to 4.x we
explicitly did _not_ add it to 3.x.  We're also really only doing security
updates and other absolutely necessary fixes.  So that is the current state
of the world now.

   Second: it seems to me like most of the conversation so far is focused
on what to do with the 3.x line of Java driver releases.  Am I correct in
saying, then, that there's no substantive disagreement with the plan Jane
outlined for 4.x?  I think there's some general interest in starting to
work on a 5.0.0 release so if nobody objects we'll probably start down that
path.

   As to Ekaterina's question about how many users are on 3.x: we recently
put a poll [1] in the field asking Java driver users what they were doing
with the driver.  We were primarily concerned with the version of Java our
users were using the driver with (since that very much informs what we do
with 5.0) but we did also ask what version of the driver folks were using.
We only got a little over 20 responses so there's something of a small
sample size here but of those responses 4 indicated that they were using
some 3.x version.  That's 4 out of 23 which is... approximately 17% (if my
math can be trusted).  Very much a minority but not zero either.

   Finally, a question on the scope of the shim idea... I guess this one
prolly is mostly for Josh.  How long would we continue to maintain such a
shim for the 3.x API against current drivers?  Is there some condition
where we would agree that it would be no longer necessary or are we saying
we'll maintain such a thing indefinitely?  Again, I'm not arguing for or
against here... just trying to continue to refine the discussion.

   Interested to hear the opinions of others!

     - Bret -

[1] - https://lists.apache.org/thread/kgwo5qoj3xdcx8rvl29rwfyvgylwowo4

On Mon, Jun 29, 2026 at 8:00 AM Josh McKenzie <[email protected]> wrote:

> we should balance how much we can do with the amount of people involved on
> the project.
>
> 100%.
>
> I could definitely see a world where we took a minimal path for now and
> did some kind of long-term EoL for the 3.x line with CVE fixes only but
> otherwise the release line is frozen. Naively that seems like it shouldn't
> be *too* big a maintenance burden for folks who predominantly want to
> focus on 4.x+ and 5.x+. So that means no bugfix backporting (unless maybe
> we discussed data loss / correctness bugs as being the one exception
> (assuming they're as infrequent or less than CVEs)), no feature
> backporting, etc.
>
> Then if someone really wants to keep their 3.x client applications they
> have at least a security compliant release they can work with. If we wanted
> to kill that branch line entirely, my argument here is that the price of
> entry would be some kind of 3.x API compatible solution for 4.x or 5.x.
> Either a native impl of that older API, a shim project that translated A to
> B, or some other idea someone else can come up with.
>
> My big reservation with the idea of polling people is why we'd believe we
> can get a representative sample of the entire C* community. Given we're
> open source and so widely used I don't really know how we could do that.
>
> So a question for the thread / community: are we in agreement on carrying
> forward 3.x API compatibility into the future? We don't *have* to hold
> that same standard in our driver ecosystem that we do in core C*. I think
> the burden of justification will be on us as to why we want to diverge from
> that posture on the core DB since the same pressures should hold for the
> ecosystem APIs as for the core DB, but there's different context here (API
> surface area, burden of maintenance, # of maintainers, etc).
>
> On Sat, Jun 27, 2026, at 11:04 AM, Ekaterina Dimitrova wrote:
>
> “
> It'd probably be helpful to at least gather data on the side of this
> coupling where we can to help ground the discussion in data instead of
> trauma and vibes. :)
> ”
>
> Maybe we can create a poll how many people are still on 3? Same as it was
> done with Java usage, same as sometimes we ask about Cassandra versions?
> Also, ask what are their migrations plans are.
>
> That would also raise awareness and users can join even this discussion or
> someone can decide to help work on the migration path?
>
> But also, we should balance how much we can do with the amount of people
> involved on the project.
> Thank you all for this valuable discussion. I learned a thing or two about
> the drivers’ history.
>
> Best regards,
> Ekaterina
>
> On Sat, 27 Jun 2026 at 9:32, Josh McKenzie <[email protected]> wrote:
>
>
> it turned out to be a lot more complicated than it looks on first blush.
>
> The story of our lives. :)
>
> the first release from the 4.x line was in... spring of 2019 I believe.
> It's now summer of 2026.  I'd argue that's _more_ than enough time for
> upgrades to have happened
>
> I'm of two minds on this. From an application revision perspective: 100%
> agree. From a infrastructure software perspective, I think most people
> would prefer it if infra worked on day 1 and then *literally never
> changed*. We don't really have any way of knowing how many applications
> are out there on the 3.x line still relying on that API; unless we
> collectively believe the API in 4.x was so compelling the vast majority of
> users would have elected to proactively migrate (which... I don't have that
> impression but it's not grounded in data - I'm receptive to other
> perspectives here), people are having to triage a horizontal upgrade to
> move to a newer API w/out delivering business value vs. other features that
> do. So I would strongly suspect there's a lot more people still actively
> depending on 3.x than we'd like.
>
>  a shim like what you're describing is explicitly saying that we want the
> 3.x _API_ to stick around.  There's no active development on the 3.x line.
> There are no new features going into that line (the only changes it sees
> are security updates).  I don't want to support the 3.x API indefinitely;
> the reality is we've moved on.
>
> I don't think it explicitly communicates we want the API to stick around
> any more than, say, continuing to support thrift with security updates but
> a frozen API would communicate a positive desire for thrift to still be in
> use. I think it's more an acknowledgement that there's a strong disconnect
> between what we know as developers in an ecosystem and the consumers and
> dependents upon the APIs we draft. This is part of why we landed on the
> "Consider all APIs to live forever and never be removed" perspective with
> core C*. I think the perfect example of the shape of user I'm thinking of
> is someone who has an application that's 5 years old, built on the 3.x
> line, has had no augmentation or feature addition in 5 years (if it ain't
> broke...), and have *zero* incentive to refactor an application to use a
> new API that for their purposes is feature-neutral to their old use-case.
> Moving to a new version is strictly a net negative for people like that as
> that change will introduce instability and bugs.
>
> I think the argument I'm making here (and I don't like it) is that, on
> balance, we should consider the 3.x *API* something we have to support
> indefinitely. At least when it comes to security updates - certainly not
> back-porting new functionality or anything. I'm 100% with you that anyone
> working on any new application should use the latest stable API, but we're
> an old project with a lot (and I mean *a lot*) of legacy use-cases. So
> that would mean that, if the 4.x driver itself doesn't have 3.x *API*
> support, we'd need to add that there before EOL'ing the 3.x line.
>
> Which really is a shim by any other name; if we implement 3.x API support
> in the 4.x line and on it's really just that.
>
> I dunno. I'm very curious / hopeful to hear other perspectives that aren't
> my conclusion (please ;) ), but my personal experience in the last decade
> on this project is that retiring APIs that require application side changes
> is a recipe for disaster.
>
> Has anybody taken a day or two to get a handle on how much of a lift it'd
> be to add a 3.x API compatibility layer to the 4.x driver? It'd probably be
> helpful to at least gather data on the side of this coupling where we can
> to help ground the discussion in data instead of trauma and vibes. :)
>
> On Fri, Jun 26, 2026, at 4:27 PM, Bret McGuire wrote:
>
>    I think there was a pretty decent argument for something along the
> lines of what you're describing Josh, but I guess I'd argue the argument
> was strongest when the first release of the 4.x line came out.  In fact I
> believe there _was_ some work done on something like what you're describing
> but (if I'm remembering correctly) it never saw the light of day, in no
> small measure because it turned out to be a lot more complicated than it
> looks on first blush.  I can think of a couple different areas where that
> would be fairly problematic but I'll defer to some of the folks who were
> more involved in that effort if they have more details and/or clarification
> on that point.
>
>    Either way, the first release from the 4.x line was in... spring of
> 2019 I believe.  It's now summer of 2026.  I'd argue that's _more_ than
> enough time for upgrades to have happened.  I'm struggling to think of
> other libraries which would go to these lengths to keep older APIs around
> for so long after new development has moved on.  And that's really what
> we're talking about here; a shim like what you're describing is explicitly
> saying that we want the 3.x _API_ to stick around.  There's no active
> development on the 3.x line.  There are no new features going into that
> line (the only changes it sees are security updates).  I don't want to
> support the 3.x API indefinitely; the reality is we've moved on.
>
>    The parallel with six is interesting.  I've gone back and forth on this
> point but there's certainly an argument that a shim layer for a
> _programming language_ is probably more necessary than one for a library
> API, but like I say I haven't thought that one through enough to say for
> sure.
>
>    Speaking only for myself I'm not opposed to _the idea_ of a shim at
> all; if somebody wants to put in the work it's something we can talk
> about.  I just don't want the Java driver team to be responsible for
> creating (and maintaining) such a shim indefinitely.  For me a solid
> parallel is what we're doing with the Python driver; we've deprecated (and
> will be removing) three of the less-used executors but we're not suggesting
> they can't be forked and maintained by somebody else.  We're just saying we
> have limited resources and we can't maintain everything indefinitely.  I
> hear you about past experience with breaking updates (and no clear update
> path) but DataStax also went to great lengths to try and remove as little
> as possible between versions... and I guess I'd argue that hamstrung
> development somewhat.
>
>    To that point (and indirectly related to the topic at hand): part of
> _my_ rationale for wanting to go to a 5.x is to get us back in the habit of
> regarding major version bumps as a normal part of software development.
> 4.x was _so_ disruptive that we got a bit nervous about considering another
> major bump even when it made sense.  I'd rather move us towards a more
> familiar model of software development: major version bumps are a fact of
> life, use them when they're appropriate but also do your best not to change
> the world when you do.  No one (and I mean _no one_) is interested in
> repeating the experience of the 4.x conversion.  But we can't be afraid to
> do a major version bump when it makes sense.
>
>    Okay, that's enough from me, somebody else should talk now. :)
>
>       - Bret -
>
>
> On Fri, Jun 26, 2026 at 7:57 AM Josh McKenzie <[email protected]>
> wrote:
>
>
> Unlike the transition from 3.x to 4.x, this release will not introduce
> significant API breakage.
>
>
> We also plan to sunset the 3.x line in the near future, and strongly
> encourage users to upgrade to the 4.x series.
>
> I remember talking with Adam Holmberg and some other driver devs back in
> the day about the possibility of an API shim bridging the 3.x and 4.x line.
> Something similar to how the python community ended up introducing six
> <https://pypi.org/project/six/> to try and bridge their pretty painful
> gap in their extensive API breakages between those majors. I think we
> should revisit that idea now that we have some tooling that could make the
> process of designing and implementing a "nuts and bolts plumbing" bridge
> layer like that much lower effort.
>
> We have a long history on this project ecosystem (not drivers; cassandra
> :) ) of introducing API breakages without a paved-path for app devs and
> operators to transition the pre -> post world; avoiding the community
> fracture and long-term forks that arise from this would be very much worth
> the effort IMO.
>
> On Thu, Jun 25, 2026, at 5:07 PM, Jane H wrote:
>
> Hi all,
>
> We’re pleased to share the release plan for the Apache Cassandra Java
> Driver.
>
> The next release will be a major version, 5.0. Unlike the transition from
> 3.x to 4.x, this release will not introduce significant API breakage.
> However, we do plan to drop support for Java 8 and Java 11, making Java 17
> the minimum supported version.
>
> Our rationale is as follows:
>
>    1. End-of-life status. Both Java 8 and Java 11 have reached end of
>    life (Oracle Premier Support)—Java 8 in March 2022 and Java 11 in September
>    2023.
>    2. User adoption trends. Based on our recent Java Driver user survey
>    (22 responses):
>
>
>    - 75% are already running the driver on Java 17 or later
>    - 90% believe Java 17 or newer should be the minimum supported version
>    for 5.0
>    - 52% Java 17
>       - 38% Java 21
>    - Modern platform benefits. Building on Java 17 enables us to take
>    advantage of modern language features, tooling, and libraries—for example,
>    adopting Jackson 3.
>
>
> In addition, the next 3.x release will be 3.13.0, which will support JDK
> 8+ (instead of JDK 6). We also plan to sunset the 3.x line in the near
> future, and strongly encourage users to upgrade to the 4.x series.
> To help with migration, please refer to the upgrade guide:
> https://apache.github.io/cassandra-java-driver/4.19.0/upgrade-README/
>
> Cheers,
> The Apache Cassandra Java Driver Developers
>
>
>
>
>

Reply via email to