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