Matteo, Can you start the vote for this PIP? We should start working on 3.0.0 soon and this PIP is required to reach community consensus.
https://lists.apache.org/thread/d6rk2ntzwk8twznf82k7o6xgyb2k9s14 Thanks, Nicolò Boschi Il giorno mer 9 nov 2022 alle ore 09:37 Haiting Jiang < jianghait...@apache.org> ha scritto: > Hi all, > > What's status of this PIP? > > There's an issue talking about fixable vulnerabilities in the latest > release. > https://github.com/apache/pulsar/issues/18348 > > From what I see, one of the problems is that we take too long to make a > new release ( over 2 months for 2.10.2 ). Hopefully, this PIP could do some > help on the issue. > > Thanks, > Haiting > > On 2022/06/07 22:25:24 Matteo Merli wrote: > > https://github.com/apache/pulsar/issues/15966 > > > > -------- > > > > ## Motivation > > > > In PIP-47 ( > https://github.com/apache/pulsar/wiki/PIP-47:-Time-Based-Release-Plan), > > we have adopted a time-based release plan. This was the first attempt > > at establishing a new principle on how releases should b > > > > The main two benefits of this approach have been: > > > > 1. Clarity for users and developers on when to expect a release > > 2. Breaking a hard relationship between feature and release: a > > particular feature will be included in the release if it is completed > > in time. Otherwise, it will be bubbled up to the next release. > > > > The motivation for the current proposal is to extend the existing > > process to address the issues that we have seen and that were left out > > of the scope of PIP-47. > > > > ## Summary of existing issues in the process > > > > ### Short maintenance cycles for releases > > > > Since we're doing a 3 months release cycle, we are ending with 4 > > releases done per year, even though it's more close to 3 releases. > > > > There is a high cost to maintain a lot of old releases, backport bug > > fixes, and security patches. In general, we actively support the last > > 3 minor releases while continuing to develop the next release. E.g., > > 2.8, 2.9, and 2.10, while 2.11 is under development. > > > > The result is that a user adopting a particular release is forced to > > upgrade in a < 1-year timeframe to keep up to date and use a supported > > release. This timeframe is too short for many users as it imposes a > > lot of forced upgrades, for which they are not prepared in terms of > > available time and required effort. > > > > ### Live Upgrade/Downgrade compatibility path > > > > In Pulsar, we guarantee that users have a way to do live upgrades and > > downgrades with zero downtime. > > > > This is very powerful because it gives them the freedom to upgrade to > > a new release with the assurance of being able to roll back to the > > previous release in case any functional or performance regressions are > > encountered. > > > > Today, this compatibility is guaranteed across minor versions. Eg: I > > can do `2.7 -> 2.8 -> 2.7` as a live upgrade. > > > > What is not guaranteed is to "skip" releases. E.g.: `2.7 -> 2.9` might > > work or not, but it's not guaranteed. In that case an intermediated > > upgrade would be required: `2.7 -> 2.8 -> 2.9`. > > > > The reasons for which the "skip" upgrade might not work are multiple: > > 1. Incompatible upgrade of some dependency (e.g., ZooKeeper) that > > might not be compatible with an older version. > > 2. Adoption of a new metadata format or data format on disk. > > Every time we introduce a new incompatible format change (outside > > of a regular Protobuf field addition), we do it in a 2 steps way: > > - In a new release, we introduce the new feature/format, > > disabled by default. The new release can read both old and new > > formats, though it keeps writing the old format by default. > > - In a subsequent release, we change the default to the new format > > > > Note that this consideration is separate from the compatibility > > between clients and brokers, where we ***never*** break compatibility. > > The oldest available Pulsar client can still talk with the newest > > Pulsar broker, and vice versa, a new client, will be perfectly fine > > with an older broker (except the new features won't be working). > > > > ### Releases getting delayed > > > > Another problem we have been experiencing is that release cycles have > > been stretching considerably. Part of this has been because we have > > been reaching the end of the release window, preparing a candidate, > > and then taking a long time to flush out all issues found at the last > > minute in the new release. > > > > We need to ensure that we have a date set in stone to deliver the > > release to users. > > > > ## Proposal > > > > The proposal to address the above issues is composed of 2 parts. > > > > ### 1. Establish Long Term Support releases > > > > We need to provide a way for users to quickly understand the expected > > lifecycle timeline of a given release and for that timeline to be long > > enough not to be a constant update mandate. > > > > At the same time, we need to ensure that we maintainers are not > > spending all the time just maintaining a huge list of old releases. > > > > For that, we can use the established concept of "Long Term Releases" or > LTS. > > > > We will perform LTS releases at a fixed cadence every 18 months, and > > we will keep doing regular feature releases every 3 months as we're > > currently doing. > > > > The LTS releases will be identified by being a `.0` version. For example: > > * `3.0` -> LTS > > * `3.1` -> regular release > > * `3.2` -> regular release > > * `4.0` -> LTS > > > > The major version bump will not carry any special meaning in terms of > > "big features" included in the release or breaking API changes. > > Instead, it would simply signal the type of the release. > > > > #### Compatibility between releases > > > > It will be guaranteed to be able to do a live upgrade/downgrade > > between one LTS and the next one. > > > > For example: > > > > * `3.0 -> 4.0 -> 3.0` : OK > > * `3.2 -> 4.0 -> 3.2` : OK > > * `3.2 -> 4.4 -> 3.2` : OK > > * `3.2 -> 5.0` : Not OK > > > > #### Release support expectation > > > > We will publish clear guidelines on the Pulsar website regarding the > > expected timeline for which each release is supported and when the new > > feature and LTS releases will be available. > > > > The support model will be: > > > > * LTS > > * Released every 18 months > > * Support for 24 months > > * Security patches for 36 months > > * Feature releases > > * Released every 3 months > > * Support for 6 months > > * Security patches for 6 months > > > > This can be translated into: > > * We support the last 2 LTS releases and the last 2 feature releases > > * Security patches are provided for the past 3 LTS releases and 2 > > feature releases > > > > Users are therefore encouraged to stay in an LTS release until they > > are ready to jump into the next LTS unless they want to have access to > > some of the features included in the latest feature releases. > > > > ### 2. Introduce a code-freeze period in the release cycle > > > > To address the problem with delayed release cycles, we are introducing > > a code freeze period that will give us time to stabilize the release > > code while not blocking new changes from being merged into master for > > the subsequent version. > > > > This code-freeze will only be adopted for LTS/feature releases, not > > for any patch release. > > > > In a 3 months release cycle, the last 3 weeks will be marked as a code > > freeze period. The release manager will branch off from master, and he > > will be responsible for selecting the changes that will be > > cherry-picked in the release branch. > > > > From the code-freeze point, to minimize the risk of delaying the > > release, only bug fixes involving a regression of behavior compared to > > a previous release should be allowed. Occasional exceptions will be > > possible after higher scrutiny of the change. > > > > At the moment of the code freeze, the release manager will also > > prepare a release candidate in the same way we are doing today. > > Committers, contributors, and users will test this RC to detect issues > > as early as possible. > > > > A formal vote by the PMC will not be required at this stage (though > > any disagreement should be sent out ASAP). > > > > After 1 week, if there are any changes, the release manager will > > provide a new RC release that the community will test again. > > > > After 1 more week, if there are any changes, a third RC will be > > prepared, and this will be submitted to vote to the PMC. Otherwise, > > the vote will be held on an earlier RC release if no issues are found. > > > > The last 1 week will be used for the voting process and for updating > > Pulsar website and the blog post announcing the release, which should > > (hopefully) happen on the scheduled day. > > > > > > > > > > -- > > Matteo Merli > > <matteo.me...@gmail.com> > > >