Recap and proposal: align the WordPress release cycle with the industry standard

Following a lively conversation that happened in this blog in October 2020, here is the recap of the different ideas that were brought up and the proposal to move forward.

Rename phases

There is a consensus here.

NowChange to
Phase 1: Planning and securing team leadsPhase 1: Preliminary Planning
Phase 2: Development work beginsPhase 2: Alpha
Phase 3: BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process.Phase 3: Beta (stays the same)
Phase 4: Release candidaterelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta).Phase 4: Release Candidate (stays the same)
Phase 5: LaunchPhase 5: General release

Restructure Beta

The main point of discussion is what is allowed and what is not allowed during Beta.

Reserving Beta for testing and fixing bugs discovered by testing respects the efforts of the beta-testers by not introducing new bugs in areas they’ve already tested.

@azaozz

The wider software industry has done this work [how a release cycle is structured] for us. A mature software project is one that has a beta period during which the focus is on testing changes made during this release cycle to ensure its stability. Our current workflow means a random bugfix can go in ten minutes before RC 1.

@johnbillion

However, there are concerns specific to our project

I worry that we aren’t allowing space for older bugs that aren’t specific to the planned features in the release. I also worry that by calling hard freeze earlier in the process we narrow the window for feature inclusion too much. I think Matt agrees with my thoughts there, as well.

@chanthaboune

My concern here is to not shorten the time allowed for fixing older bugs, which I see as an essential part of the project.

@sergeybiryukov

Proposed solutions

Adding a “Feature Freeze” period came up from multiple parties and it seems to be the most popular solution to allow contributors to focus on features first and defect work later, without doing the defect work in Beta, which should be reserved for testing.

Easier said than done… @hellofromtonya presented us with two solutions

Proposal 1: feature freeze and then do defect work

This proposal is for a feature freeze 2-3 weeks before Beta 1 and then allocation of this time period for defect work.

Pro

This proposal has a clear definition in the major releasemajor release A release, identified by the first two numbers (3.6), which is the focus of a full release cycle and feature development. WordPress uses decimaling count for major release versions, so 2.8, 2.9, 3.0, and 3.1 are sequential and comparable in scope. cycle after the major release is kicked off and when the release squad is in place. 

Concerns

  • It does not capitalize on the overlap between releases.
  • It does not provide a way to reduce the overall release cycle.
  • Does the major release squad need to be focused on the continuous defect work (i.e. defects not directly caused by the release)?

Proposal 2: defect work during release overlap

This proposal front-loads the defect work to overlap the previous release’s Beta and RC.

Pros

  • Work continues with purpose and focus while the previous release is in its testing and release phases. It capitalizes on the time between major releases while keeping the momentum rolling forward.
  • It provides an opportunity to shorten the overall major release cycle.

Cons:

  • Do we need the current release squad to be involved in this early phase or even in the defect cycle?
  • Could the component maintainers and CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. Team work together to help prioritize and escalate defect work?

Branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch". at Beta

In both solutions, trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. gets branched at Beta

Length of Beta

Both solutions beg the question: is Beta long enough? For 5.7 it’s three weeks. If the leadership of the project decides to move forward with one of the above-proposed solutions, WordPress 5.8 will have to account for a longer Beta probably. See:

Concern: We already have feedback that it’s hard to keep up with changes for our pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party/theme authors. While a change like this is possible, it would require some paradigm shifts that I don’t think have been fully explored.

@chanthaboune

Call to action

  1. Discuss this during the next dev-chat (January 13) and leave comments open for an additional week (January 20)
  2. Present any additional evidence gathered to Josepha and Matt for final saying.

Thank you @hellofromtonya for peer review