New informational JEP: 14: The Tip & Tail Model of Library Development

Karsten Silz karsten.silz at gmail.com
Thu Oct 31 11:47:36 UTC 2024


I think the JEP does not distinguish between tail releases that have dependencies with new features and tail releases that do not. Should it?

The JEP describes in the “The Cascade of Doom” section how obtaining new features through dependencies could destroy the stability of tail releases. Yet, the JEP seems to provide no solution, apart from requiring developers to "ensure that tail releases depend on the tail releases of other libraries, where available.” So, what should developers do if there are no tail releases available? Or if these tail releases have new features, too ("there may be exceptions")? 

A possible solution is for all Java libraries to have tail trains and that these tail trains only depend on tail train releases without new features. However, I think this future is at least a few years away.

Let’s say I must use a tail library in my project today. This could unleash “The Cascade of Doom” in my project by including a dependency with new features. I would like to know if this could happen. Even a Spring Boot tail is such a release: It depends on the Spring Framework, which, according to Ron Pressler, does not follow tip & tail: https://www.youtube.com/watch?v=wNQKRBLbKIs&t=2740s

So, should there be two classes of tail releases: Tier one without dependencies that have new features (“true tail”) and tier two with dependencies that have new features (“tepid tail”)? And how would developers know to which tier a tail release belongs?


Karsten Silz


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/jdk-dev/attachments/20241031/dcb9b25a/attachment-0001.htm>


More information about the jdk-dev mailing list