Skip to content

Commit f7e8abe

Browse files
committed
Initial draft of the new LTS cadence blog post
1 parent cc983b5 commit f7e8abe

File tree

4 files changed

+121
-0
lines changed

4 files changed

+121
-0
lines changed

_posts/2025-02-01-lts-cadence.adoc

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
---
2+
layout: post
3+
title: 'Quarkus LTS - Release Cadence Explained'
4+
date: 2025-02-01
5+
tags: release
6+
synopsis: 'We are introducing a new release cadence for the LTS streams.'
7+
author: cescoffier
8+
---
9+
:imagesdir: /assets/images/posts/lts-cadence
10+
11+
12+
Quarkus releases an https://quarkus.io/blog/lts-releases/[LTS] (Long-Term Support) version every six months.
13+
LTS is designed for users who prioritize stability over new features.
14+
These versions are maintained for one year and receive critical bug and CVE fixes.
15+
An overlap period allows a smooth upgrade to the next LTS.
16+
17+
Until now, LTS micro-releases (e.g., 3.8.1, and 3.8.2) have occurred regularly but without a predictable schedule.
18+
**We’re changing this.**
19+
20+
****
21+
**TLDR:**
22+
LTS releases will follow a predictable cadence, with micro-releases every two months.
23+
The <<new-cadence>> section provides more details.
24+
****
25+
26+
== Releases, Releases, and More Releases
27+
Since its inception, Quarkus has followed a fast-paced release cycle:
28+
* _Minor releases:_ Once per month (e.g., 3.16, 3.17).
29+
* _Micro-releases:_ Weekly (e.g., 3.17.1, 3.17.2).
30+
31+
The development process revolves around the main branch, which serves as the cutting edge of Quarkus development.
32+
33+
Here’s how the regular release process works:
34+
35+
* _Minor releases (3.y)_: A new branch is created from _main_, capturing all the changes from development up to that point.
36+
* _Micro-releases (3.y.z)_: These only include bug fixes and CVE remediations, backported from _main_ to the minor release branch.
37+
38+
image::regular-release-cadence.png[align="center", caption="Regular Release Cadence"]
39+
40+
== How LTS Releases Differ
41+
42+
LTS releases prioritize stability over the latest features, and the process reflects this.
43+
Let’s look at the example of 3.19 (a minor release) and 3.20 (the next LTS):
44+
45+
1. A new branch for 3.19 is created from main, containing the latest development at that time.
46+
2. Bug fixes and CVE remediations are backported to the 3.19 branch for its micro-releases.
47+
3. When preparing the LTS release (3.20), the branch is not created from main.
48+
Instead, it is created from the 3.19 branch, ensuring no new features from main are included.
49+
50+
This approach improves the reliability of LTS releases by excluding potentially unstable or unproven changes.
51+
52+
image::lts-release-principle.png[align="center", caption="LTS Release Principle"]
53+
54+
Once we had this initial release, we did not have clear rules about the new micro releases of the LTS (3.20.1, 3.20.2…).
55+
So, while we have a predictable release calendar for the regular micro and minor releases, LTS micro releases were irregular.
56+
57+
[[new-cadence]]
58+
== A New Cadence for LTS Micro-Releases
59+
60+
Starting with 3.15 LTS, we’re introducing a predictable cadence for LTS micro-releases:
61+
62+
* A new LTS version will be released every six months.
63+
* For each LTS, micro-releases will occur every two months (e.g., 3.20.1, 3.20.2).
64+
65+
image::new-lts-cadence.png[align="center", caption="LTS Micro-Release Cadence"]
66+
67+
== What’s Included in an LTS Micro-Release?
68+
69+
LTS micro-releases are strictly limited to:
70+
71+
* Bug fixes considered low-risk.
72+
* CVE fixes (moderate and critical).
73+
* Dependency updates for CVE remediation or critical bug fixes.
74+
75+
**Nothing else.**
76+
77+
== Emergency Exceptions
78+
79+
In the event of a critical CVE (because we know it will happen), we’ll release an emergency micro-release outside the two-month cadence.
80+
These releases may follow a separate versioning scheme (e.g., 3.20.0.1) to indicate their exceptional nature (still under discussion).
81+
82+
== What if?
83+
84+
_What if I want a feature in the next LTS?_
85+
86+
To be included, the feature must be merged into main at least one month before the LTS branch is created.
87+
Don’t play with the clock - having a feature merged can take time, and the CI tends to be busy just before releases.
88+
89+
_What if I want a feature to be added to an existing LTS?_
90+
91+
**No.** New features are only included in future LTS versions.
92+
For immediate access, consider using regular (non-LTS) releases.
93+
94+
_What if a bug fix is needed in the next LTS micro-release?_
95+
96+
We’re happy to consider backporting bug fixes, provided they are low-risk.
97+
Risky fixes will require further discussion and may not be included.
98+
We will particularly consider bugs impacting features from previous LTS releases.
99+
100+
_What if I want to know what’s included in the next LTS micro-release?_
101+
102+
We’re establishing an LTS working group to improve transparency and track backports.
103+
104+
_What if a moderate CVE is reported against an LTS?_
105+
106+
The next LTS micro will include moderate CVE fixes every two months.
107+
Exceptional releases are only for important (where there is no mitigation) and critical CVEs.
108+
109+
_How will the Quarkus Platform align with this cadence?_
110+
111+
The Quarkus Platform will follow the same release schedule.
112+
If you are a platform member, we recommend subscribing to this coordination group if you have not already done so.
113+
114+
== Two-Line Summary
115+
116+
* For regular users: Monthly minor and weekly micro-releases continue as before.
117+
* For LTS users: Expect LTS versions every 6 months, with micro releases every 2 months.
118+
119+
The next LTS will be https://quarkus.io/blog/next-lts-3-20/[3.20].
120+
The dates and schedule are communicated on the https://github.com/quarkusio/quarkus/wiki/Release-Planning[Release Planning Wiki Page].
121+
168 KB
Loading
185 KB
Loading
150 KB
Loading

0 commit comments

Comments
 (0)