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]

Reply via email to