Editor Chat Agenda: 29th June 2022

Facilitator and notetaker: @jorgefilipecosta.

This is the agenda for the weekly editor chat scheduled for Wednesday, June 29, 2022, at 03:00 PM GMT+1. I

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

If you cannot attend the meeting, you are encouraged to share anything relevant to 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

Performance team meeting summary 28 June 2022

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

Focus group updates

Images

@adamsilverstein @mikeschroder

GitHub project

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

Feedback requested

Site Health

N/A

GitHub project

  • We’re seeking 1-2 POCs for this group; if you’re interested, please comment here or pingPing The act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test it’s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of “Ping me when the meeting starts.” in 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/.
  • @furi3r: Working on porting Full Page Cache and Persistent Object Cache Health Checks to core in https://github.com/WordPress/performance/issues/391 and drafted proposal post here for review; also pinged the Site Health maintainers to keep them in the loopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop.

Feedback requested

Measurement

N/A

GitHub project

  • We’re seeking 1-2 POCs for this group; if you’re interested, please comment here or ping in Slack
  • @flixos90: Working on a blog post for Make about the plugin checker proposal

Feedback requested

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

  • No updates

Feedback requested

Infrastructure

@flixos90

GitHub project

  • @shetheliving: Submitted a new PR to update our GitHub Workflow doc with clarification around adding milestones or no milestone to issues and PRs
  • @flixos90: Released 1.2.0 last Tuesday. Found a few minor Infrastructure bugs during the release party (first three issues in this list, one of which already has a PR). @mukesh27 is also working on Implement mechanism to not load module if core version is available #390, which will give modules control about whether they should load based on current environment factors in a way that makes it apparent to users
    • @olliejones: One factor to keep in mind is 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/./MariaDB version
    • @flixos90: New infrastructure is primarily checking to see if something is in and loading via core, so it shouldn’t be loaded via 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 – but it’s agnostic, so it could check those things
  • @spacedmonkey: Should we run PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher unit tests against different versions of PHP?

Feedback requested

New module proposal: Performance-oriented indexing for WordPress database tables

  • @olliejones: Request reviews of the proposal, specifically the Decisions to make section:
    • Unlike other modules, this one needs at least some dashboard user interface, to initiate the reindexing of the tables, and to complain if the tables use legacy storage features (MyISAM, COMPACT row format). Where do we put that user interface panel?
    • Experience shows that the POC plugin’s 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/ access is necessary on large sites to do the reindexing without timeouts. Should performance lab get wp-cli access? How about using WP_Cron?
    • What should the module do on 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 installations?
  • @olliejones: This is a bit different from the existing plugin modules because it initiates an operation that might run for a long time – several minutes on a big site. WP-CLI has been very useful in proof-of-concept plugin and could use advice on how to proceed. Wonder if this should be run by the hosting community?
  • @spacedmonkey: Worth sharing with the hosting community channel?
  • @flixos90: Adding a UIUI User interface shouldn’t be a concern for a Performance Lab module; Site Health is almost all UI. Feels like UI would probably be under Tools somewhere. Would it be technically possible to do this spread out through multiple web requests?
  • @spacedmonkey: Might need Site Health warning saying indexes are not in place
  • @olliejones: There’s a single ALTER TABLE SQL statement for each table and we need to add/drop all indexes in a single statement. Slowest/biggest table is usually postmeta.
  • @flixos90: How long would executing this query typically take? If too long, can this SQL statement be sent in a non-blocking way for the PHP process?
    • @olliejones: Overall, a few minutes for a postmeta table with a couple of megarows. PHP’s SQL support doesn’t have any fire-and-forget or threading that I know about.
    • @flixos90: If that’s true, not sure this would be feasible for core given they take so long to execute. My concern would be PHP timeout. If SQL execution takes several minutes, an AJAX request won’t work for most sites.
    • @flixos90: Realistically we wouldn’t be able to send an AJAX request and in that request complete the execution of the SQL statement?
      • @olliejones: AJAX and/or WP Cron might work, but the AJAX request won’t finish until after ALTER TABLE finishes
  • @pbearne: For core these could run only for new sites and be worth it
    • @spacedmonkey: Could adding indexes to new sites be a start?
    • @flixos90: If we can determine support on site creation and do it only for new sites as applicable, could still be beneficial without having those concerns from slow SQL queries
  • @furi3r: How does WooCommerce do it? They run big DB updates on upgrades
    • @olliejones: AFAIK, they’re in batches, but we can’t do that for reindexing
  • @spacedmonkey: See this as two problems: old sites vs. new sites. Changing schema for newly created sites is more simple
    • @olliejones: Agreed, but old sites are the ones that have the huge pain points
  • @olliejones: Plugin already has the WP-CLI stuff, could that be put into a Performance Lab module?
    • @flixos90: Since Performance Lab is for future core features, a WP-CLI command doesn’t qualify. Would potentially be a good contribution for the WP-CLI project, though. If we want to build something into core, it needs to work through what core offers, e.g. UI-triggered, AJAX, Cron, etc.
  • Will pick this back up next week

Help wanted

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

#hosting-community, #tide

A Week in Core – June 27, 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 June 20 and June 27, 2022.

  • 49 commits
  • 43 contributors
  • 71 tickets created
  • 9 tickets reopened
  • 44 tickets closed

The Core team is currently working on the next 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., WP 6.1 and on the next minor, WP 6.0.1 🛠

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

Application Passwords

  • Ensure long passwords don’t break the “new password” notice – #54581

Build/Test Tools

  • Add missing @covers tags and fix the docs for the Cron test group – #39265
  • Add missing @covers tags for the AJAX test group – #39265
  • Adjust 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/. notifications logic to account for expected non push events – #55652
  • Allow changes to the code coverage workflow to run on pull request – #55652
  • Configure Xdebug modes in the local Docker environment – #56022
  • Fix erroneous file name, from convertInvalidEntries.php to convertInvalidEntities.php#55652
  • Return an error when uploading a test coverage report fails – #55652
  • Update 3rd party 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/ Actions – #55652
  • Update NPM devDependencies to their latest versions – #55652
  • Update the actions/cache action – #55652
  • Always include the error message in assertNotWPError() and assertNotIXRError()#55652
  • Correct the expected result for wp_ajax_replyto_comment() test with a draft post – #39265
  • Further improve Tests_Image_Functions::test_wp_crop_image*() tests – #55652
  • Give the tests for adding empty post 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. values more consistent names – #55652
  • Improve Tests_Image_Functions::test_wp_crop_image*() tests – #55652
  • Improve the test for sticky posts not being moved to the front in sitemaps – #55633
  • Move assertQueryTrue() closer to the other custom assertions in WP_UnitTestCase_Base#55652
  • Put @covers tags before @params in Ajax and Formatting groups – #39265
  • Refactor Tests_Image_Functions::test_load_directory() to split the tests and use a data provider – #55652
  • Remove multiple $wpdb::placeholder_escape() calls in wpdb tests – #55652
  • Replace esc_url_raw() calls with sanitize_url()#39265, #55652
  • Use consistent punctuation in failure messages in Tests_Image_Functions#55652
  • Use more consistent wording when referring to PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher deprecation notices – #55652

Code Modernization

  • Remove dynamic properties in Tests_*_Slashes#56033
  • Remove dynamic properties in Tests_Media#56033
  • Use the integer portion of an item position in add_submenu_page()#55656, #54798

Comments

  • Add contextual autocomplete attributes to comment form fields – #55779

Database

  • Add %i placeholder support to $wpdb->prepare to escape table and column names – #52506
  • Add missing @since mention in get_posts_query_args()#55633
  • Correct the return type for wp_save_image_file()#55646
  • Improve documentation for WP_Image_Editor::save() and related functions – #55646
  • Use third-person singular verbs for function descriptions in Bookmark related files, as per docblockdocblock (phpdoc, xref, inline docs) standards – #55646
  • Use third-person singular verbs for function descriptions in Tests_Image_Functions, per the documentation standards – #55646
  • Use third-person singular verbs for function descriptions in Tests_Sitemaps_wpSitemapsPosts, as per docblock standard – #55646
  • Use third-person singular verbs for function descriptions in the Feed 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., as per docblock standards – #55646

Editor

  • Add utility classnames back to blocks that have layout attributes specified – #56058
  • Universalize functions for checking 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 status – #51819

Embeds

  • Remove MeetupMeetup All local/regional gatherings that are officially a part of the WordPress world but are not WordCamps are organized through https://www.meetup.com/. A meetup is typically a chance for local WordPress users to get together and share new ideas and seek help from one another. Searching for ‘WordPress’ on meetup.com will help you find options in your area. as an oEmbed source since the related endpoint has been deprecated – #55997

External Libraries

  • Upgrade PHPMailer to version 6.6.3 – #56016

General

  • Revert an earlier define of the WPINC constant in src/index.php#54233

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

  • Correct and improve inline docsinline docs (phpdoc, docblock, xref) and tests for functionality related to nooped plurals – #55646, #55652

Media

  • Use correct escaping function for URLs in some legacy media functions – #56064

Posts, Post Types

  • Add caching to _find_post_by_old_slug and _find_post_by_old_date functions. – #36723

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

  • Move all links to prepare_links method in theme REST API controller – #56018

Sitemaps

  • Remove duplicate sticky Posts from Sitemap Post Query – #55633

Themes

  • Add actions to template loading to assist with collecting debug info – #54541

Upgrade/Install

  • Add a conditional to facilitate testing of the Rollbacks feature project – #56057, #51857, #54166

Props

Thanks to the 43 people who contributed to WordPress Core on Trac last week: @jrf (9), @SergeyBiryukov (9), @costdev (5), @hellofromTonya (4), @pbeane (4), @antonvlasenko (4), @ironprogrammer (4), @audrasjb (4), @peterwilsoncc (4), @afragen (3), @johnbillion (3), @mukesh27 (2), @Spacedmonkey (2), @desrosj (2), @swissspidy (2), @pbiron (2), @dd32 (1), @pbearne (1), @jorbin (1), @ethitter (1), @flixos90 (1), @tabrisrp (1), @rmccue (1), @RavanH (1), @aristath (1), @zieladam (1), @yannielsen (1), @craigfrancis (1), @davidbaumwald (1), @juliemoynat (1), @bhrugesh96 (1), @sabernhardt (1), @tellyworth (1), @iandunn (1), @apokalyptik (1), @hasanuzzamanshamim (1), @smit08 (1), @glendaviesnz (1), @andrewserong (1), @matveb (1), @samikeijonen (1), @Presskopp (1), and @Synchro (1).

Congrats and welcome to our new contributor of the week: @yannielsen ♥️

Core committers: @sergeybiryukov (24), @desrosj (7), @audrasjb (7), @azaozz (4), @davidbaumwald (2), @johnbillion (2), @spacedmonkey (2), and @jorbin (1).

#6-0, #core, #week-in-core

Editor chat summary: June 22, 2022

This post summarizes the weekly editor chat meeting (agenda here) held on Wednesday, June 22. 2022, 03:00 PM GMT+1 in 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/.. Moderated by @fabiankaegy.

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/ 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 release

Gutenberg 13.5 got released by @annezazu. You can find the Changelog in the What’s new in Gutenberg 13.5? (22 June) post.

WordPress 6.0.1

WordPress 6.0.1 project board

Key project updates

The list of 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/ tracking issues was updated to reflect the updated Roadmap for Gutenberg Phase 2 for WordPress 6.1 Matias Ventura published earlier this month.

Task coordination

Nothing was discussed during the meeting.

Open floor

@andrewserong

Shared an update on some of the work they’ve been doing to explore a potential path forward for refactoring how the Layout 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. support works.

@ramonopoly

Shared an update about the work on the Fluid Font Size feature.

@daveloodts

Asked a question regarding styles that get added for image alignment in the editor.

@mamaduka

Shared a Proposal for Weekly Editor Bug Scrubs

#core-editor, #core-editor-summary, #gutenberg, #meeting-notes, #summary

Rollback Feature: Testing Call to Action

While it is a rare occurrence, updating plugins and themes can fail in such a way that leaves the old 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 non-functional, and may leave users with a broken site.  #51857 intends to add the ability for coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. to “rollback” to the previously installed version of a plugin/theme when such a failure occurs.

Over 19 months of development and testing has gone into this feature, primarily by @costdev, @pbiron, and myself (@afragen). Several different solutions and they have led us to the current PR2225.

It was determined that copying the current plugin to an alternate location and in the event of an update failure, copying it back into wp-content/plugins, would be the least resource intensive method. This does require one additional plugin copying operation and two if there is a update failure.

rename() was essential to the rollback feature as many reported issues were timeout issues on some resource starved hosts, #54166 as an example. Using rename() allows us to vastly improve the performance of the current method, rather than using copy_dir() as a recursive file copy. It was thought that this recursive file copy, on some systems, resulted in timeout issues for large plugins.

Do you use a VirtualBox-based environment?

Please follow these steps before continuing.

Call to Action

Big Need:

Broad testing and feedback is needed on many different web hosting platforms, including inexpensive shared hosting, managed hosting, and more.

How do I test Rollback?

Do not test on a production siteProduction Site A production site is a live site online meant to be viewed by your visitors, as opposed to a site that is staged for development or testing..

But do test on a local environment, hosted staging or test environment, or cloud staging or test environment.

  1. Here are some large plugins used for testing: akismet, jetpack, mailpoet, woocommerce, wpforms-lite, wordpress-seo
    • 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/: wp plugin install akismet jetpack mailpoet woocommerce wpforms-lite wordpress-seo
  2. Do this from the plugin’s page on https://wordpress.org/plugins by navigating to the “Development” tab, clicking “Advanced” to the right, and downloading an older version from the dropdown at the bottom of the page. You can also install the current version then modify the version in the plugin’s main file to decrement the version number.
  3. Install the WordPress Beta Tester plugin, set to Bleeding edgebleeding edge The latest revision of the software, generally in development and often unstable. Also known as trunk. and Nightlies. Go to Dashboard > Updates and click the Update to latest 6.1 nightly button.
  4. Install the Rollback feature plugin or test using the PR2225 in WordPress/wordpress-develop.
  5. Please make a note of the time required to perform plugin updates. Your phone’s stopwatch function may be the easiest method to do this.

Testing a single plugin update:

  1. Navigate to Plugins > Installed Plugins.
  2. Click “Update Now” located within the plugin row.

Testing bulk plugin updates via “Plugins”:

  1. Navigate to Plugins > Installed Plugins.
  2. Select another two plugins, select “Update” from the Bulk Actions dropdown, and click “Apply”.

Testing bulk plugin updates via “Dashboard”:

  1. Navigate to Dashboard > Updates
  2. Tick all plugins with an available update.
  3. Select “Update” from the Bulk Actions dropdown, and click “Apply”.

Testing updates via WP-CLI (if already familiar).

Validation of successful updates

This requires activating all the testing plugins on your testing site. Unsuccessful updates should show PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher Errors or PHP Fatal Errors.

  1. Activate each of the plugins that were updated.
  2. In WP Adminadmin (and super admin), navigate to each plugin’s menu pages.
  3. Navigate the frontend of your test site.
  4. Navigate to your wp-content/upgrade/temp-backup/plugins folder. It should be empty.

Forcing an update failure

Use the following 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. to force an update failure. This will reinstall the previously active plugin/theme.

add_filter( 'upgrader_install_package_result', function() {
  return new WP_Error( 'simulated_error', 'Simulated Error' );
});

Testing update failures

When testing for failures on the bulk update in update-core.php you must use the PR. There is a modification in the PR that stops WP_Upgrader::unpack_package() from deleting the items in the temp-backup directory.

Needed Feedback?


How long did the update(s) take?

  • Your phone’s stopwatch may be the easiest option for logging the time to update.
  • Please test without the Rollback plugin or PR active for a baseline.
  • Reinstall the earlier versions as before.
  • Test the updates again with the Rollback plugin or the PR active.
  • Please provide the list of updated plugins/themes, the timings, and your environment details.
    • web host
    • PHP version
    • nginxNGINX NGINX is open source software for web serving, reverse proxying, caching, load balancing, media streaming, and more. It started out as a web server designed for maximum performance and stability. In addition to its HTTP server capabilities, NGINX can also function as a proxy server for email (IMAP, POP3, and SMTP) and a reverse proxy and load balancer for HTTP, TCP, and UDP servers. https://www.nginx.com/., apacheApache Apache is the most widely used web server software. Developed and maintained by Apache Software Foundation. Apache is an Open Source software available for free., etc
    • WordPress version
  • Continue

Did you receive any “Failed to update” errors?

  • Yes:
    • Please provide environment details.
    • Please provide the name of the plugin(s) that failed.
    • Was this a single plugin update or a bulk plugin update?
      • Bulk plugin update:
        • Where was the failed plugin in the list of plugins to be updated?
        • Were you on the Dashboard > Updates page, the Plugins > Installed plugins page, or using WP-CLI?
  • No: Continue

Did you receive any Fatal Errors when browsing your site after the update?

  • Yes:
    • Please provide your environment details.
    • Please provide the name of the plugin(s) that resulted in Fatal Errors.
    • Please provide the Fatal Errors that were displayed.
    • Was this a single plugin update or a bulk plugin update?
      • Bulk plugin update:
        • Where was the failed plugin in the list of plugins to be updated?
        • Were you on the Dashboard > Updates page, the Plugins > Installed plugins page, or WP-CLI?
  • No: Continue

Was the wp-content/upgrade/temp-backup/plugins folder empty?

  • Yes: Thank you! Please report your results, and environment details, in the comments below.
  • No:
    • Please provide your environment details.
    • Please provide the name of the plugin(s) that remain in wp-content/upgrade/temp-backup-plugins.
    • Was this a single plugin update or a bulk plugin update?
      • Bulk plugin update:
        • Where was the failed plugin in the list of plugins to be updated?
        • Were you on the Dashboard > Updates page, the Plugins > Installed plugins page, or WP-CLI?

Where do I report issues?

Please report test results or issues as comments on this post. Please list your environment in your results.

Editing assistance from birds and squirrels, also @ironprogrammer, @davidbaumwald, @hellofromtonya

#rollback

WordPress 6.0.x release team and 6.0.1 schedule

The 6.0.x releases will follow the same consistent minor release leads strategy as the 5.8.x releases and 5.9.x releases did. For the 6.0.1 point releases, the release leads will be:

  • Release LeadRelease Lead The community member ultimately responsible for the Release. / CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. tech: @sergeybiryukov
  • Release Deputy / Editor tech: @zieladam

@zieladam is going to help with 6.0.1 but, for a 6.0.2, there’s an opening if someone is able to help. I’ll keep this post up to date as that changes.

6.0.1 proposed schedule

The following schedule is being proposed for 6.0.1:

  • 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).: July 5th, 2022
  • Final release:  July 12, 2022

@sergeybiryukov will run mission control for this release.

TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets update

As of the publish date of this post, 4 Trac Tickets have been fixed and are ready to be backported to the 6.0 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". to be included in 6.0.1. 6 additional tickets either need testing or have 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. in order to be considered for backporting. 

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/ issues updates

As of the publish date of this post, there are 13 pull requests ready for backporting to the 6.0 branch.

Release coordination

The #6-0-release-leads channel will continue to be used for all coordination and conversation related to the 6.0.x releases. This matches the pattern of communication that worked well for the 5.9.x cycle!

#6.0 #6.0.1

Block editor styles: initiatives and goals

The CSSCSS Cascading Style Sheets. rendered by 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 needs improvement.

The challenges are many and they have been documented. There are, nevertheless, several recurring themes:

  • An overabundance of rendered inline style tags and duplicated CSS rules. For example, see #41434.
  • Confusing or meaningless classnames, or the lack of semantic and utility classes. See the proposals in #38719 and #38998
  • Difficulty extending and customizing styles for themes due to high specificity. Touched upon in this post, and demonstrated in issues such as #40159, #36135 and #37590.

The purpose of this post is to highlight ongoing initiatives targeted at addressing these issues, and to outline longer-term ambitions to output more readable, efficient and extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. frontend styles. 

Roadmap

Phase 1: block styles consolidation and refactoring the layout abstraction

Goals:

  • To audit and consolidate where the code generates block support CSS in the backend so that they are delivered from the same place (as opposed to multiple places). This covers CSS rules such as margin and padding, typography, colors and borders. 
  • Removing repetitive layout-specific styles and generating semantic class names for each layout. 

Phase 1 is currently underway. 

The focus in Phase 1 has been to lay a foundation that will make it easier to introduce iterative improvements. 

Rather than printing block styles on demand from multiple locations, the focus is to create a single, centralized agent responsible for generating them, and, in later phases, assume the responsibility of processing and rendering better frontend CSS.

Work on this has started and is progressing well. See Tracking: Add a Style Engine to manage rendering block styles #38167.

A pull request that reduces rule duplication and institutes semantic class names for the layout block support is ready for review. It also centralizes layout definitions, which will pave the way towards adding additional layouts in the future.

See: Layout: Use semantic classnames, centralize layout definitions, reduce duplication, and fix blockGap in theme.json #40875

Phase 2: global styles consolidation and reducing style tags

Goals:

  • Connect global styles to the same mechanism with which we’re generating block styles.
  • Reduce the number of inline style tags we print to the page for block, layout and elements support.
  • For layouts, use a presets-like approach to generate semantic class names for attributes of layouts.

Building upon Phase 1, the outcome of this phase is to have a single styles “generator” capable of building CSS for both block and 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./global styles.

In Phase 2, the objective is to explore how we can leverage this consolidated system of style generation by first grouping, then rendering a minimal set of style tags to the page. 

This includes, for example, moving block supports styles such as layout and elements to a single style 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.), then identifying other candidates for optimization.

There are already some very early, investigative PRs:

With regards to layout support, extending the group of semantic/utility classes to combine common attributes such as content justification and orientation, further reducing repetitive layout-specific styles.

Phase 3 and beyond

Proposed goals (in no particular order and not exclusive):

  • Continue with style consolidation, address edge cases or unique blocks that require special handling, such as the Gallery block.
  • Explore pre-render CSS rule processing with the intention of deduplicating other common and/or repetitive block styles.
  • Extend the scope of semantic class names and/or design token expression, and encapsulate rules into stable utility classes.
  • Establish and document standards by which to extend/override CSS.
  • Propose a way to control hierarchy and specificity, and make the style hierarchy cascade accessible and predictable. This might include preparing for cascade layers until they become more widely supported, and allowing for opt-in support in 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/ via theme.json.
  • Allow for rendering styles in asynchronous contexts. See #35376

The intention is to publish 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/ discussion threads for these topics to gather ideas and feedback.

How we’re going and how we’ll get there

The expectation is for the layout refactor and much of the styles consolidation work mentioned in Phase 1 to ship in WordPress 6.1

Phases 1 and 2 aim to ameliorate pain points, and also set things up for future enhancements in Phase 3++.

Style nirvana might well be out there, however the path comprises individual stepping stones, discovering how individual parts contribute to the whole, and balancing compatibility and stability with innovation.

If we can keep refining and narrowing the scope, shipping in stages, and laying out the foundations, I think we’ll be in a better position to manage the risks and challenges and greatly improve the condition of our rendered styles and frontend output. 

Thanks to all the folks who have shared their wisdom so far. ❤️ If you’d like to contribute, or have feedback or ideas on present or future initiatives, please leave a comment on one or all of the ongoing projects I’ve linked to in this post. 

Acknowledgements: This post was co-authored with @andrewserong and @isabel_brison, with the assistance of @apeatling and @matveb.

#core-css, #core-editor, #gutenberg

Performance Chat Agenda: 28 June 2022

Here is the agenda for this week’s performance team meeting scheduled for June 28, 2022, at 15:00 UTC.


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

WordPress 6.1 Planning Roundup

WordPress 6.1 will be the third major release of 2022. Following WordPress 6.0 Arturo, 6.1 will aim to refine those experiences found in Arturo and in 5.9 Joséphine [ref]. In preparation, this post includes target dates, features, and a call for the release’s squad.

This release cadence will consist of a long alpha and two short 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. periods before the release candidaterelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). phase. According to the schedule proposed below and 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/ release cadence, WordPress 6.1 would include up to Gutenberg 14.1 for a total of 11 Gutenberg releases, the same amount as WordPress 6.0 included.

Proposed WordPress 6.1 Schedule

MilestoneDate
Alpha (trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. open for 6.1 release)May 3, 2022
Beta 1 & Feature FreezeSeptember 20, 2022
Beta 2September 27, 2022
Release Candidate 1October 4, 2022
Release Candidate 2October 11, 2022
Release Candidate 3October 18, 2022
Dry RunOctober 24, 2022
WordPress 6.1 General releaseOctober 25, 2022

Proposed WordPress 6.1 Release Leads

Release LeadRelease Lead The community member ultimately responsible for the Release.: Matt Mullenweg
Release Coordinator: TBD
CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Tech Lead: TBD
Editor Tech Lead:  TBD
Core Triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. Lead: TBD
Editor Triage Lead: TBD
Documentation Lead: TBD
Marketing & Communications Lead: TBD
Test Lead: TBD
Design Lead: TBD

All release decisions will ultimately be this release teams’ to make and communicate while gathering input from the community.

Join The Squad!

If you are interested in being a part of 6.1’s release squad, please show your interest in the comments below. Roles can be shared among more than one person!

#6-1, #planning

Dev Chat Summary: June 22, 2022

@marybaum led the weekly meeting at 20:00 UTC. Here is the meeting agenda.

Link to 20:00 UTC <dev-chat> in #core on Making WordPress Slack
(bonus link to the new contributor chat at 19:00 UTC)

Notable News

Folks Need Feedback!

Release Updates

Component Updates

Build/Test Tools

  • Quite a few unit tests for image functions were modernized per the current best practices#55652
  • Xdebug modes are now configured in the local Docker environment. #56022
  • Changes to the code coverage workflow can now run on pull requests to be verified before being committed. #55652

Components that Checked in with “No Update”: Date/Time, General, I18Ni18n 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., Menu, Widgets, Bulk Edit, About/Help

Watch For

  • WordPress 6.1 kick off and plans
  • WordPress 6.0.1 kick off and plans

Interested in volunteering for upcoming WordPress releasesPlease comment below!

#dev-chat, #summary