> 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.
Yeah, great call out. I don't want to derail us or lose that other important 
context; I think the 4.x and 5.0.0 release work outlined is all really solid + 
moving JDK forward (could even push to 21 at this point), and it doesn't sound 
like that stuff is controversial.

> 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?
Hm. Good question. My gut reaction is "indefinitely unless and until we 
formalize a deprecation plan for client APIs which we could then retroactively 
apply here". And I don't like indefinitely, so we should have a plan. :)

I think it'd be valuable to have a life cycle expectation for both major driver 
release branches and APIs separately. We've conflated version with API in the 
past and that's part of how we got to where we are. For example, if we had:
 • Major driver release branches will be supported for 3 years (CVEs, bugfixes 
on case-by-case basis)
 • We release a major driver version yearly, dropping the oldest yearly
 • New features will to into the new driver release version only
 • We reserve the right to rev the driver **API** yearly along with major 
driver releases and reserve the right to make breaking changes (though we'll 
try not to)

That'd leave us with something like:
 • 3.x driver w/3.x API
 • 4.x driver w/4.x API (gap: should still support 3.x API)
 • 5.x driver w/5.x API (would need to support 3.x and 4.x API)
 • 6.x driver w/6.x API (supports 5.x and 4.x; 3.x API is formally dropped here)

So effectively an application would get 3 years of binary support and 5 years 
of API support (since we'd forward-carry that API compatibility 2 versions past 
where introduced, i.e. 3.x API introduced with 3.0 and dies when 5.0 goes EoL).

Just a naive first cut at it. Might not make sense, we might not have enough 
contributors active on it or active interest to get 3.x API compatibility 
working on the 4.x line or 5.x line, etc. But generally speaking, having some 
kind of predictable cadence for how long something will be supported (both 
binaries w/security and bugfixes and APIs) would be valuable for the projects I 
think.

On Tue, Jun 30, 2026, at 9:52 PM, Bret McGuire wrote:
>    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