New informational JEP: 14: The Tip & Tail Model of Library Development
Alex Buckley
alex.buckley at oracle.com
Mon Nov 4 17:52:59 UTC 2024
Chen already gave some helpful comments, to which I will add:
On 11/3/2024 12:55 AM, Karsten Silz wrote:
> First, Alex Buckley clarified that not ALL tail releases must survive
> the next tip release. In OpenJDK, three out of four don't. But must at
> least ONE tail release outlast the next tip release every X years to
> qualify the library for "tip & tail"? After all, the JEP "does not
> specify when or why tail trains are created, nor when or why they are
> discontinued."
In asking about "must", I think you're viewing JEP 14 as a specification
that can be tested, leading to conformance badges being given, etc --
but it's not. JEP 14 outlines a philosophy -- "Give users what they want
and don't give users what they don't want." -- and implements it with
only a small tweak to the traditional multi-train release model:
"Backport as little as possible."
If there's only one tail, and it's permanently abandoned in order to
concentrate all effort on tip releases going forward, then the library
isn't following a multi-train release model anymore, let alone T&T.
In order to claim you're doing T&T, you need to provide a tail that
meets the needs of stability-focused users over an extended period. Some
libraries might be able to fork and maintain a long-running tail (that
outlives subsequent tips) every two years like clockwork. Other
libraries might only be able maintain such a tail for a single notable
historical release, and without being able to commit to when the tail
releases will occur. In some domains, it might be OK if a library has
feature-driven tip releases that appear every few years, plus a single
tail train that makes releases infrequently (such that, for some time
after a tip release, it's not clear if the tail is going to outlive the
tip). This lack of timeliness might not be ideal for tail users, but it
might be the reality for a library with limited maintenance resources.
(We're reaching the margins of multi-train development now. If even the
low-cost T&T model can't keep a tail train maintained as tip releases
come and go, then the library may as well give up on trains and declare
itself one-size-fits-all. The users focused on stability will be
disappointed, but no release model can conjure resources from thin air.)
> Second, can a library publish a bug fix release on the tip train? Or is
> that automatically a tail release?
A tip release can absolutely have bug fixes only, with zero new
features/enhancements. If a library has a rapid time-boxed release
model, making tip releases every two months (say), then bugfix tip
releases might occur more often than not. Given this frenetic tip
energy, tail releases which *guarantee* zero new features/enhancements
are even more relevant for users focused on stability -- who might even
be satisfied with tail releases at a more stately pace, say, annually.
Alex
More information about the jdk-dev
mailing list