Hi everyone,

There has recently been some discussions regarding support for JDK21 on
Discord[1] which I wanted to roll into an official discussion. We have long
tied ourselves to Java 8, which has resulted in us being slow to adopt new
JDK versions as they become available. I think now is the right time for us to
develop an official policy on how to approach new JDK releases. Stephen
has raised the recent discussions in Cassandra [2] as a potential model for
us to follow, and I largely agree with their approach.

To summarize the Cassandra policy, they are prioritizing the adoption of new
LTS JDKs above support for legacy versions in new major releases. Translating
their policy to our branching model would state that upon release of a new LTS
JDK, the master branch (and 3.8-dev currently as it a WIP major release)
should be updated to build and run using the latest LTS JDK. Existing dev
branches that are still receiving support (3.7-dev currently) should continue to
build and run with their existing JDK versions, but attempts should be made to
add run support for the latest JDK in the next minor release. This presumably
only applies if run support can be achieved in a non-breaking manner.

Under such a policy, it is expected that any new major release will build and
run on the latest LTS JDK. If for some reason there is a major blocker
preventing adoption of a new JDK, that must be raised in the devlist and we
must align on a path forward prior to the next major release.

The one area where I believe we may need to differ from Cassandra has
adopted is regarding dropping legacy JDKs. I held a poll on Discord [3]
asking which Java versions would prefer for use with TinkerPop. The results
are currently:
0 – Java 8
5 – Java 11
5 – Java 17
5 – Java 21 (if it were currently supported)
1 – Java 25 (would like it to be supported once released)

Based on these results, it appears that we may finally be able to free ourselves
from being tied to Java 8. There also appears to be significant appetite for 
more
aggressive adoption of modern JDKs, however it appears that the community is
not yet ready to discontinue support for Java 11. Due to this, I’m not ready to
propose any mechanism to automatically deprecate support for old JDKs at this
time, however I am of the mind that it is more important to support modern LTS
releases such as 21 and soon 25, in upcoming releases than it is to retain an 
old
version such as 11. Ideally, we can always retain support for legacy versions as
long as the demand is present, but if we ever find ourselves needing to choose
between a new LTS and an old one, I propose we handle that on a case-by-case
basis.

Please let me know if you have any thoughts on this proposal, would like any
amendments to the policy, or if you have any objections against dropping Java 8
support.

[1] 
https://discord.com/channels/838910279550238720/1387052324354003044/1387052345581633587
[2] https://lists.apache.org/thread/7640gzjlwo07kjmoyjpt8gq80qk5qhn9
[3] 
https://discord.com/channels/838910279550238720/838910279550238723/1387116935325679788

Thanks,
Cole

Reply via email to