Preliminary Roadmap for 6.0 (Gutenberg Phase 2)

Yesterday, WordPress 5.9 Joséphine was released with the help of hundreds of contributors and achieving a big milestone for WordPress. It’s now time to start thinking about next steps and the general scope for 6.0. As before, this is meant to be a high level overview of the different areas of focus, not an exhaustive list.

The overall aim is to consolidate and expand the set of customization tools introduced in 5.9 for creating themes with blocks, with a special focus towards usability and refinement. This new release could be considered a conceptual wrap for GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/: Phase 2. This doesn’t mean the customization phase would be concluded with it, but that its main features would have been established.

Editor

The introduction of the site editor marked a big milestone but also just a first step in the journey. There are various limitations that need to be lifted and features that didn’t make the cut that need to be revisited. We are also going to be learning a tremendous amount from users now that the initial work is out in the world to be experienced.

  • Refine the information architecture and template browsing experience. There’s work to be done to better organize the experience of interacting with the site editor, global styles, templates, and navigation as a whole. (36667)
  • Improve template creation (aiming at never showing disconcerting empty states) and allow the easy creation of more specific templates (i.e: category-$slug). The selection of new templates is artificially constrained right now in the interface. Opening that up should better express the power of the site editor as a web creation tool. (37407)
  • Expose site structure as “navigation” outside the navigation blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.. This is an important aspect to not limit site navigation editing exclusively to the site canvas, which for many reasons can be initially hidden from view. (36667)
  • Introduce browse mode to be able to conveniently follow links to different parts of the site. Conversely, the template editor that spawns when editing posts or pages also needs to establish better flows with the site editor. There’s a larger theme of connecting pages and templates to be explored. (23328)
  • Embrace style alternates driven by jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. variations. This was teased in various videos around the new default theme and should be fully unveiled and presented in 6.0. One of the parallel goals is to create a few distinct variations of TT2 made just with styles. (35619)
  • Improve post settings design and organization. The sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. has gone without many updates for a while and could use improvements in clarity and design.
  • Complete the scope of global styles. Introduce easy export & import; support for revisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision.; etc. (27941
  • Remove coupling of templates to specific themes. This is crucial for properly embracing the power of block templates. Switching themes should not cause the disappearance of your modified templates. This is also fundamental for offering more granular combinations instead of complete theme swaps, the ability to add new set of templates (relevant for plugins that introduce new templates), or changing individual parts of a site. (See also.)
  • Explore more advanced drafting and scheduling for the site editor. Some of this work is meant to happen more in depth during Phase 3, which will include more focus on editorial flows, but there’s still some paving steps to implement. (29575, 29388, 31456)
  • There should also be some room for some minor back to basics around the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. writing experience and further improvements to performance and usability. Areas to keep an eye on are the reliability of undo/redo, keyboard interactions, multi-selection, etc.

Patterns

It’s also time to expand the usability of patterns as a main ingredient when it comes to building pages and sites, now that most of the infrastructure has been established.

  • Prioritize pattern insertion on template building. This is a proposal to make patterns more central to the experience of creating theme templates and pages. (31153)
  • Simplify registration of patterns for themes. This might take the shape of a patterns folder with file headers that are automatically registered. All in all, it should be super easy for themes to provide a collection of patterns or to specify starter content as patterns. (36751)
  • Introduce page patterns for page creation. This has been on the horizon for a while and we should have enough building blocks to tackle it properly. It’s also an occasion to improve upon and align with the new “explore” modal that connects with the patterns directory.
  • Use patterns as possible transforms for offering “layout” options. Inserting new patterns is just a start, but often you want to change existing content or shapes into new ones. Patterns have some of those mechanisms but they need to be better presented and embraced. (27575)

Blocks

  • Finalize scope of navigation block and its overlay rendering. The navigation block introduced in 5.9 contains a whole world of customization and opportunities that needs to continue to expand and improve. In addition to the block itself, several flows need to be refined around transporting and initializing block menu data.
  • Introduce various new blocks to power the display of comments on themes. (34994, 38107)
  • Allow the featured imageFeatured image A featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts. to be an attribute of other blocks (like Cover, Media & Text, etc) to expand what designs can be achieved.
  • Allow Quotes and Lists to have child blocks. Some of the current limitations of the writing experience arise from this constraint. (25892)
  • Improve the Table block. There’s a good design direction to finally implement. (32400)
  • Explore the viability of inline tokens. This has come up repeatedly in the context of rendering dynamic strings (such as current date) in rich text blocks.
  • Migrate default block styles into proper style attributes. Continue the work put into global styles by making all systems understand each other.
  • Pick up the work done for a Table of Contents block.

Design Tools (33447)

A lot of progress was made in 5.9 around consolidating the set of design tools and introducing new ones to address major gaps in the experience and providing block authors with simpler ways to register them. For 6.0 there’d be a concerted effort around tightening consistency, introducing more responsive capabilities, and expanding the Supports & Elements APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.. Another important goal is to continue to make it easier for third-party blocks to adopt these tools.

  • Layout:
    • Address confusions and shortcomings of layout features (including mindbenders like “inherit layout”). (28356)
    • Explore more convenient direct manipulation for height and width (alignment distribution) of blocks.
    • Incorporate more definitive responsive handling (min/max containers) into the current flex-based tools. (34641)
  • Typography:
    • Introduce responsive fonts with good defaults. (33543)
    • Add a Web Fonts API connected with global styles. (37140)
    • Explore paragraphs with indents and justification with hyphenation as global styles settings.
  • Elements:
    • Introduce support for customizing block Captions.
    • Investigate hover / focus effects and related problems.

Gradual Adoption

Full block themes are at the avant-garde of the WordPress evolution, but work continues to happen to improve how all themes can interact with blocks and make use of the new tools gradually and at their own pace.

  • Continue to adopt theme.json configuration for non-block themes as it aims to simplify and consolidate support for block properties and their capabilities.
  • With the “focused template part” editor established there are new opportunities for non-block themes to start incorporating specific areas for blocks using the site editor interface in a more gradual way, when ready to do so. (37943)
  • Utilize what we have implemented for the navigation block and site structure as the interface to eventually replace the navigation screen.
  • Explore the flows for creating some dynamic templates with blocks (for example, just the archive), similar to the custom page templates support in classic themes.

Please, help define the work to be done by joining the conversations listed in the issues above or giving feedback!

#6-0, #gutenberg

Proposed improvements to the Core Editor chat agenda and format

This post was coauthored with (some of) the facilitators of the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Editor chat – @zieladam, @annezazu, @bph, @fabiankaegy, @paaljoachim.

The Core Editor chats are a useful opportunity for contributors to gather, stay updated and share ideas on how to improve the blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor.

Recently, the meeting facilitators (named above) have been discussing making some changes to the format of the chat with the goal of reducing the quantity of status updates in favour of more informal discussion and collaboration. This will involve removing some sections entirely and reducing others in order to make best use of the available meeting time.

To allow for feedback, we are proposing that these changes come into effect as of the Core Editor on 2nd February 2022.

Why are these changes needed?

Regularly chat attendees will know that the most valuable Core Editor chats are those which contain good dialogue and discussion between contributors.

This is particularly true when GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ Core team members are in attendance, as they are able to provide a unique level of insight and expertise based on their understanding of the foundation of the editor itself.

In the past, such discussions have proven to be very useful for contributors seeking help with technical questions and/or to those submitting new proposals for consideration by the community.

As facilitators, we have noticed that this type of dialogue occurs most frequently during the “Open Floor” section of the meeting where attendees are encouraged to submit questions for discussion by those present.

We want to do our best to encourage and facilitate such opportunities on a more regular basis.

What will change?

As a result of these conclusions, we are proposing the following high level changes to the Core Editor chat format:

  • General status updates to be reduced to a minimum.
  • Key project updates to become “async”.
  • An extension of the current Open Floor section.

Let’s visit these in a little more detail.

General status updates to be kept to a minimum

The facilitator will endeavour to cover only the most critical status updates. Currently these are typically:

  • latest Gutenberg release
  • current WordPress release cycle news.

The length of these segments will be considerably reduced in favour of signposting towards external information to be consumed by attendees at their own leisure.

Any important announcements can and should still be made (e.g. release cut off dates .etc).

Key project updates to become async

WordPress contributors are inherently distributed. Therefore, instead of requesting synchronous updates on key Gutenberg projects, contributors will instead be strongly encouraged to provide these status updates async via GithubGitHub GitHub is a website that offers online implementation of git repositories that can can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/.

The meeting facilitator will then signpost attendees to these updates for consumption at their leisure thereby freeing up a considerable portion of the allotted meeting time.

Many of the key Gutenberg projects already sustain a regular cadence of updates on their tracking issues and we therefore hope that it will be possible for Core contributorsCore Contributors Core contributors are those who have worked on a release of WordPress, by creating the functions or finding and patching bugs. These contributions are done through Trac. https://core.trac.wordpress.org. to keep their respective projects updated.

Extension of the Open Floor section

As outlined above, we intend to dedicate the majority of the meeting time to discussion and collaboration. In practice this means that we intend to extend the Open Floor section to encompass more of the allotted meeting time.

This section will retain the existing format; namely:

  • facilitator will determine ordering of discussions.
  • attendees can provide topics in advance via the Core Editor agenda comments.
  • attendees can suggest additional topics in real time during the meeting.

This will remain a moderated session with the facilitator deciding when it is appropriate to move between topics to ensure a varied discussion.

Let us know what you think

We as facilitators look forward to your feedback on the proposal above and we hope you will agree these changes will have a positive impact on the Core Editor chat.

If you have any feedback please leave it as a comment or feel free to raise it during the Core Editor chat on Wednesday 26th Jan 2022 (note that meeting will retain the current format).


Thanks to @audrasjb and @priethor for reviewing this post.

#core-editor

Performance team meeting summary 25 January 2022

Meeting agenda here and the full chat log is available beginning here on Slack.

Focus group updates

Announcements

@shetheliving

  • Three issues are open for voting here until February 1, 2022 at 6pm GMT
  • What to do with issues that don’t fit into a specific focus/project?
    • Considered adding a “Misc” project, but that could be hard to maintain
    • Proposal: Add a “Misc” label and do not add to a project
    • If we see several related issues with “Misc” labels, we can discuss a new project/focus area
    • Proposal accepted; “Misc” label will be added

Images

@adamsilverstein @mikeschroder

GitHub project

Feedback requested

  • N/A

Object caching

@tillkruess @spacedmonkey

GitHub project

  • @tillkruess: Making good progress and project is organized.
  • @flixos90: We need to do a better job of going through performance-related issues in TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.. Will review these this week and ask others to do the same.

Feedback requested

Site Health

@audrasjb

GitHub project

Feedback requested

Measurement

@wp-source @josephscott

GitHub project

Feedback requested

  • N/A

JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com/.

@aristath @sergiomdgomes

GitHub project

  • @aristath: Still been focused on 5.9, but now that it’s released, will be able to refocus on this project. Think that focus should be on blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. themes and how blocks add scripts to the front-end. A lot of this was dependent on infrastructure included in 5.9. Could include things like optimizing their delivery, allowing themes & plugins to “attach” scripts to blocks, etc. Plan to go over blocks this week, find possible ways to improve how scripts work there, then compile a list of tickets we can work on in the GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ repo, and start discussions in the performance 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’s repo.

Feedback requested

  • N/A

Infrastructure

  • @flixos90: Opening an issue soon to discuss the scope of the initial plugin release. We already have a GitHubGitHub GitHub is a website that offers online implementation of git repositories that can can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/ action to eventually deployDeploy Launching code from a local development environment to the production web server, so that it's available to visitors. this to wordpress.org, but which account should we use for that deployment?
    • Some ideas outlined here: https://github.com/WordPress/performance/issues/42
    • Proposal: Create an account not tied to an individual contributor, e.g. performanceteam. Proposal accepted and @flixos90 will create the new account.

Feedback requested

  • N/A

Open floor

  • @craigfrancis: With ticketticket Created for both bug reports and feature development on the bug tracker. #52506, updating wpdb::prepare(), I’ve created my own basic performance testing page, and including a way of downloading the patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. as a /wp-content/db.php file… I’m just wondering if I’m going about this in the right way?
  • @sergiomdgomes: Do we think of the performance plugin as a staging space for Core, or do we see it as a performance playground of sorts instead, which we share with the community? More concretely, which of these do we think are adequate or inadequate?
    • Experiments that may break some sites
    • Experiments that may worsen performance in some cases
    • Transitional experiments that are never intended to make it to Core because they’re too “hacky” or unstable
    • @flixos90: Most if not all modules should be intended for an eventual merge into WordPress core. IMO we shouldn’t build something into the plugin which we are already sure is a no-go for WordPress core based on what it does. We have an “Experimental” flag that each module can define and should be used for really early projects.
  • @pbearne: Should we add proof of concept code to the performance plugin that turns on a feature added to core that we expect plugins to handle in the future? For example, new core filters for get_all_options
    • @flixos90: Open an issue explaining a bit more along with a draft PR if helpful

Help wanted

#core-media, #performance, #performance-chat, #summary

Editor Chat Agenda: 26 January 2022

Facilitator and notetaker: @paaljoachim

This is the agenda for the weekly editor chat scheduled for Wednesday, January 26 2022, 03:00 PM GMT+1.

This meeting is held in the #core-editor channel in the Making WordPress SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/..

  • GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ 12.5 RCrelease 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).
  • What’s new in Gutenberg 12.4 ( 19 January)
  • WordPress 5.9 has been released!
  • Updates based on updated scope for site editing projects:
    • Navigation BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience..
    • Template editor.
    • Patterns.
    • Global Styles.
    • Mobile Team.
    • Components Team.
  • Task Coordination.
  • Open Floor.

If you are not able to attend the meeting, you are encouraged to share anything relevant for the discussion:

  • If you have an update for the main site editing projects, please feel free to share as a comment or come prepared for the meeting itself.
  • If you have anything to share for the Task Coordination section, please leave it as a comment on this post.
  • If you have anything to propose for the agenda or other specific items related to those listed above, please leave a comment below.

#agenda, #core-editor, #core-editor-agenda, #meeting

Dev Chat agenda for January 24, 2021

The weekly developers chat meeting will be held at 20:00 UTC in the #core channel on Slack. All welcome.

Summary from the last dev chat meeting on January 19.

1. Welcome

2. Announcements

Update: WordPress 5.9 Josephine – released on January 25, 2022
WordPress 5.9 Development Cycle

A WordPress 5.9 Release Candidate 4 took place on January 24, and marked the code freeze for the release. Help test WordPress 5.9 features

Read the latest Developer Notes

3. Blogblog (versus network, site) posts to note

What’s new in Gutenberg 12.4 (January 19, 2022)

A Week in Core (January 24, 2022)

Join the discussion on 2022 release planning (December 27, 2021 post by @chanthaboune). New document coming

New additions to the agenda:

Preliminary Roadmap 6.0 (January 26, 2022)

Let’s talk about WordPress 6.0 post and video hosted by @annezazu – Hallway Hangout in #fse-outreach-experiment (December 21, 2021)

Do you have other posts that should get attention in the weekly dev chat? Please add them in the comments.

4. Upcoming releases

@hellofromtonya will share an update on the 5.9 release.

5. Component Maintainers

From next week, the weekly check-in with component maintainers will restart as contributors may be away this week after the 5.9 release launch. If you’re a maintainer who would like to get help with a blockerblocker A bug which is so severe that it blocks a release. or share success/ collaboration, please feel free to either comment on this post or in the meeting.

6. Open Floor

You can add your topic to the comments below.

#agenda#core#dev-chat#week-in-core

#5-9, #agenda, #dev-chat, #week-in-core

A Week in Core – January 24, 2022

Welcome back to a new issue of Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Let’s take a look at what changed on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between January 17 and January 24, 2022.

  • 25 commits
  • 33 contributors
  • 60 tickets created
  • 24 tickets reopened
  • 65 tickets closed

The Core team is currently working on the next major release, WordPress 5.9 🛠

Ticketticket Created for both bug reports and feature development on the bug tracker. numbers are based on the Trac timeline for the period above. The following is a summary of commits, organized by component and/or focus.

Code changes

Administration

  • Properly handle HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. entities in the News & Events dashboard widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user.#41208

Bundled Themes

  • Bump the versions for bundled themes for release – #54783
  • Reverts [52549] (default presets in use by default themes) – #54782
  • Twenty Twenty-Two: Re-add the link to the theme’s HelpHub changelog – #54318
  • Twenty Twenty-Two: update the required version – #54318

Coding Standards

  • Use a more appropriate variable name in link_advanced_meta_box()#54856

CustomizerCustomizer Tool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings.

  • Remove Menus panel when a theme does not support menus – #54888
  • Remove Widgets panel when a theme does not support widgets – #54888

Date/Time

  • Add a unit testunit test Code written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see regression. for the return type of current_datetime()#53484

Docs

  • Docblockdocblock (phpdoc, xref, inline docs) corrections for get_block_file_template()#54879
  • Docblocks consistency fixes after [52604]#54690
  • Fix typos in some DocBlocks – #54729
  • Further update the send_retrieve_password_email filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. documentation for consistency – #54690
  • Replace “Current theme” with “Active theme” in various DocBlocks – #54831, #54770

Editor

  • wordpress package updates – #54487
  • Bump editor packages to include the latest fixes – #54487
  • Update wordpress packages for WP 5.9 RCrelease 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). 4 – #54487
  • Update wordpress packages for WP 5.9 RC 3 – #54487

General

  • Clarify the deprecation messages in the _deprecated_*() functions family – #54658

Help/About

  • Update Freedoms page for 5.9 – #54270

Internationalization

  • Improve the context for color-related strings in WP_Theme::translate_header()#54804

Plugins/Themes

  • Allow to install/activate plugins/themes which require the WordPress version currently in development – #54882

Script loader

  • Prevent DB errors during Multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site install – #54800

Upgrade/Install

  • Update $_old_files for 5.9#54894

Users

  • Add new hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same. to filter retrieve password emails – #54690
  • Revert the variable change in [52606] that caused the tests to fail – #54690

Props

Thanks to the 39 people who contributed to WordPress Core on Trac last week: @audrasjb (8), @costdev (6), @SergeyBiryukov (5), @hellofromTonya (4), @johnbillion (3), @talldanwp (3), @desrosj (2), @kjellr (2), @peterwilsoncc (2), @poena (2), @shedonist (1), @ryelle (1), @get_dave (1), @schlessera (1), @aristath (1), @kebbet (1), @connapptivity (1), @ocean90 (1), @sabernhardt (1), @sayedulsayem (1), @pbearne (1), @iandunn (1), @kpegoraro (1), @nickciske (1), @mukesh27 (1), @Presskopp (1), @davidbaumwald (1), @hellofromtonya (1), @mkox (1), @cbravobernal (1), @joen (1), @mamaduka (1), and @isabel_brison (1).

Congrats and welcome to our 3 new contributors of the week: @connapptivity, @kpegoraro, @mkox ♥️

Core committers: @sergeybiryukov (7), @audrasjb (5), @noisysocks (4), @desrosj (3), @peterwilsoncc (2), @davidbaumwald (1), @ocean90 (1), @jffng (1), and @hellofromtonya (1).

#5-9, #core, #week-in-core

WordPress 5.9 RC4

A fourth and final 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). for WordPress 5.9 is packaged to mark the code freeze before release tomorrow, January 25, 2022. 

Discover more about the process for Release Day.

The following fixes are included since Release Candidate 3 (RC3) last week:

  • Classic menus are not selectable in the existing Navigation blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.PR38168
  • Remove CustomizerCustomizer Tool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings.’s Menus section when the block theme is active – #54888
  • Block Editor: Mark last change as persistent on save – PR36887
  • Issue in clicking “Edit styles” link in the Welcome panel#54859 / PR38123
  • Fix resizable box scrollbars in blocks – PR38123
  • Fix for the pattern preview expanding issue – PR38175
  • Allow to install/activate themes/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 which require the next WordPress version – #54882

Testing the release

You can test the WordPress 5.9 release candidate in three ways:

Option 1: Install and activate the WordPress Beta Tester plugin (select the “Bleeding edgebleeding edge The latest revision of the software, generally in development and often unstable. Also known as trunk.” channel and “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./RCrelease 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). Only” stream).

Option 2: Download the RC4 version (zip).

Option 3: When using WP-CLIWP-CLI WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is http://wp-cli.org/ https://make.wordpress.org/cli/ to upgrade from Beta 1, 2, 3, 4, RC1, RC2, or RC3 on a case-insensitive filesystem, please use the following command sequence:

Command One:

wp core update --version=5.9-RC4

Command Two:

wp core update --version=5.9-RC4 --force

Happy testing! All welcome in the #core channel on the WordPress SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/. for the 5.9 release party on January 25! You can follow along for exact timings by watching the #5.9-release-leads channel too.

Thanks @cbringmann, @audrasjb, @desrosj, @hellofromtonya, @costdev, @marybaum, @webcommsat for contributions and proofreading of this post.

#5-9

Performance Chat Agenda: 25 January 2022

Here is the agenda for this week’s performance team meeting scheduled for January 25, 2022, at 16:00 UTC.

  • Announcements
  • Focus group updates
  • Infrastructure
    • Account for 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 deployment (see #42)
  • Open floor

This meeting happens in the #performance channel. To join the meeting, you’ll need an account on the Making WordPress Slack.

#agenda, #meeting, #performance, #performance-chat

Menus endpoints in WordPress 5.9

WordPress 5.9 adds three new REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think “phone app” or “website”) can communicate with the data store (think “database” or “file system”) https://developer.wordpress.org/rest-api/. endpoints to manage menus and menu locations. These menus endpoints are used the in new navigation block.

Before discussing menu endpoints, it’s worth noting how menus are currently stored. Navigation menus are stored using the nav_menu taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies. and the nav_menu_item post type. A menu is stored as a term and acts like a container for a number of menu items. Menu items are stored as posts. Menus and menu items also have custom fields stored in metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. and in various options.

Accessible via /wp/v2/menus, the menus endpoint allows for performing CRUDCRUD Create, read, update and delete, the four basic functions of storing data. (More on Wikipedia.) operations on menu data. This endpoint extends the WP_REST_Terms_Controller class, mapping fields to the menus and adding functionality like auto_add, that automatically adds new pages to menus when created. A GET request includes the list of menus, but does not contain the list of menu items. To get this data, the menu items endpoint can be used.

Example output from request:

{
    "auto_add": false
    "description": "",
    "id": 36,
    "locations": ['wporg_header_subsite_nav', 'primary'],
    "meta": [],
    "name": "Navigation",
    "slug": "navigation",
}

Accessible via /wp/v2/menu-items, the menu items endpoint allows for performing CRUD operations on menu items and assigning them to menus. This endpoint extends the WP_REST_Posts_Controller class, mapping fields and adding custom functionality. Menu items can only be assigned to one menu at a time unlike other taxonomies.

Many menu items have an associated object that the menu item links to. For instance, a link to a page will have the object set to page and the object_id set to the WordPress Post ID of that page. When using this endpoint, it may be useful to get information about that linked object. For example the page’s title. This information is not included in the response by default, but the REST API has a feature to embed this information by using the _embed query parameter. For example, making a GET request to /wp/v2/menu-item/8874?_embed=true will result in the following response:

{
     "attr_title": "",
     "classes": [''],
     "description": "",
     "id": 8874,
     "invalid": false,
     "menu_order": 1,
     "menus": 363,
     "meta": {},
     "object": "page",
     "object_id": 8823,
     "parent": 0,
     "status": "publish",
     "target": "",
     "title": {rendered: 'Tickets'},
     "type": "post_type",
     "type_label": "Page",
     "url": "https://make.wordpress.org/core/reports/",
     "xfn": [""],
     "_embedded": {
              wp:menu-item-object: [
                   {
                      "author": 5286302,
                      "date": "2014-01-29T19:49:26",
                      "featured_media": 0,
                      "id": 8823,
                      "link": "https://make.wordpress.org/core/reports/",
                      "slug": "reports",
                      "title": { "rendered": "Bug Reports"},
                      "type": "page",
                   }
              ],
              wp:term: [
                    {
                       "id": 363,
                       "name": "Navigation",
                       "slug": "navigation"
                    }
              ]
    },
}

Accessible via /wp/v2/menu-locations, the menu locations endpoint returns a list of menu locations registered with the register_nav_menus function. To assign a menu to a particular location, use the menus endpoint, by passing an array of menu location keys.

Example output from request:

{
     "description": "Desktop Horizontal Menu"
     "menu": 90
     "name": "primary"
}

Batching requests

Both the menu and menu item endpoints, both support the batching of requests, introduced in WordPress 5.6. This means that more than one menu / menu item can be updates / created in a simple request to the APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways..

Access Control

To access data from any of the menus endpoints, requests must be made by a logged in user with the edit_theme_options capability. By default, only users with the Administrator role have this capability. This means that menu data is not publically exposed via the REST API. Ticketticket Created for both bug reports and feature development on the bug tracker. #54304 provides a means for developers to opt-in to exposing this data publicly. The REST API team hopes to implement this feature in a near future release of WordPress.

These endpoints were first developed as a feature pluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins. on GitHub. For those using this 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, after upgrading to WordPress 5.9, the plugin can be deactivated and removed as all of it’s functionality is now included in WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress..

Props to @timothyblynjacobs for peer review.

#5-9, #dev-notes, #rest-api

WordPress 5.9 Release Day Process

Updated: 24 Jan 2022

Preparation for WordPress 5.9 final release is underway. This post shares the release process, including the timeline and how you can help.

Release Timeline

The current plan is:

Dry Run

Update: The Dry Run was successfully completed ✅ See the process in the #core Slack channel.

The Dry Run is a key event to determine readiness for the final release. As noted above, the current plan is to start it on 2022-01-24 15:00. You are invited to observe and/or participate. It’ll happen in the #core Slack channel.

What happens during the dry run?

  • Review bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. reports to determine if any are critical to warrant another RCrelease 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). (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).).
  • Checks and updates are done in the src/wp-admin/includes/update-core.php file.
  • Pre-release scripts are run to ensure test suites, coding standards, and checks pass.

If the results are acceptable, the release goes into a 24-hour code freeze period.

24 Hour Code Freeze

Update: The 24-hour code freeze is in effect 🕜

After the dry run and before the release party starts, a 24-hour code freeze goes into effect.

What does this mean? No source code for 5.9.0 (i.e., in the 5.9 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".) can be changed during these 24 hours.

What happens if a critical bug is reported during this period? The release squad will meet with committers and maintainers to determine if the issue is a blockerblocker A bug which is so severe that it blocks a release..

  • If yes, another RC release happens, and the release process restarts (meaning the dry run is repeated and then the 24-hour code freeze clock restarts).
  • If no, then the bug is targeted for 5.9.1.

The Release Party 🎉

WooHoo, you’ve made it to release day 🎉!

As noted above, the current plan is to start the release party on 2022-01-25 19:20. You are invited to observe and/or participate. It’ll happen in the #core Slack channel.

The release party walks through the steps in the Major Version Release process for anyone who wants to follow along.

Please note releasing a major version requires more time than releasing a 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. or release candidate. There are more steps in the process. If there are any last-minute issues that need addressing, more time will be needed.

How You Can Help

A key part of the release process is checking that the ZIP packages work on all the different server configurations available. If you have some of the less commonly used servers available for testing (IIS, in particular), that would be super helpful. Servers running older versions of PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher and MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com/. will also need testing.

You can even start this early, by running the WordPress 5.9 RC3 packages, which are built using the same method as the final packages.

During the release party, options will be provided on how to help test the release package.

Tips on What to Test

In particular, testing the following types of installs and updates would be much appreciated:

  • Does a new WordPress install work correctly? This includes running through the manual install process, as well as WP-CLIWP-CLI WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is http://wp-cli.org/ https://make.wordpress.org/cli/ or one-click installers.
  • Test upgrading from 4.0.33, 4.9.18, 5.7.2, 5.8.3, and 5.9 RC 3, as well as any other versions possible.
  • Remove wp-config.php file and test a fresh install.
  • Test single site and multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site/networknetwork (versus site, blog) (both subdirectory and subdomain) installs.
  • Does it upgrade correctly? Are the files listed in $_old_files removed when you upgrade?
  • Does multisite upgrade properly?

Testing the following user flows, on both desktop and mobile, would be great to validate each function as expected:

  • Publish a post, including a variety of different blocks.
  • Comment on the post.
  • Install a new 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, or upgrade an existing one.
  • Change the site language.
  • If you’re a plugin developer, or if there are complex plugins you depend upon, test that they’re working correctly.

Props to @jeffpaul for peer review and @marybaum, @webcommsat, and @cbringmann for editing.

#5-9, #release-process