Hi all,

Since our household chores have been finished with recent 3.9 and 3.8 version, 
I think we can get back to this topic. 

Looking at the tremendous amount of work that Kezhu is doing on master with 
client jar separations, I tend to cut 4.0.0 from master once everything is 
done. If that’d be the case we could make a leap and make JDK 17 the minimum 
runtime and compile versions for the master branch. wdyt?

Once the change is merged to master, we'll backport it to branch-3.9 as follows:

* minimum JDK for building: 17
* minimum JRE for running: 8 (no change)

This is completely aligned with Christopher’s suggestion except we won’t touch 
the branch-3.8 as it’s going to be EoL’d in 6 months after the release of 4.0.0.

Regards,
Andor

p.s. Due to my little Maven experience I won’t be able to make the PRs myself, 
so I’ll ask sb to volunteer.




> On Aug 20, 2025, at 20:59, Christopher <[email protected]> wrote:
> 
> It looks like that Confluence page is pretty close to Semver 2.0's
> definition (semver.org).
> I was confused by the use of the word "major" to refer to 3.10 earlier in
> this thread. By the definition there, it'd be a "minor" release.
> 
> Since the version numbering is based on API changes, and not dependency
> requirements, it is permissible to update dependencies substantially,
> without breaking any documented goal. However, I still think going to 17 in
> a 3.x minor release is a bit too much for existing 3.x users who are trying
> to stay up-to-date on 3.x. I think 11 is less disruptive for a minor
> version bump. But, I also think it would be okay to release 4.0 from the
> master branch instead of 3.10, and make bigger, more disruptive changes. My
> main concern is whether users on 3.x will be properly prepared for the
> risks of disruptive changes. If the version is called 3.10, they may think
> it to be low-risk, but if it is called 4.0, they will recognize it as
> riskier and can prepare for it. Users tend to infer a lot about the risk
> level from the name of the version, and a major version number change
> communicates bigger risk that users may need to prepare for.
> 
> In any case, I certainly don't feel too strongly about it. Although my
> preference would be to have 11 as the runtime minimum for 3.10, I would
> prefer 17 rather than staying on 8. My preferences are:
> 
> * minimum JDK for building all active branches (3.9 and later): 17
> * minimum JRE for running 3.9: 8 (no change)
> * minimum JRE for running 3.10: 11 > 17 > 8
> * minimum JRE for running a future 4.x: 17
> 
> On Wed, Aug 20, 2025 at 6:38 PM Patrick Hunt <[email protected]> wrote:
> 
>> FYI here's what documented for the project:
>> 
>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=24193438#Roadmap-ReleaseNumbering
>> I personally think about it along these lines: "Upgrading between major
>> releases will generally require changes to user code".
>> The "annually" - I guess that was aspirational. :-)
>> 
>> Regards,
>> 
>> Patrick
>> 
>> On Tue, Aug 19, 2025 at 5:24 PM Christopher <[email protected]> wrote:
>> 
>>> I think most people interpret Java/maven version numbers (x.y.z) as:
>>> x = major
>>> y = minor
>>> z = patch/bugfix
>>> 
>>> I think it's confusing when you say 3.10 is a "major" version. What would
>>> you call 4.0.0? A "supremely major" release, perhaps? It's fine to treat
>> a
>>> minor release as a substantial change, but for communication, I think
>> it's
>>> still a minor release unless you bump the "major" portion of the version.
>>> 
>>> I like the changes that you're planning, but I think they might be
>>> significant enough to call it a "major" version and bump to 4.0.0. There
>>> doesn't need to be a 3.10... you can just rename it anytime before it is
>>> released.
>>> 
>>> 
>>> On Tue, Aug 19, 2025 at 2:46 PM Andor Molnar <[email protected]> wrote:
>>> 
>>>> We agreed on that we cut 3.10.0 from the master branch as new major
>>>> release of ZooKeeper. There’s no plan for 4.0.0 right now.
>>>> 
>>>> Bumping minimum JDK version to JDK 17 is for 3.10.0 only.
>>>> 
>>>> I suggested JDK 17, because I’d like to do a major refactoring to
>> upgrade
>>>> Jetty to the latest (12.1) version and it requires Java 17 in the
>>> runtime.
>>>> I know it sounds like a big jump, but consider that Java 11 is already
>>>> outdated. (EoS was Sept 2023)
>>>> 
>>>> Every version of Jetty including and earlier than 11 is already EoL, so
>>> we
>>>> don’t benefit too much from a JDK 11 upgrade.
>>>> 
>>>> ZooKeeper 3.9.x will be supported and stay the stable version of Apache
>>>> ZooKeeper for a long long time, so people running on Java 8 and 11 are
>>>> still covered.
>>>> 
>>>> Best,
>>>> Andor
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> On Aug 19, 2025, at 13:18, Christopher <[email protected]> wrote:
>>>>> 
>>>>> I have reservations about bumping the minimum runtime Java version to
>>>>> 17, because I have applications that use ZooKeeper client code that
>>>>> run Java 11. I think a more modest change would be to bump the
>>>>> required build version to 17, but keep the target version at 11. If
>>>>> this is being considered for 4.0.0 only, then I'm okay with just
>> going
>>>>> to 17 for the runtime version as well. I think my existing
>>>>> applications that run on java 11 can continue to use 3.x.
>>>>> 
>>>>> On Mon, Aug 18, 2025 at 8:44 AM Kezhu Wang <[email protected]>
>> wrote:
>>>>>> 
>>>>>> Hi all,
>>>>>> 
>>>>>> +1 to upgrade to JDK 17
>>>>>> 
>>>>>> Ideally, I would suggest using different jdk versions for client and
>>>>>> server to not push client usage just like kafka[1] and pulsar[2].
>> But
>>>>>> given the fact that we don't have a slim client jar[3], so +1 to
>> this.
>>>>>> 
>>>>>> +1 to call next release from master as 3.10.0
>>>>>> 
>>>>>> I think most of the code changes in master since 3.9 were expected
>> to
>>>>>> be shipped in 3.10.0. One can confirm this in zookeeperAdmin.md. I
>>>>>> don't think it is worth bumping to 4.x near its release.
>>>>>> 
>>>>>> I expect 4.x to be a planned version to do some ambitious tasks and
>>>>>> probably in a not backward compatible way such as ZOOKEEPER-233[3],
>>>>>> ZOOKEEPER-835[4] or ZOOKEEPER-22[5]. Also, there is 4.0.0 in
>> jira[6].
>>>>>> 
>>>>>> I do think bumping to JDK 17 could also be considered as a breaking
>>>>>> change, but that could be trivial for dependants to solve and not
>>>>>> touching zookeeper related codes. I would prefer new
>> features(probably
>>>>>> along with breaking changes) from our side in major releases.
>>>>>> 
>>>>>> [1]: https://kafka.apache.org/40/documentation/compatibility.html
>>>>>> [2]:
>>>> 
>>> 
>> https://github.com/apache/pulsar?tab=readme-ov-file#pulsar-runtime-java-version-recommendation
>>>>>> [3]: https://issues.apache.org/jira/browse/ZOOKEEPER-233
>>>>>> [4]: https://issues.apache.org/jira/browse/ZOOKEEPER-835
>>>>>> [5]: https://issues.apache.org/jira/browse/ZOOKEEPER-22
>>>>>> [6]:
>>>> https://issues.apache.org/jira/projects/ZOOKEEPER/versions/12313382
>>>>>> 
>>>>>> 
>>>>>> On Sun, Aug 10, 2025 at 9:34 AM Andor Molnar <[email protected]>
>>> wrote:
>>>>>>> 
>>>>>>> What tech debt do you mean exactly?
>>>>>>> 
>>>>>>> I'm happy either way, don't have strong opinion, we can stay at
>> 3.x.x
>>>>>>> versioning.
>>>>>>> 
>>>>>>> Andor
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On 8/9/25 06:40, tison wrote:
>>>>>>>> Or instead, from a different perspective, if we call a 4.0, can we
>>>> pay back
>>>>>>>> some tech debt just for compatibility?
>>>>>>>> 
>>>>>>>> Best,
>>>>>>>> tison.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> tison <[email protected]>于2025年8月9日 周六18:30写道:
>>>>>>>> 
>>>>>>>>> +1 for JDK17
>>>>>>>>> 
>>>>>>>>> -0 for 4.0. Bumping JDK version doesn't break APIs and contracts.
>>> So
>>>> I'd
>>>>>>>>> prefer 3.10. 4.0 may give a signal of a big break change but it
>>>> isn't.
>>>>>>>>> 
>>>>>>>>> Best,
>>>>>>>>> tison.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Li Wang <[email protected]>于2025年8月9日 周六08:51写道:
>>>>>>>>> 
>>>>>>>>>> That's awesome. Thanks for driving this, Andor!
>>>>>>>>>> 
>>>>>>>>>> After releasing 3.9.4 I’d like to announce EoL of the 3.8.x
>>> release
>>>> line
>>>>>>>>>>> and create a new minor/major off the master branch.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Does this mean the next major version (i.e. 4.0.0/3.10.0) will
>> be
>>>> released
>>>>>>>>>> soon, as we need to have a new current release before announcing
>>>> EoL of
>>>>>>>>>> the
>>>>>>>>>> 3.8.x release?
>>>>>>>>>> 
>>>>>>>>>> Given the 3.9.4 release is in progress, any rough idea on when
>> the
>>>> next
>>>>>>>>>> major version will be?
>>>>>>>>>> 
>>>>>>>>>> what if we rather call the new release 4.0.0
>>>>>>>>>> 
>>>>>>>>>> +1 for calling it 4.0.0. Looks like we have been on 3.x for
>> about
>>>> 17 years
>>>>>>>>>> already.
>>>>>>>>>> 
>>>>>>>>>> what if we make two steps forward instead of one and let Java 17
>>> to
>>>> be the
>>>>>>>>>>> minimum requirement
>>>>>>>>>> 
>>>>>>>>>> +1 for Java 17
>>>>>>>>>> 
>>>>>>>>>> Best,
>>>>>>>>>> 
>>>>>>>>>> Li
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> On Fri, Aug 8, 2025 at 2:38 PM Patrick Hunt <[email protected]>
>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Thanks for driving this Andor! I think what you are saying
>> makes
>>>> sense,
>>>>>>>>>>> will be interested to see what other ppl think.
>>>>>>>>>>> 
>>>>>>>>>>> Regards,
>>>>>>>>>>> 
>>>>>>>>>>> Patrick
>>>>>>>>>>> 
>>>>>>>>>>> On Fri, Aug 8, 2025 at 2:27 PM Andor Molnar <[email protected]>
>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> Hi Li,
>>>>>>>>>>>> 
>>>>>>>>>>>> The topic comes up every so often on the Dev list, so let’s
>>> bring
>>>> it
>>>>>>>>>> up
>>>>>>>>>>>> again. After releasing 3.9.4 I’d like to announce EoL of the
>>> 3.8.x
>>>>>>>>>>> release
>>>>>>>>>>>> line and create a new minor/major off the master branch. I’d
>>> like
>>>> to
>>>>>>>>>> drop
>>>>>>>>>>>> Java 8 support in that release and make Java 11 as minimum
>>>> requirement
>>>>>>>>>>> for
>>>>>>>>>>>> ZooKeeper.
>>>>>>>>>>>> 
>>>>>>>>>>>> * In which case, what if we rather call the new release 4.0.0?
>>>>>>>>>>>> * Additionally what if we make two steps forward instead of
>> one
>>>> and
>>>>>>>>>> let
>>>>>>>>>>>> Java 17 to be the minimum requirement? With that, we could
>>> upgrade
>>>>>>>>>> Jetty
>>>>>>>>>>> to
>>>>>>>>>>>> the latest actively supported version.
>>>>>>>>>>>> 
>>>>>>>>>>>> Please share your thoughts.
>>>>>>>>>>>> 
>>>>>>>>>>>> Andor
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>>> On May 7, 2025, at 13:16, Li Wang <[email protected]> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Does anyone know when 3.10.0 is planned to be released?
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Li
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>> 
>>>> 
>>> 
>> 

Reply via email to