muralibasani opened a new pull request, #23769:
URL: https://github.com/apache/kafka/pull/23769
Discussion - Release dates are re-negotiated on dev@ for every release, and
releases ship a median of ~40 days after the planned target.
Add release/schedule.py, which projects KIP freeze, feature freeze, code
freeze, target and realistic release dates from past releases (branch cuts and
RC/release tags in git, plus the published release plans on the wiki), compares
scenarios, and shows the open blockers of a release.
Standard library only, so it runs without the release virtualenv.
#### To print next 3 releases --- python3 release/schedule.py
```
% python3 release/schedule.py
Note: 4.4.0 is not released (no tag) yet and is left out of the release
duration statistics, pass --release-date 4.4.0=YYYY-MM-DD to include it
Past releases used for the calculation (last 5 release branches, see
--window):
version branch cut (FF) RC0 released RCs cut->RC0 d
RC0->release d cut->release d commits after cut commits after RC0 days
since prev cut
------- --------------- ---------- ---------- --- ----------
-------------- -------------- ----------------- -----------------
-------------------
4.0.0 2024-12-16 2025-02-22 2025-03-18 5 68 24
92 406 51
4.1.0 2025-06-10 2025-07-09 2025-09-02 4 29 55
84 77 30 176
4.2.0 2025-11-21 2026-01-13 2026-02-16 5 53 34
87 113 33 164
4.3.0 2026-03-18 2026-04-28 2026-05-20 3 41 22
63 101 13 117
4.4.0 2026-07-27 2026-08-21 not yet 5 25
209 82 131
Source: git. Branch cut = merge-base of upstream/X.Y with upstream/trunk;
RC0, RCs and released =
dates of the X.Y.0-rcN and X.Y.0 tags. Empty RC0 = no rc0 tag kept for that
release.
Planned (wiki release plan) vs actual (git):
version KIP freeze feature freeze branch cut slip d code freeze target
release released slip d
------- ---------- -------------- ---------- ------ -----------
-------------- ---------- ------
4.0.0 2024-11-20 2024-12-11 2024-12-16 5 2025-01-15
2025-01-29 2025-03-18 48
4.1.0 2025-05-14 2025-06-04 2025-06-10 6 2025-06-25
2025-07-09 2025-09-02 55
4.2.0 2025-10-29 2025-11-19 2025-11-21 2 2025-12-10
2026-01-07 2026-02-16 40
4.3.0 2026-02-25 2026-03-18 2026-03-18 0 2026-04-08
2026-05-06 2026-05-20 14
4.4.0 2026-07-08 2026-07-29 2026-07-27 -2 2026-08-12
2026-09-09 not yet
Source: "Release Dates" section of the "Release Plan X.Y.0" pages on
cwiki.apache.org, e.g.
https://cwiki.apache.org/confluence/spaces/KAFKA/pages/325421614/Release+Plan+4.0.0
Based on 4.0.0, 4.1.0, 4.2.0, 4.3.0, 4.4.0:
feature freeze -> next feature freeze (4) median 131d, p75 164d, min
117d, max 176d
feature freeze -> first RC (4) median 41d, p75 53d, min 29d,
max 68d
first RC -> release (4) median 24d, p75 34d, min 22d,
max 55d
feature freeze -> release (4) median 84d, p75 87d, min 63d,
max 92d
release candidates (4) median 4, p75 5, min 3, max 5
planned feature freeze -> branch cut (5) median 2d, p75 5d, min -2d, max
6d
planned target -> actual release (4) median 40d, p75 48d, min 14d,
max 55d
(release plans assume feature freeze -> release = 42d: 2w to code freeze +
4w; phase lengths 3w/2w/4w from the 4.4.0 release plan)
Latest known release: 4.4.0 (feature freeze 2026-07-27, released unknown)
Dates: a published wiki release plan is used as is (see --ignore-wiki-plan),
otherwise
KIP freeze = previous feature freeze + median interval - 3w
feature freeze = KIP freeze + 3w, code freeze = feature freeze + 2w,
target release = code freeze + 4w
First RC / realistic release: feature freeze + p50 of history
version KIP freeze derived from feature freeze code freeze first
RC target release realistic release
------- ---------- ----------------- -------------- -----------
---------- -------------- -----------------
4.5.0 2027-01-13 wiki release plan 2027-02-03 2027-02-17
2027-03-16 2027-03-17 2027-04-28
4.6.0 2027-05-19 history 2027-06-09 2027-06-23
2027-07-20 2027-07-21 2027-09-01
4.7.0 2027-09-22 history 2027-10-13 2027-10-27
2027-11-23 2027-11-24 2028-01-05
Warnings:
- 4.5.0: feature freeze overlaps Lunar New Year (2027-02-03 .. 2027-02-13)
- 4.7.0: RC/vote window overlaps Christmas/New Year (2027-12-20 ..
2028-01-03)
```
#### To print status of one release --- python3 release/schedule.py
--release-date 4.4.0=2026-10-12 status 4.5.0
```
% python3 release/schedule.py --release-date 4.4.0=2026-10-12 status 4.5.0
Past releases used for the calculation (last 5 release branches, see
--window):
version branch cut (FF) RC0 released RCs cut->RC0 d
RC0->release d cut->release d commits after cut commits after RC0 days
since prev cut
------- --------------- ---------- ------------ --- ----------
-------------- -------------- ----------------- -----------------
-------------------
4.0.0 2024-12-16 2025-02-22 2025-03-18 5 68 24
92 406 51
4.1.0 2025-06-10 2025-07-09 2025-09-02 4 29 55
84 77 30 176
4.2.0 2025-11-21 2026-01-13 2026-02-16 5 53 34
87 113 33 164
4.3.0 2026-03-18 2026-04-28 2026-05-20 3 41 22
63 101 13 117
4.4.0 2026-07-27 2026-08-21 2026-10-12 * 5 25 52
77 209 82 131
Source: git. Branch cut = merge-base of upstream/X.Y with upstream/trunk;
RC0, RCs and released =
dates of the X.Y.0-rcN and X.Y.0 tags. Empty RC0 = no rc0 tag kept for that
release.
* = release date given with --release-date (not tagged yet).
Planned (wiki release plan) vs actual (git):
version KIP freeze feature freeze branch cut slip d code freeze target
release released slip d
------- ---------- -------------- ---------- ------ -----------
-------------- ------------ ------
4.0.0 2024-11-20 2024-12-11 2024-12-16 5 2025-01-15
2025-01-29 2025-03-18 48
4.1.0 2025-05-14 2025-06-04 2025-06-10 6 2025-06-25
2025-07-09 2025-09-02 55
4.2.0 2025-10-29 2025-11-19 2025-11-21 2 2025-12-10
2026-01-07 2026-02-16 40
4.3.0 2026-02-25 2026-03-18 2026-03-18 0 2026-04-08
2026-05-06 2026-05-20 14
4.4.0 2026-07-08 2026-07-29 2026-07-27 -2 2026-08-12
2026-09-09 2026-10-12 * 33
Source: "Release Dates" section of the "Release Plan X.Y.0" pages on
cwiki.apache.org, e.g.
https://cwiki.apache.org/confluence/spaces/KAFKA/pages/325421614/Release+Plan+4.0.0
Based on 4.0.0, 4.1.0, 4.2.0, 4.3.0, 4.4.0:
feature freeze -> next feature freeze (4) median 131d, p75 164d, min
117d, max 176d
feature freeze -> first RC (5) median 41d, p75 53d, min 25d,
max 68d
first RC -> release (5) median 34d, p75 52d, min 22d,
max 55d
feature freeze -> release (5) median 84d, p75 87d, min 63d,
max 92d
release candidates (5) median 5, p75 5, min 3, max 5
planned feature freeze -> branch cut (5) median 2d, p75 5d, min -2d, max
6d
planned target -> actual release (5) median 40d, p75 48d, min 14d,
max 55d
(release plans assume feature freeze -> release = 42d: 2w to code freeze +
4w; phase lengths 3w/2w/4w from the 4.4.0 release plan)
Release 4.5.0 as of 2026-10-10 (dates: wiki release plan)
KIP freeze 2027-01-13 (in 95 days)
feature freeze 2027-02-03 (in 116 days)
code freeze 2027-02-17 (in 130 days)
first RC 2027-03-16 (in 157 days)
target release 2027-03-17 (in 158 days)
realistic release 2027-04-28 (in 200 days)
warning: feature freeze overlaps Lunar New Year (2027-02-03 .. 2027-02-13)
Open JIRA issues with fixVersion 4.5.0: 54, of which Blocker/Critical: 4
key priority status assignee days idle summary
----------- -------- --------------- ----------- ---------
--------------------------------------------------------------------------------
KAFKA-19688 Critical Open frankvicky 58 Provide
clean upgrade path from transformValues to processValues
KAFKA-21070 Critical Open sunm2n 9 KafkaStreams
StateUpdater Task Handle Leak on Unclean Shutdown
KAFKA-20532 Critical Patch Available sahildevgon 5 Defensive
trimming of min.insync.replicas in controller and kafka-topics to tole
KAFKA-21253 Critical Open bbejeck 1 Failed
transaction abort in RecordCollectorImpl.closeDirty() skips clearing chan
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]