WordPress 6.2 Server Performance Analysis Summary

Overview

During the 6.2 Release Cycle, members of the WordPress Performance Team performed a performance analysis in order to identify the biggest opportunities to target for future performance enhancements. To do so, the team first created a methodology that could be used to perform a repeatable process by which results could be tested and confirmed. The full methodology and analysis can be found in this document.

Analysis scope and methodology

To start, the team identified a number of key use cases that would be tested. These were meant to cover the primary out of the box functionality of a simple, default WordPress site, which included testing both a classic theme (Twenty Twenty-One) and a 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. theme (Twenty Twenty-Three) both configured with the same content from the Theme Unit Test data. 5 specific scenarios were tested for both themes:

  • A homepage showing the latest posts: A common use case that includes fetching data for a list of several posts in a single request
  • A basic page that is text only: A minimal use case that can serve as a baseline against a more complex post.
  • A post page including a large set of images and default blocks: This use case allowed us to observe the effect of extra database queries and PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher routines required to render a complex page that is more realistic.
  • The same homepage, with translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization.: This allowed us to see the performance impact of WPs translation functionality compared to a non-translated site.
  • The same basic page, with translation: Same as above.

Each profiling test was done on a wp-env docker environment running PHP 7.4 (the recommended version for WP when the analysis was conducted) with XHProf installed for profiling. Other use cases and configurations were considered but not included in this initial analysis, including testing with a persistent object cache active, a 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 setup, and additional supported PHP versions.

Observations from the analysis

Below are the biggest opportunities identified for potential performance improvements, based on the profiling data collected against WordPress 6.2. An overview of the raw data for these observations is in the full results spreadsheet. When possible, relevant existing tickets for each improvement area are included for reference. These are not meant to be an exhaustive list of everything that will be addressed and additional tickets should be created as needed. 

Improve template loading and rendering for classic themes

In the classic theme tested, the most expensive process is related to locating and rendering template parts. This starts with get_template_part(), includes the process of locating the template part files with locate_template(), and rendering the content for each template part. This whole process accounted for approximately 30–60% of the entire server response in the test results, with much of that time spent handling filesystem checks (e.g., file_exists() is responsible for 4–9% of all time measured and can likely be optimized with a cache), rendering 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. blocks, etc. Given many of these filesystem checks aren’t likely to produce different outcomes often between requests, there are likely opportunities to find substantial improvements here.

Related tickets:

Improve rendering of block widgets

Related to template loading, loading and rendering block widgets (i.e. profiling WP_Widget::display_callback) took ~8–24% of the response time. This may be partially due to the inclusion of widgets in the theme test data and may not be representative of all themes. Even so, we have identified that much of this code runs even when a theme is not utilizing widgets, making it a good candidate for further exploration. It’s possible that some widgets have a larger impact than others. For example, the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. categories block used in the categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. list widget was responsible for 5–10% of the response time in our tests.

Related tickets:

Improve registration of blocks from metadata

In all test scenarios, register_block_type_from_metadata() is called 91 times and takes from 3–24% of total response time across use cases, with a larger impact on block themes than classic themes. It is heaviest on the home page, and always worse in the first request compared with subsequent ones. Again, much of this time is due to file operations that could be optimized. We could also consider techniques like lazy loading block registration based on whether blocks are in use on a page, or caching registered blocks to avoid duplicate file read operations for blocks that are unlikely to change. For block themes, block registration accounts for 15–25% of the total response time, with register_block_style_handle() specifically accounting for most of that time (184 calls, 13–21% of inclusive wall time, or iwt).

Related tickets:

Improve loading translations

In both theme types, the load_textdomain() function was called 2 times when language packs are in use (once for core, and once for the theme), and is responsible for 9–26% of the total response time (most of which is the MO::import_from_file method). This took up a higher percentage of the execution time in the classic theme tests (17–26%) than the block theme tests (9–16%), which may point to opportunities for improvement in classic themes.

  • MO::import_from_reader (1 call, 9–25% iwt)
  • MO::make_entry (4058 and 3977 calls in our classic and block use cases, respectively, 2–7.5% iwt)

Related tickets:

Improve resolving block templates

For block themes, resolving block templates from the file system takes a large amount of time. This is likely due to the need for both database and file system reads during this process. Example function paths:

  • get_block_templates (12–21% iwt)
  • get_block_theme_folders (3–6% iwt)
  • build_template_part_block_instance_variations (4–6% iwt)

Related tickets:

Improve term field sanitization

Term field sanitization is being called ~3000-5000 times during a page load in our classic theme tests—adding 1–6% to the total response time alone. A recent change has already been identified that contributed to this problem, and a fix has been committed. A deeper look into ways of reducing unnecessary calls to this function could result in additional improvements. Interestingly, block themes don’t exhibit the same problem with sanitize_term_field, as with classic themes, so it would be helpful to understand why to see if the same improvements could be applied to classic themes.

Related tickets:

  • #57966
  • #37189 (possible regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. in wp_get_object_cache)
  • #50568
  • #58327
  • #58329

Additional block theme improvements

Other notable functions that are taking up a lot of time in block themes related to parsing and using data from theme.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. and block registry include:

  • WP_Theme_JSON::compute_style_properties (65 calls, 2–8% iwt)
    • > WP_Theme_JSON::get_property_value (3453 calls, 1–2% iwt)
    • Note: this has since been fixed (Related PR)
  • WP_Block_Type_Registry::get_registered (homepages only: 3422 calls, 1–2% iwt)
    • Likely performance improvements can be made to WP_Block_Type_Registry::is_registered method.
  • The function, wp_maybe_inline_styles is particularly slow on the homepage, but always contributes to a large portion of the request time for block themes. (2 calls, 7–18% of iwt)

Related tickets:

Proposed priorities from the research

Of all the opportunities identified during this analysis, the ones that seem likely to produce the largest impact are the following:

  1. Improve template loading for classic themes – A majority of websites (based on an April 2023 search of the HTTPArchive) still use the classic theme architecture, so improvements made here could have the largest horizontal impact.
  2. Improve translation loading – The translation process has a large performance impact when in use. Given that 56%+ of all WordPress websites are using translations, performance improvements to the translations system should have a large horizontal impact as well.
  3. Improve handling of block registration from metadata – block registration requires expensive file reading and parsing, which could be cached. Additionally, every block might not be needed for every request, so more intelligent registration logic could eliminate the need for much of this effort.
  4. Improve resolving block templates – this is a heavy operation for block themes that is unlikely to change often unless the site templates are edited or the theme is updated. The addition of some caching mechanisms could really improve TTFB (note that some improvements to this system have already been implemented during the 6.3 release cycle).
  5. Improve rendering of block widgets – This is a lower priority when compared to the previous items due to the fact that further research is needed to determine the horizontal impact of these changes. Specifically, it’s possible that these test cases may not be representative of real world uses of block widgets.

These efforts will likely require additional research and architectural design before engineering begins. All other items identified could be worked on directly through individual TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets as capacity allows.

Future efforts worth consideration

  • Finish making the XHProf/XHGui tooling available more broadly via wp-env and a core environment integration so more people can verify and extend the work we’ve done here.
  • Reach out to hosting companies to get various platforms to run analysis on their infrastructure as well.
  • Do additional analysis on use cases not covered in this initial effort, e.g., PHP Versions, Object Caching setups, etc.)
  • Review and improve the approach used in this analysis to make it easier for the same type of research to be conducted in the future

Thank you to @annezazu, @desrosj, @flixos90, @mukesh27, @oandregal, @spacedmonkey, and @swissspidy for reviewing and helping with this post.

#6-2, #core, #performance

Dev Chat Summary, May 10, 2023

The WordPress Developers Chat meeting took place on May 10, 2023 at 20:00 UTC in the core channel of Make WordPress Slack.

Key Links

Highlighted Posts

Here’s an overview of updates in TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between May 1 and May 8, 2023:

  • 24 commits
  • 56 contributors
  • 46 tickets created
  • 9 tickets reopened
  • 49 tickets closed
  • and 5 new contributors in this period 🎉 Welcome!
  • What’s new for developers? (May 2023): Check out this nifty guide to some of the latest WordPress updates, especially suited for extenders or contributors who would like to learn more about developing with WordPress.
  • WP Briefing: Episode 55: Happy Anniversary, WordPress!: Take a look back on the past 20 years and how the open sourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL. community has grown WordPress into what it is today.
  • What’s new in Gutenberg 15.7? (03 May): This is of the best places to see what’s new in the 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, as well as what’s in store for the future of CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress..
  • @webcommsat shared: It is day two of the “#WP20 From Blogs to Blocks” campaign. We have had a request from #marketing to highlight this in #core and encourage more devs to take part too: https://github.com/WordPress/Marketing-Team/issues/220.

Release Updates

  • WordPress 6.2.1 RC1 is now available: Help test this first minor releaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality. candidate (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).) for 6.2 before next week’s final release. See the post for details on what’s been fixed, and watch the #6-2-release-leads channel for additional updates.
  • And a reminder, for those who haven’t submitted feedback for the WP 6.2 release retrospective — @priethor has noted that the original survey deadline has been extended, so please make sure to take this opportunity to help improve future releases!

Maintainers: Component Help Requests

@oglekler indicated a draft 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. was ready, and requested contributor involvement with #23348: Add a “Contribute” tab to the about page. @audrasjb agreed with the proposed update, but had a question about some of the languages included in the language options. Olga clarified that those were included in mobile apps, but that clarity was needed to avoid this appearing as a mistake.

Open Floor

PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher 8.x Compatibility

@xavivars asked about PHP supported versions, and documentation surrounding it. He pointed out misconceptions that WordPress wouldn’t work under PHP 8.x due to its “beta support” label, and has only upgraded his sites from PHP 7.4 recently due to this misunderstanding. He then posed these questions (paraphrased):

  1. How can the PHP versions documentation page better convey that WordPress does work under PHP 8.x without major issues?
  2. What are the tickets that can help move PHP 8.x support forward, and allow removal of the “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. support” tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.)?
  3. Do others think this is a problem?

@oglekler related the numerous PHP notices encountered when trying out WooCommerce and PHP 8.2, noting that even if WordPress was almost ready, plugins and themes still posed a challenge. @azaozz agreed that Core functions pretty well up to 8.2, and that plugins were the main reason behind the lack of full support. @clorith added that while Core should not have fatal errors, that the deprecation notices it might throw would be indiscernible from plugin errors to most users.

@sergeybiryukov shared two relevant discussions from last month:

@joemcgill asked if the proposal mentioned in the second link was ever published, and if there was enough support to help make it happen. While not published yet, @hellofromtonya confirmed the post is still planned, and that support for the compatibility strategy has been positive. She also noted that lifting PHP 8.0’s “beta support” label was a target for WordPress 6.3. @clorith suggested that the best place to continue discussion would be the #core-php channel.

@azaozz noted that the PHP Compatibility Checker plugin only supports up to PHP 7.4, and questioned if it could be upgraded to support newer PHP versions. @sergeybiryukov mentioned the relevance of the Tide project, and @jeffpaul confirmed that Tide powers the recently updated PHP Compatibility Checker plugin. He added, however, that Tide in turn relies on PHPCompatibilityWP, which does not yet support PHP 8.x, and shared a discussion link toward adding PHP 8.x support.

To help address @xavivars‘s second question, @ironprogrammer shared links to PHP 8 items in the 6.3 milestone:

@ironprogrammer also pointed at a related topic that might help move PHP support-related discussions forward: #57345: Bump the minimum required PHP version to 7.2. @webcommsat indicated a possible need for #marketing team support to facilitate this work, which was confirmed by @sereedmedia.

Update Error Messages

@pbiron raised the following ticket, #57999: Don’t show error message when there is nothing to update, requesting patch testing and design feedback. He asked if the idea of the ticket was sound, and which of the proposed patches would be preferred.

@oglekler suggested adding screenshots for the proposed patches. @presskopp added screenshots of existing Core behavior, and @pbiron additionally requested before/after shots for each of the patches. @ironprogrammer also suggested pinging the #design channel for awareness.

Screen Options and Help Panel Modernization

@oglekler asked for attention to be drawn to #21583: Improve discoverability and visual design of Screen Options and Help Panels, and remarked that modernizing these panels would also benefit accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility).

@ironprogrammer referred to @joedolson previously suggesting some shared UI relevance between this ticket and WP Features Notifications, and asked if there had been any discussion about this. @oglekler asked how these were related. Brian provided the link to a recent Notifications feature post, noting that the maintainers should be able to help answer questions. Joe further clarified that the Notifications feature is looking to add another panel in the same vicinity as Screen Options/Help, and called for holistic consideration of how each of these are implemented.

Before moving to the next item, @ironprogrammer pointed out that because Design Team time is often limited, addressing these related WP adminadmin (and super admin) UIUI User interface concerns at the same time could be a worthwhile collaboration.

“Roll Back” UI String

@kebbet requested feedback and 6.3 milestone consideration for ticket #58282: Change wording where `roll back` is used, asking if more user-friendly terms should be considered. There were several positive emoji reactions to the ticket, and @audrasjb swiftly added it to the 6.3 milestone.

Next Meeting

The next meeting will be on May 17, 2023 at 20:00 UTC.

Are you interested in helping draft Dev Chat summaries? Volunteer at the start of the next meeting on the #core Slack channel.

Props @audrasjb and @xavivars for peer review of this summary, and to everyone who participated in the Dev Chat.

#6-3, #6-2, #dev-chat, #meeting, #php-8-0, #summary

WordPress 6.2.1 RC1 is now available

WordPress 6.2.1 Release Candidate 1 (RC1) is available for testing! Some ways you can help test this minor release:

  • Use the WordPress Beta Tester 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
    • As this is a minor 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, select the Point Release channel and the Nightlies stream. This is the latest build including the RC and potentially any subsequent commits in trunk.
  • Use 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 test:
    wp core update https://wordpress.org/wordpress-6.2.1-RC1.zip
  • Directly download the Beta/RC version.

What’s in this release candidate?

6.2.1 RC1 features 19 fixes on Core as well as 10 fixes for 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.

The following coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. tickets from TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. are fixed:

  • #57387 – use aligncenter class in about page sub-heading
  • #57903 – Non-core blocks are not properly loading RTL stylesheets
  • #57918 – “Deprecated” on the Appearance Menu page of the classic theme.
  • #57937 – Sync the SECURITY.md file with our HackerOne policy
  • #57994 – Coding Standards fixes for WP 6.2.1
  • 57996 – Change $search_columns type from array to string[].
  • #58007HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. 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.: Support comments created by invalidinvalid A resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) name in tag closers
  • #58028WP_HTML_Tag_Processor: Its reference in the Developer Resources is broken
  • #58051 – Attachment custom fields not rendered after upload
  • #58064 – In the comment_time function, the call to the get_comment_time function is incorrect.
  • #58069 – Performance of _wp_normalize_relative_css_links() can be increased >2x
  • #58096 – Incorrect color for “Theme enabled.” adminadmin (and super admin) notice
  • #58146 – HTML API: Ensure attribute updates happen only once for case variants
  • #58160 – HTML API: Fix case where updates are overlooked when seeking to earlier locations.
  • #58179 – HTML API: Accumulate shift for internal parsing pointer.
  • #58203 – jQuery version doesn’t match
  • #58250 – HTML API: Adjust coding style to pass 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/ linter
  • #58254 – HTML API: Fix ordering issue in docblockdocblock (phpdoc, xref, inline docs) that’s breaking Developer Resources
  • #58274 – Update @wordpress packages for WordPress 6.2.1

The following block editor issues from GitHubGitHub GitHub is a website that offers online implementation of git repositories that 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/ are fixed:

  • GH 49135i18ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.: Add context to labels related to CSSCSS Cascading Style Sheets. position properties
  • GH 49054 – Comments: Fix ‘sprintf requires more than 1 params’ error
  • GH 49861 – Fix the site editor loading in multi-site installs
  • GH 49881 – Fix quick inserter going off-screen in some situations
  • GH 49685 – Site Editor: Decode the site title properly
  • GH 48210 – Firefox: fix input rules (ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. async state issue)
  • GH 49703 – Only show alignment info when parent layout is constrained
  • GH 49450 – [Inserter]: Fix onHover error on patterns tab in mobile
  • GH 49364 – Fix site editor redirection after creating new template or template part
  • GH 49675 – Site Editor: fix the ‘back to Dashboard’ links labelling

What’s next?

The developer-reviewed workflow (double committer sign-off) is now in effect when making changes to the 6.2 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"..

The final release is expected on Tuesday, May 16th, 2023 (see the release planning). Please note that this date can change depending on possible issues after RC1 is released. Coordination will happen in the WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ 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/. #6-2-release-leads channel.

A special thanks to everyone who helped test, raised issues, and helped to fix tickets. With this release candidate, testing continues, so please help test!

The WordPress 6.2.1 release is led by @audrasjb, @mamaduka and @sergeybiryukov.

Thanks @costdev and @francina for proofreading.

#6-2, #6-2-1, #minor-releases, #releases

WordPress 6.2.1 Planning

Coming after WordPress 6.2 “Dolphy”, a 6.2.1 release is planned for some items that came up near the end of the 6.2 release cycle or have been raised post-release.

If there is a critical bugfix that has a 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./PR ready, then please look to add those to the 6.2.1 milestone on Trac or the WordPress 6.2.1 Editor Tasks project board on GitHub.

Schedule

The following schedule is what’s currently planned for the release, any additional 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. scrubs, release candidates, or other items will be added here as they get scheduled.

Thursday, May 4th, 2023 at 15:00 UTCBug scrub focused on finalizing items for 6.2.1
Monday, May 8th, 2023 at 19:00 UTCFinal scrub ahead of 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).
Tuesday, May 9th, 2023 at 16:00 UTC6.2.1 Release Candidate
Tuesday, May 16th, 2023 at 16:00 UTC6.2.1 Final Release

Release Coordination

This release is led by @audrasjb and @mamaduka, with the help of @sergeybiryukov on mission control.

The #6-2-release-leads channel will continue to be used for all coordination and conversation related to the 6.2.x releases. This matches the pattern of communication that worked well for previous minor releaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality. cycles.

Thanks @mamaduka, @sergeybiryukov, @annezazu, @costdev and @jpantani for proofreading.

#6-2, #6-2-1, #minor-releases

Dev Chat Summary, May 3, 2023

The WordPress Developers Chat meeting took place on May 3, 2023 at 20:00 UTC in the core channel of Make WordPress Slack.

Key Links

Highlighted Posts

Here is an overview of changes in TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between April 24 and May 1, 2023:

  • 7 commits
  • 21 contributors
  • 50 tickets created
  • 3 tickets reopened
  • 38 tickets closed

Release Updates

6.3 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.

@ironprogrammer noted that the 6.3 squad was being composed over in #6-3-release-leads, with the team and dates to be finalized by the end of the week.

6.2.1 Minor ReleaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality.

@audrasjb provided a minor release update:

  • On Trac, there are 22 tickets in milestone, 11 are closed as fixed, and 2 others are awaiting backportbackport A port is when code from one branch (or trunk) is merged into another branch or trunk. Some changes in WordPress point releases are the result of backporting code from trunk to the release branch. to 6.2.
  • On 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/, there are 15 issues/PRs in the milestone, with 8 of them fixed and merged to core. @mamaduka is leading the Gutenberg work.

@audrasjb will run a 6.2.1 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. scrub on May 4, 2023 at 15:00 UTC.

@audrasjb also shared a proposed schedule for the minor release, and asked for input:

If no feedback is provided regarding the schedule, @audrasjb will publish the release planning post to Make/Core later today.

Maintainers: Component Help Requests

@afragen requested further feedback on Trac #22316 (PR 3032) and the 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 Dependencies feature pluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins., noting a desire to see it land in 6.3. @ironprogrammer noted that testing could be performed using the plugin or Core 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.. Andy suggested that a simple way to test would be to start with a clean installation, install/activate the Plugin Dependencies feature plugin (if not using the PR), and install and activate The Events Calendar CategoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. Colors plugin, which includes the necessary headers to trigger the dependencies feature. There are additional test plugins within the feature plugin directory.

Open Floor

Comments from the agenda provided the first couple of topics for discussion:

@pskli requested that Trac 57300 be reviewed, which deals with fatals related to parse_tax_query(). Neither @audrasjb nor @oglekler could reproduce the issue, and agreed that clear reproduction steps were required to move it forward. Olga agreed to update the ticketticket Created for both bug reports and feature development on the bug tracker. and request this information.

@margolisj requested that the following E2E test package prerelease be prioritized: https://github.com/WordPress/gutenberg/pull/43998. @ironprogrammer summarized that the PR was stalled due to a lack of input related to versioning the prerelease package @wordpress/e2e-test-utils-playwright. Brian requested comment from editor package maintainers, noting there were numerous requests for the package’s release in the PR.

@oglekler drew attention to two tickets that might remove clutter from WP adminadmin (and super admin), and adopt a more modern look and improved UXUX User experience:

#51006: Add a mechanism for accessible tooltips in core@joedolson was confident about providing/validating accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) for the ticket, but indicated a desire to collaborate with 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/. developer to help ensure that scripting best practices were met. @oglekler, @audrasjb, and Joe shared example tooltip patterns/libraries to consider, and agreed that it might be simpler to work from the good parts of prior examples and develop a custom solution well suited for WordPress. Joe agreed to add requirements to the ticket to help move this work forward.

#21583: Improve discoverability and visual design of Screen Options and Help Panels — The clock ran out for Dev Chat, so this ticket was not discussed during the meeting. @oglekler asked that this ticket be raised during the next Dev Chat, and due to its importance, suggested it be scheduled for the 6.4 release.

Next Meeting

The next meeting will be on May 10, 2023 at 20:00 UTC.

Are you interested in helping draft Dev Chat summaries? Volunteer at the start of the next meeting on the #core Slack channel.

Props @pbiron and @audrasjb for peer review of this summary, and to everyone who participated in the Dev Chat.

#6-3, #6-2, #dev-chat, #meeting, #summary

Dev Chat Summary, April 26, 2023

The WordPress Developers Chat meeting took place on April 26, 2023 at 20:00 UTC in the core channel of Make WordPress Slack.

Key Links

Highlighted Posts

Here’s the awesome activity seen in TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between April 17 and April 24, 2023:

  • 27 commits
  • 36 contributors
  • 51 tickets created
  • 6 tickets reopened
  • 53 tickets closed
  • and 4 new contributors 🎉
  • The benefits of prioritizing and measuring performance in WordPress 6.2: Read about the collaborative planning and work that contributed to the performance gains brought with WordPress 6.2.
  • WP Feature Notifications: 2023 Status Update: This update explains recent progress toward a CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.-targeted modern WordPress user notification system, its interplay with 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 3, and how you can get involved.
  • WP Briefing: Episode 54: A Bill of Rights for the Open Web: Listen as Josepha explores the four freedoms of open sourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL., which have been referred to as a “Bill of Rights” for the open web.

Release Updates

6.3 Planning

@ironprogrammer shared a reminder that the WordPress 6.3 Planning Proposal & Call for Volunteers is open for release squad members and mentors through this Sunday, April 30.

6.2.1 Minor ReleaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality.

@audrasjb provided a WP 6.2 triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. update:

@ironprogrammer asked for confirmation that a small squad is still needed to run the 6.2.1 release, which @audrasjb confirmed. JB then added that an active Gutenberg contributor should ideally help shepherd the related issues/PRs/tasks; and that someone would be needed to help build packages, suggesting that @sergeybiryukov might help with Mission Control.

@ironprogrammer suggested sharing the needs for Gutenberg contributor involvement in the #core-editor channel, which @audrasjb confirmed he would follow up.

Open Floor

During open floor, @presskopp raised visibility on the following Trac tickets:

#33073: Some strings need “no HTML entities” translator comments@ironprogrammer proposed that the ticketticket Created for both bug reports and feature development on the bug tracker. be milestoned for 6.3, as it had suggestions on how it might be addressed. @sergeybiryukov assigned the milestone to move the ticket forward.

#57999: Don’t show error message when there is nothing to update@audrasjb suggested moving the ticket to 6.3; @pbiron agreed by setting the milestone and self-assigning the ticket. @ironprogrammer suggested that example reproduction flows be added to the ticket in order to help during testing.

#53682: tags (keywords) with umlauts don’t get saved in German locale@audrasjb noted that this ticket still needed a 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. to move it forward.

#54836: Huge error logs filled with “WordPress database error Illegal mix of collations” errors caused by spammers@ironprogrammer agreed with @audrasjb‘s in-ticket assessment, and that a Database component maintainer should review the ticket, so pinged @craigfrancis. @pbiron asked if the issue was due to different collations in the DB, or if the collation differed from the spam text encoding, and Brian asked for reproduction steps to better understand what triggers the errors.

#50081: orderby datetime field@audrasjb identified this as a Docs (DevHub) issue, and updated the ticket. @leogermani and @sergeybiryukov responded and provided context for when the code example was last updated. JB updated the sample code in DevHub and closed the ticket. 🎉

#39645: If user “admin” doesn’t exist (renamed admin account) users can create a user with username admin — this last ticket mention occurred after Dev Chat wrapped up, and there was no further discussion on it.

Next Meeting

The next meeting will be on May 3, 2023 at 20:00 UTC.

Are you interested in helping draft Dev Chat summaries? Volunteer at the start of the next meeting on the #core Slack channel.

Props @costdev for peer review of this summary, and to everyone who participated in the Dev Chat.

#6-3, #6-2, #dev-chat, #meeting, #summary

The benefits of prioritizing and measuring performance in WordPress 6.2

Based on lab benchmarks, WordPress 6.2 loads 14-18% faster overall for 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 2-5% faster overall for classic themes (measured via Largest Contentful Paint / LCP). Particularly server-side performance (measured via Time to First Byte / TTFB) is seeing a major boost of 17-23% for block themes and 3-5% for classic themes, which directly contributes to the overall load time.

This post provides more information and a retrospective on how those performance wins were achieved in the WordPress 6.2 release cycle.

Learning from previous WordPress coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. releases

During the 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). testing phase of WordPress 6.1 in November 2022, it became evident that a few notable performance regressions had made it into the release when compared to the performance of WordPress 6.0. While the single most impactful performance regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. was addressed before the 6.1 stable release in one of its release candidates, overall performance still regressed slightly when using a block theme. Previous WordPress core releases, especially 6.0, saw more notable performance regressions. Despite other performance enhancements landing in those releases, the regressions effectively ended up canceling out the enhancements. In WordPress 6.2, this is significantly different, with all key metrics improving over the previous release, as highlighted in these performance benchmarks shared by @oandregal.

For WordPress 6.1, the regressions were discussed in a general assessment of WordPress 6.1 RC performance. Despite contributors from different core teams quickly prioritizing and investigating the issues, it was too late in the release cycle to address them all. This was a great learning experience: As much as we are working on performance enhancements, it is as important to continuously monitor performance of existing core features to avoid regressions. The more regressions there are, the less impactful any other performance enhancements are overall. While this seems logical and simple, it sometimes still takes an actual learning experience to get things right.

It is great to see that we have put these learnings into practice, and the performance wins in WordPress 6.2 demonstrate that. So what changed in the 6.2 release cycle?

Increased focus on performance measurement

When trying to summarize how performance work changed between the 6.1 and the 6.2 cycle in a single word, an increased focus on measurement proved to be the deciding factor. The following elaborates on the nuance of that simplified statement.

Identifying performance bottlenecks and opportunities for improvement

It was clearly visible that contributors were keen to rectify the 6.1 regressions and learn from that prior release. This already surfaced in the WordPress 6.1.1 follow up release which contained a few performance-related fixes: 12 of 30 tickets fixed in that release were focused on performance.

Numerous contributors from different core teams actively worked towards identifying and addressing performance bottlenecks, by both benchmarking and profiling WordPress core performance.

Profiling WordPress core has been tremendously helpful in identifying performance issues on the server-side, which has led to the notably improved TTFB performance we are seeing in WordPress 6.2. Common tools used for server-side profiling among contributors have been the open sourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL. tools Xdebug and XHProf and the SaaS tool Blackfire. Contributors have been starting to define and document standardized ways for using these tools, which are intended to be published in the Make Performance Handbook soon.

For benchmarking WordPress core on the other hand, there was less clarity or known tools that could be used as is. While contributors initially came up with individual tooling of their choice to measure performance, the different benchmarking approaches had varying degrees of accuracy and ease of use, so it soon became clear that a more consistent approach would be needed. This was one of the key topics discussed in the first performance focused hallway hangout in January. From there, several contributors started more coordinated efforts for measuring performance, for both manual benchmarks locally and automated benchmarks via continuous integration.

The Performance Lead role

Another change that was made for the WordPress 6.2 cycle which has been supporting everything I have mentioned so far is the introduction of a new Performance Lead role as part of the release squad. This came as a result of the aforementioned performance focused hallway hangout, and I ended up stepping into this role for the 6.2 release. This enabled me to closely collaborate and support the other contributors and coordinate with them our performance measurement approaches. As mentioned before, I would like to emphasize that the performance wins in this release are a result of excellent work from several contributors on identifying performance weaknesses. The introduction of the Performance Lead role then merely brought a better representation of performance alongside the other members of the release squad.

I hope the role of the Performance Lead is here to stay, and I am excited to see additional contributors step into this role in the future.

Assessing performance on individual WordPress core patches / pull requests

As mentioned before, profiling is the recommended approach to identify performance bottlenecks in WordPress core. However, once a pull request with a potential fix is implemented, it is also crucial to measure the actual performance impact and through that validate whether the outcome is as expected. While profiling gives us an idea about the potential performance impact, it comes with caveats such as the overhead of the profiling tools running on the WordPress site, and also that it only captures a single request, which as mentioned above is subject to a good degree of variance when it comes to performance.

Various contributors in the WordPress 6.2 cycle benchmarked performance on individual pull requests, whether to prove a positive impact or performance or ensure that no regression is introduced. Different tools were used to assess the impact, often CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. commands like “benchmark-server-timing” or “benchmark-web-vitals”. The “benchmark-server-timing” command has been most helpful for individual PRs with server-side performance impact, for example it was used in the #57502 ticketticket Created for both bug reports and feature development on the bug tracker. (see this comment), which is possibly the largest single performance enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature. in the 6.2 release. The “benchmark-web-vitals” command however has still been useful for a few situations where performance decisions came down to exclusively client-side performance, for example in the #56990 ticket (see this comment), which explores the classic-themes.css performance impact.

Launching an automated performance testing workflow

In the WordPress 6.2 cycle, most of these benchmarks were conducted manually, which sometimes is a necessity due to the nature of the pull request, but other times is rather inefficient. Furthermore, it would not be feasible to benchmark performance manually for every WordPress core change – and that is precisely how a performance regression may be merged unnoticed. Several contributors have been collaborating on introducing an automated performance measuring CI workflow to WordPress core, and a first MVPMinimum Viable Product "A minimum viable product (MVP) is a product with just enough features to satisfy early customers, and to provide feedback for future product development." - WikiPedia was committed to WordPress core in [55459]. With this CI workflow, WordPress core performance metrics are now recorded for every single commit and are available in this dashboard. This allows us to easily spot a potential regression where previously it would have gone unnoticed. While at this point, there is still a sizable amount of variance in the data points and a limited number of metrics are available, the team will iterate in the coming weeks and months. This is only the starting point, and additional features like CWV support are already being planned. Needless to say, this is a major milestone and win for monitoring performance in WordPress core and will reduce some of the measuring workload already for the upcoming 6.3 cycle.

Assessing performance of WordPress core holistically

While assessing performance on every individual WordPress core change (pull request / commit) is very important to ensure continuous monitoring of performance and avoid regressions, it is also important to keep track of overall performance in WordPress core. This is particularly true during the Beta and RC stages of a release cycle.

At this point in particular, it is advisable to use the production ZIP version of WordPress core (e.g. a particular Beta or RC release) instead of measuring in the WordPress core development environment. The “benchmark-web-vitals” command mentioned in the previous section is perfect for this use-case, as it provides high-level performance metrics that capture both server-side and client-side performance. The resulting data can then be compared with the same metrics from e.g. the previous stable release, to get an idea how performance of WordPress core has changed (hopefully improved!) in the new release. This approach is what the numbers I shared in the beginning of this post are based on.

Performance benchmarks for WordPress 6.2

I would like to share a few more detailed numbers for the WordPress 6.2 performance improvements. Generally, I have been benchmarking two different scenarios, which showcase particularly the server-side performance enhancements (with #57502 contributing the most to them):

  • Home page using a block theme (Twenty Twenty-Three) with the default content (“Hello World!” post)
  • Home page using a classic theme (Twenty Twenty-One) with the default content (“Hello World!” post)

Since WordPress 6.2 included one notable client-side performance enhancement that affects only sites using images (see #56930), I included two more scenarios to assess that impact too:

  • Home page using a block theme (Twenty Twenty-Three) with the default content (“Hello World!” post) and a 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. on that post
  • Home page using a classic theme (Twenty Twenty-One) with the default content (“Hello World!” post) and a featured image on that post

For all of these scenarios, I then loaded the URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org 20 times using the “benchmark-web-vitals” command and recorded the metrics. The full metrics include more granular percentiles, but by far the most important ones are the medians (p50). Here is the data for the two scenarios with only the default “Hello world!” post (no featured image):

ScenarioMetricWP 6.1.1 medianWP 6.2 medianDiff %
Block Theme: Twenty Twenty-ThreeLCP281.7ms241.15ms-14.39%
TTFB176.75ms137.8ms-22.04%
Classic Theme: Twenty Twenty-OneLCP209.65ms203.65ms-2.86%
TTFB75.3ms72.6ms-3.59%

For comparison, here is the same data for the two alternative scenarios where the post has a featured image. Note how the LCP improvement for block themes is even more pronounced in this scenario:

ScenarioMetricWP 6.1.1 medianWP 6.2 medianDiff %
Block Theme: Twenty Twenty-ThreeLCP292.8ms241.4ms-17.55%
TTFB167.7ms138.45ms-17.44%
Classic Theme: Twenty Twenty-OneLCP217.65ms206.95ms-4.92%
TTFB75.35ms72.85ms-3.32%

The full data can be inspected in this spreadsheet.

To close this section, it should be noted that of course the 4 scenarios above are not representative of what most actual WordPress sites look like. Some other benchmarks were using the theme 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. data, and while that is more content, it is not necessarily more accurate either. There are inevitably limitations from lab analyses, and we will never be able to capture the “average” or “realistic” WordPress site synthetically. However, the Core Performance Team is exploring a few good baseline scenarios as part of enhancing the aforementioned automated core performance testing CI workflow, and it would be great if in the 6.3 cycle we could align the benchmarks to use similar scenarios rather than every contributor including myself having their own scenarios for benchmarking.

For some of the individual ticket highlights that contributed to the performance improvements in WordPress 6.2, please see the recent core editor improvements post.

Comparing performance between block themes and classic themes

You may have noticed in the data above that the classic theme is apparently loading faster than the block theme. Let me clarify that a bit since, while that is technically true based on my benchmarks, the data may be deceiving at first glance.

Let’s take another look at the data from the first table above: For the LCP metric, the classic theme already loads notably faster (203.65ms vs 241.15ms, based on the first two scenarios for WordPress 6.2), but for TTFB, it’s almost twice as fast (72.6ms vs 137.8ms). Server-side performance is better in classic themes mainly because block themes have to handle more data since much of what a classic theme’s code is responsible for is now handled through more dynamic features that furthermore rely on making additional database queries. However, it also needs to be acknowledged that block theme support in WordPress core is still relatively new (little more than 1 year old now), while the logic for classic themes has seen more than a decade of refinements. In other words, chances are there is still a lot of headroom for improving server-side performance of block themes, while for classic themes there is probably less of that. The performance improvements in WordPress 6.2 perfectly indicate that, noting that TTFB with a block theme has improved far more than TTFB with a classic theme.

Now here comes the most important part though: In client-side performance, block themes are much faster than classic themes. The way to spot that is by looking at the difference between the LCP metric and the TTFB metric, and here’s why: LCP can be considered representative of the overall load time, while TTFB is the server response time. So “LCP minus TTFB” is representative of the client-side load time. If you make this calculation for the above data points for WordPress 6.2, you can clearly see the benefits of the block theme when it comes to client-side performance (103.35ms vs 131.05ms). These benefits are evident due to the more dynamic logic that is applied in block themes to e.g. load scripts and stylesheets. Rather than the common pattern of enqueuing a big stylesheet and big script in the theme, block themes load assets more granularly and dynamically, only for what is actually needed on the current page.

You may argue that it doesn’t matter that client-side performance is ~30ms faster in a block theme if at the same time server-side performance is ~65ms slower. Yes, in this benchmark the classic theme is overall ~35ms faster than the block theme – however that is without any caching. It is a common best practice for WordPress sites to use a full page cache to avoid the need for all the WordPress server-side logic to run on every page load or, even better, to avoid the request to hit the WordPress site at all in favor of serving a cached response. While by far not all WordPress sites use a full page cache, many do. And in that case, the server-side performance becomes potentially less relevant. Keep in mind however that even then improving server-side performance is still important: As mentioned, many sites still do not use a full page cache, and even for those that do, certain dynamic content is almost impossible to reliably cache. However, if your WordPress site uses primarily static content and a full page cache, block themes are already faster than classic themes today – because they are faster client-side. You can “cache” away server-side performance problems, but you cannot do that on the client-side. In other words: Despite block themes being slower on the server-side, they provide a better foundation for building performant sites in the long run.

Appendix: Tools to measure and profile performance

To finish this post, here you find a list of links to some of the tools mentioned:

Props @annezazu @tweetythierry @desrosj @joemcgill @hellofromtonya @spacedmonkey for extensive review and proofreading.

#6-2, #performance, #retrospective

Dev Chat Summary, April 19, 2023

The WordPress Developers Chat meeting took place on April 19, 2023 at 20:00 UTC in the core channel of Make WordPress Slack.

Key Links

Announcements

  • What’s new in Gutenberg 15.6? (19 April): Check out the post for details on what’s new in this latest 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/ release.

Highlighted Posts

Here’s the activity in TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between April 10 and April 17, 2023:

  • 13 commits
  • 33 contributors
  • 39 tickets created
  • 4 tickets reopened
  • 27 tickets closed
  • and 6 new contributors 🎉

Maintainers: Component Help Requests

For the Upgrade/Install component, @costdev provided the following updates:

  • Rollback: Waiting on confirmation from @azaozz that there are no blockers for alpha commit.
  • 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 Dependencies: Waiting on @dd32 / @otto42 to confirm that the current PR for Plugin Dependencies contains nothing of concern for WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/, and that Plugin Dependencies Part 2 is the bit that still needs more discussion/investigation.

Open Floor

6.2.1 Planning

@jeffpaul asked if there had been discussion on timing and focus for the 6.2.1 minor releaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality.. @costdev provided a couple of links (1, 2) from the #6-2-release-leads channel that called for a small squad of volunteers to lead the release. In the comment, @audrasjb suggested 6.2.1 RC1 on May 9, followed by final release on May 16, and asked for input. @ironprogrammer directed volunteers to reply in the #6-2-release-leads channel.

There were no further topics raised, so the meeting wrapped up early.

Next Meeting

The next meeting will be on April 26, 2023 at 20:00 UTC.

Are you interested in helping draft Dev Chat summaries? Volunteer at the start of the next meeting on the #core Slack channel.

Props @costdev for peer review of this summary, and to everyone who contributed in today’s Dev Chat.

#6-3, #6-2, #dev-chat, #meeting, #summary

WordPress 6.2 “Dolphy” Retrospective

With WordPress 6.2 released and available to the world, it would be very helpful to this and future release squads if all those who contributed could take the time to reflect and share thoughts on the release process to learn, iterate, and make future releases smoother. ✨

Anyone is welcome to participate in this retro, so please take a few moments to complete the form or leave public feedback in the comments below. The survey is not anonymous, allowing for outreach should further clarification be needed; please note that your email address will not be shared or used for any other purpose.

The form and comments will be open until April 30th, 2023, with anonymized results available in a follow-up post in May 2023.

Thank you, everyone, for your contribution to this release, and thanks in advance for taking the time to help make future releases even better!


Props to @cbringmann, @chanthaboune for the peer review

#6-2 #retrospective

Dev Chat Summary, April 5, 2023

The WordPress Developers Chat meeting took place on April 5, 2023 at 20:00 UTC in the core channel of Make WordPress Slack.

Key Links

Announcements

  • WordPress 6.2 “Dolphy” was released last week: https://wordpress.org/news/2023/03/dolphy/
  • Gutenberg 15.5 was released today: https://make.wordpress.org/core/2023/04/05/whats-new-in-gutenberg-15-5-05-april/

Highlighted Posts

Between March 20 and April 3, 2023, work in TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. included:

  • 38 commits
  • 76 contributors
  • 120 tickets created
  • 19 tickets reopened
  • 86 tickets closed
  • and 8 new contributors! 🎉
  • Preferred Languages: Help test the latest version: https://make.wordpress.org/core/2023/04/03/preferred-languages-help-test-the-latest-version/
  • WordPress 6.2 Performance improvements for all themes: https://make.wordpress.org/core/2023/04/05/wordpress-6-2-performance-improvements-for-all-themes/
  • Proposal: The Interactivity API – A better developer experience in building interactive blocks: https://make.wordpress.org/core/2023/03/30/proposal-the-interactivity-api-a-better-developer-experience-in-building-interactive-blocks/

Release Updates

  • 6.3 alpha is underway, with a focus on early tickets.
    • 6.3 development cycle: https://make.wordpress.org/core/6-3/
    • early tickets report: https://core.trac.wordpress.org/tickets/early
  • 6.2.1 minor releaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality. timing discussions are happening in the #6-2-release-leads channel.
    • Trac tickets in this minor milestone are at https://core.trac.wordpress.org/tickets/minor/workflow
    • Also see Gutenberg’s “Punted to 6.2.1” column: https://github.com/orgs/WordPress/projects/63

Maintainers: Component Help Requests

@afragen shared the Call for Testing for Plugin Dependencies. @pbiron mentioned that feedback about the UXUX User experience is mostly needed and should be added to the post, but that non-UX feedback should be added to ticket #22316.

Open Floor

6.3 early Tickets

@hellofromtonya referred to the handful of current 6.3 early tickets, and asked that anyone with time consider contributing to these.

@howdy_mcgee asked about Trac tickets #24142 and #18408, which relate to WP_Query updates, and if they should be considered early. @hellofromtonya agreed and added the early keyword to both, explaining WP_Query changes should be done early to allow sufficient time for feedback and testing. @howdy_mcgee expressed interest in writing tests for 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. in #18408 and asked others to DM with suggestions on where to start.

About Page: “Get Involved” Improvements

@oglekler raised Trac ticket #23348, which could add a new menu item and/or tab that better represents each Make WordPress team and opportunities to contribute. @hellofromtonya suggested adding the needs-design keyword to start with the design phase, and after a design was established, code work could start. @oglekler added that Marketing could contribute toward the content. Both agreed that this update could be a starting point for new contributors to get involved. @hellofromtonya also suggested that due to the age of the ticketticket Created for both bug reports and feature development on the bug tracker., updating the current proposal could help move it forward.

Promoting WordPress Mobile Apps

@oglekler also brought attention to Trac ticket #56277, which would promote the WordPress Mobile app from the adminadmin (and super admin) dashboard. @oglekler noted that the #mobile channel recently agreed to author a new post explaining the current status of WordPress’s mobile apps and how the 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. could help promote them. In response, @hellofromtonya suggested getting feedback on the idea first, and then design proposals would follow.

WordPress PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher 8+ “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. Support”

@ipajen asked if there had been any discussion about removing the beta support for PHP 8.x in WordPress. @hellofromtonya noted that she and @jrf had a recent call about it, and proposed laying out what’s needed to remove the “beta” compatible label for each PHP 8.x version. @hellofromtonya mentioned that very low code coverage and a low percentage of sites running on these PHP versions makes it difficult to know whether WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. itself is fully compatible or not.

@hellofromtonya shared that some other criteria, like having at least 10% of sites running on PHP 8.x, with all reported issues on that version fixed, could be a method to determine removal of the “beta support” label. Current stats show only PHP 8.0’s usage exceeds that threshold (PHP 8.0 reflects 12.5% usage). @hellofromtonya shared a link to open PHP 8.x tickets in Trac, as there are additional compatibilities to be discussed and solved, including named parameters, magic methods and dynamic properties, type validation, etc.

[Editor’s Note] This topic went into “overtime” following the official Dev Chat time constraints, and that dialog is provided here:

@ipajen expressed hopes that PHP 8.0 could be officially supported soon, and asked if WordPress Tide should be considered under the compatibility criteria for WordPress. @hellofromtonya pointed out that Tide is separate from WordPress Core, so is not a blockerblocker A bug which is so severe that it blocks a release. toward removing the “beta support” label, but agreed that it would be great for Tide to add support for PHP 8.1 and 8.2.

@hellofromtonya further shared her opinion that the beta label could be removed once there was consensus on the previously mentioned criteria and named parameters discussions, and that further dialog on these should be conducted on Trac or in a Make/Core post.

@pbiron asked @hellofromtonya if Trac tickets marked php8 applied to all PHP 8+ items, or were specific to version 8.0. Further discussion involving @sergeybiryukov and @ipajen lead to consensus that renaming php8 to php80 would disambiguate the keyword’s use, as it has until this point been used specifically for PHP 8.0. @ipajen further suggested that with this change in place, issues affecting multiple PHP 8 versions could be tagged with each version impacted, presumably for easier searching/filtering in Trac.

Next Meeting

The next meeting will be on April 12, 2023 at 20:00 UTC.

Are you interested in helping draft Dev Chat summaries? Volunteer at the start of the next meeting on the #core Slack channel.

Props @davidbaumwald, @costdev, and @hellofromtonya for peer review of this summary, and to everyone who contributed in today’s Dev Chat.

#6-3, #6-2, #dev-chat, #meeting, #summary