rfc:release_cycle_update
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
rfc:release_cycle_update [2023/11/05 21:44] – created bukka | rfc:release_cycle_update [2024/04/09 10:41] (current) – derick | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== PHP RFC: Your Title Here ====== | + | ====== PHP RFC: Release cycle update |
- | * Version: 0.1 | + | * Version: 0.2 |
- | * Date: 2023-11-05 | + | * Date: 2024-03-21 |
- | * Author: Jakub Zelenak, | + | * Authors: Jakub Zelenka <bukka@php.net>, Derick Rethans < |
- | * Status: | + | * Status: |
===== Introduction ===== | ===== Introduction ===== | ||
- | The current release cycle has been introduced in 2010 by [[rfc: | + | |
+ | The current release cycle has been introduced in 2010 by [[rfc: | ||
+ | working mostly well, but there have been some minor issues. The length of cycle is often mentioned as being too short. | ||
+ | |||
+ | It is also quite risky to introduce more complex fixes later in the active support | ||
+ | not allow fixing potential regressions. In addition, it is not exactly clear which features can be introduced during | ||
+ | the beta period, Release Candidates, and Bug Fix releases. | ||
+ | |||
+ | The number of pre-releases also seems unnecessarily long, especially during the Release Candidate stage, | ||
+ | where there are few Release Candidate specific changes. | ||
===== Proposal ===== | ===== Proposal ===== | ||
- | This RFC proposes following changes to the release cycle | + | This RFC aims to address the above issues and proposes |
- | ==== Extending security support by one year ==== | ||
- | This is a straight forward change | + | ==== Allow features |
- | The proposal does not include | + | Feature freeze is supposed to happen when we start making beta releases, but this does not always happen. |
+ | |||
+ | Right now, at the end of the alpha period, all RFCs targeting that version must have voting finished, | ||
+ | but the implementation is frequently necessarily done during the beta period. | ||
+ | |||
+ | RFC implementations are often those that can have a major impact on API and ABI stability. | ||
+ | |||
+ | It therefore seems illogical to allow RFC-requiring features to be merged during the | ||
+ | beta period, but not minor improvements that do not require an RFC, such as adding constant, parameters, | ||
+ | config options, or even small functions or methods. | ||
+ | |||
+ | We propose to explicitly allow minor features, optimizations, | ||
+ | beta period. | ||
+ | |||
+ | The recommendation is to not accept extensive refactoring, | ||
+ | Release Managers must approve any such small feature during the beta period, as is already the case. | ||
+ | |||
+ | A similar rule was in effect during the PHP 8.3 release cycle, and it worked well. | ||
+ | |||
+ | |||
+ | ==== Disallow New Features in Release Candidates and Bug Fix releases ==== | ||
+ | |||
+ | Currently, we allow exceptions for small self-contained feature additions. | ||
+ | |||
+ | This is often a source of confusion because it is hard to define what a "small self-contained feature" | ||
+ | An example of such a small feature is the addition of a constant. | ||
+ | |||
+ | The problem with allowing small features, is that it creates a precedent for other (larger) features to | ||
+ | be included as well. | ||
+ | |||
+ | It might be also hard for users to find if a feature is available, and they might have to add an explicit | ||
+ | check in their code. This can also get confusing in UPGRADING and documentation. | ||
+ | |||
+ | We propose to drop this small feature exception, and disallow any feature addition in Release Candidates, | ||
+ | Bug Fix releases, and of course, Security releases. | ||
+ | |||
+ | ==== Reduce number of RCs to Four ==== | ||
+ | |||
+ | The release cycle is too long, so we propose to reduce the number of RCs by 2, resulting in only 4 RCs if everything | ||
+ | goes according to plan. This should be more than enough, and if there is any problem found, additional RCs can be | ||
+ | created if needed. This reduces the release cycle by one month, allowing for this month to be used for normal development | ||
+ | of the language. | ||
+ | |||
+ | |||
+ | ==== Extend Security Support by One Year ==== | ||
+ | |||
+ | This change will extend release cycle to 4 years: 2 years of bug fixes, and 2 years of security fixes. | ||
+ | |||
+ | The idea is that it will give users longer support with a relatively small effort, as it doesn' | ||
+ | that much time for RMs. Security releases are not that often and relatively easy. | ||
+ | |||
+ | The proposal does not include | ||
+ | Windows builds as this can add significantly more load. | ||
+ | |||
+ | This means that Windows users should track security changes in dependant libraries, if they want to keep | ||
+ | using PHP in its second | ||
+ | build dependent | ||
==== Allowing recent regression fixes during security support ==== | ==== Allowing recent regression fixes during security support ==== | ||
- | This proposal is to allow fixes of regressions caused by other fixes introduced | + | This proposal is to allow fixes of regressions caused by other fixes merged to the supported branch |
+ | months. The reasoning behind this is that more complex fixes will be possible | ||
+ | potentially | ||
+ | a fix for that even if the branch allows only security fixes. | ||
- | ==== Disallowing new features completely in RC and bug fixing release | + | ==== Extend Releases Cycle to End of Year ==== |
- | Currently there is an exception that states following: | + | Right now, PHP comes out of normal or security release 2 or 3 years after the first GA release. |
- | Bugfixes only (with a room for exceptions on a case by case basis and only for small self contained features additions). | + | This means that the date shifts around, which is hard to keep track of. We propose to align the |
+ | end of bug fix and security releases | ||
- | This proposes to drop this completely and disallow any feature addition | + | If a GA was delayed until early in a new year due to issues found during the release |
+ | candidate period, then the December 31st end date would not move a whole new year further. | ||
- | ==== Allow feature that do not require RFC in beta ==== | ||
- | We allow RFC to be implemented during beta so other features should be allowed too. | + | ===== Revised Timeline ===== |
- | ==== Reduce number of RC to 4 ==== | + | If all the proposals are accepted, the new cycle for PHP 8.4 will then look like the following, |
+ | pushing the start from Jun 6th 2024, to July 4th 2024: | ||
- | The release | + | * Jul 04 2024: Alpha 1 |
+ | * Jul 18 2024: Alpha 2 | ||
+ | * Aug 01 2024: Alpha 3 | ||
+ | * Aug 13 2024: Feature freeze — All RFCs must have their voting concluded, and *should* have been merged. | ||
+ | * Aug 15 2024: Beta 1 | ||
+ | * Aug 29 2024: Beta 2 | ||
+ | * Sep 10 2024: RFCs features, and features not requiring an RFC, must be merged (the tagging date for the Sep 12 Beta 3 release) (with approval | ||
+ | * Sep 12 2024: Beta 3 | ||
+ | * Sep 24 2024: Branching of the PHP-8.4 release branch (not a new thing) | ||
+ | * Sep 26 2024: RC 1 — No more new features may be introduced into the 8.4 release from now on. | ||
+ | * Oct 10 2024: RC 2 | ||
+ | * Oct 24 2024: RC 3 | ||
+ | * Nov 07 2024: RC 4 | ||
+ | * Nov 21 2024: GA | ||
+ | * Dec 31 2026: End of Bug Fix Releases — Start of Security Releases | ||
+ | * Dec 31 2027: End of fixing regressions in Bug Fix releases — ABI incompatible versions of dependent libraries on Windows will no longer be updated. | ||
+ | * Dec 31 2028: End of Security Releases | ||
===== Proposed PHP Version(s) ===== | ===== Proposed PHP Version(s) ===== | ||
- | The changes will apply immediately on the all currently supported branches. It has been agreed between release managers that the additional security support will be possible to already apply on PHP-8.0. It means that PHP-8.0 will get extra year of security fixes. | ||
+ | The changes will apply immediately on the all currently supported branches from PHP 8.2. It also means that PHP 8.1 would | ||
+ | get an extra year of security fixes if the proposal is accepted. | ||
- | ===== Open Issues ===== | ||
- | Make sure there are no open issues when the vote starts! | ||
- | |||
- | ===== Future Scope ===== | ||
- | This section details areas where the feature might be improved in future, but that are not currently proposed in this RFC. | ||
===== Proposed Voting Choices ===== | ===== Proposed Voting Choices ===== | ||
- | Standard separate | + | A normal 2/3rd majority |
+ | |||
+ | If any of the proposed changes passes, the [[https:// | ||
+ | will be updated with any accepted changes, and currently operating rules. | ||
+ | |||
+ | Voting runs until **Monday April 29th, at noon UTC**. | ||
+ | |||
+ | <doodle title=" | ||
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | <doodle title=" | ||
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | <doodle title=" | ||
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | <doodle title=" | ||
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | <doodle title=" | ||
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | <doodle title=" | ||
+ | * Yes | ||
+ | * No | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
===== Patches and Tests ===== | ===== Patches and Tests ===== | ||
+ | |||
+ | The implementation of this RFC is a change to the https:// | ||
===== References ===== | ===== References ===== | ||
- | https:// | + | * Original Release Process RFC: https:// |
+ | * Existing Release Process Policy document: https:// | ||
===== Rejected Features ===== | ===== Rejected Features ===== | ||
Keep this updated with features that were discussed on the mail lists. | Keep this updated with features that were discussed on the mail lists. |
rfc/release_cycle_update.1699220667.txt.gz · Last modified: 2023/11/05 21:44 by bukka