Performance Chat Summary: 8 November 2022

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

Mini 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 of performance issues for 6.1.1

  • See here
  • https://core.trac.wordpress.org/ticket/56923 – PR committed; should become available when @mamaduka syncs 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/ to coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. on Thursday
  • https://core.trac.wordpress.org/ticket/56815 – assigned to @flixos90 for review
  • https://core.trac.wordpress.org/ticket/56900 – assigned to @peterwilsoncc for commit
  • https://core.trac.wordpress.org/ticket/56945 – @flixos90 has PR in progress at https://github.com/WordPress/wordpress-develop/pull/3536 that needs review and feedback, especially from Gutenberg team. @annezazu working to 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. someone in there.
  • https://core.trac.wordpress.org/ticket/56948 – ready for commit, just needs a final review; assigned to @peterwilsoncc
  • https://core.trac.wordpress.org/ticket/56952 – @adamsilverstein to look into
  • https://core.trac.wordpress.org/ticket/56974 – @flixos90 took a first look at the PR last week and will give it a comprehensive review today
  • https://core.trac.wordpress.org/ticket/56990 – @adamsilverstein‘s changes need review/testing
  • https://core.trac.wordpress.org/ticket/56991 – @spacedmonkey‘s fix at https://github.com/WordPress/wordpress-develop/pull/3575 needs review
  • https://core.trac.wordpress.org/ticket/57012 – ready for commit by @peterwilsoncc

Focus area updates

Images

@adamsilverstein @mikeschroder

GitHub project

  • @adamsilverstein: Discovered a library, jSquash, that brings image format encoding/decoding to the web. Tested a bit and oping to use it to enhance the core image 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. with modern image capabilities. If successful, would let us introduce AVIF support without depending on server-side support.
  • @mehulkaklotar: Working on #563 for Performance Lab to change default WebP quality to 82; PR needs review.

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

  • @spacedmonkey: Working mostly on 6.1.1 issues, but a few for 6.2, as well:
    • https://github.com/WordPress/wordpress-develop/pull/3544
    • https://github.com/WordPress/wordpress-develop/pull/3528
    • https://github.com/WordPress/wordpress-develop/pull/3534
    • https://github.com/WordPress/wordpress-develop/pull/3366
    • https://github.com/WordPress/wordpress-develop/pull/3365
    • https://github.com/WordPress/wordpress-develop/pull/3178
  • @tillkruess: Chatted with @johnjamesjacoby about adding a health check for the new wp_cache_supports() function to show which object caching features are supported/not supported but recommended. See https://github.com/WordPress/wordpress-develop/pull/3347. For example, get_multiple() is quite important. Any feedback on adding as a health check?
    • @spacedmonkey: Now have wp_cache_supports in core that we could use and wp_cache_supports( 'get_multiple') in all options. Instead of loading all options in one cache key, load each in their own cache key and all in single call.

Feedback requested

Measurement

N/A

GitHub project

  • No updates

Feedback requested

JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. & CSSCSS Cascading Style Sheets.

@aristath @sergiomdgomes

GitHub project

  • No updates

Feedback requested

Database

@olliejones

GitHub project

Feedback requested

Infrastructure

@flixos90

GitHub project

  • @flixos90: Plugin codebase is now updated to reflect our recent modifications to the focus areas per https://github.com/WordPress/performance/pull/566, thanks to @mukesh27

Feedback requested

Our next chat will be held on Tuesday, November 15, 2022 at 16:00 UTC in the #core-performance channel in Slack.

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

#meta

Performance Chat Summary: 1 November 2022

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

Announcements

Focus area updates

Images

@adamsilverstein @mikeschroder

GitHub project

  • @adamsilverstein: On the AVIF front, it looks like Apple is building support right into WebKit, which means AVIFs will work on older iOSiOS The operating system used on iPhones and iPads./MacOS as long as users upgrade Safari (currently support depends on the underlying OS). See https://github.com/WebKit/WebKit/pull/5669. The coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. ticketticket Created for both bug reports and feature development on the bug tracker. is https://core.trac.wordpress.org/ticket/51228; the only outlier for AVIF support is now Microsoft Edge. In addition to 50%+ improvement over JPEG compression, AVIF images add support for HDR on the web; a contributor linked some sample images from the TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. ticket that are quite impressive.
  • @adamsilverstein: When working on the PR for setting fetchpriority=high on the non-lazy-loaded LCP image, noticed the first image on blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. themes isn’t having the lazy-loading attribute omitted as expected. Opened #56930 and PR #3538 to resolve; reviews appreciated. Also related: #56927, #55996.
  • @mehulkaklotar: Working on some improvements to Performance Lab:
    • Issue #560 – PR #565 – WebP upload configuration checkbox not showing in Settings > Media for 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 -> Merged
    • Issue #563 – PR #571 – Change default WebP quality to 82
  • @masteradhoc: Any updates on WebP?
    • @adamsilverstein: There has been some communication with Matt, repeating what he said on his post about concerns about WebP not being ready to be default mostly because it is hard to use outside of the web context. Hopefully in the future we’ll be able to get this kind of feedback earlier in a feature’s lifecycle. To move WebP further, we would need to address the underlying issue, either by improving ecosystem compatibility (which is happening naturally over time) or by improving browser capabilities (e.g. save as JPEG).
    • @spacedmonkey: In multisite, we used to proxy all attachments through PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher. Could we do that here? Proxy to see if there is WebP support, and if not, return JPEG. Has its downsides but thinking out loud.
      • @adamsilverstein: Didn’t know about that; could potentially only handle “missing” images that way using htaccess
      • @spacedmonkey: It’s still part of core: https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-includes/ms-files.php
    • @masteradhoc: Could we open a ticket in the Chromium GH for save as JPEG to see if they could add? Would help the biggest part of the web.
    • @flixos90: We can’t really solve the problem in a clean way in WP though, since the right-click Save As behavior can’t be modified via PHP or JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors.. Wish browsers supported some way of achieving a JPEG download of a WebP image on the web, e.g. if you use a <picture> element it could be default download as JPEG even when WebP is served in the browser. Or there could be some kind of download-src attribute.
      • @rmccue: Have run into this while serving images dynamically, no great way to handle
      • @flixos90: Looking to see if there’s anyone we can work with on this internally at Google

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

  • @spacedmonkey: Tickets:
    • https://core.trac.wordpress.org/ticket/56923
    • https://github.com/WordPress/gutenberg/issues/45309
    • https://github.com/WordPress/wordpress-develop/pull/3528
    • https://github.com/WordPress/wordpress-develop/pull/3544
    • https://github.com/WordPress/wordpress-develop/pull/3534
  • @spacedmonkey: Reviewed performance in 6.1-RC3 and updated results here; looking good. FSE themes are still slower than classic themes. Created some tickets related to issues found; have been working on https://github.com/WordPress/wordpress-develop/pull/3540.
  • @flixos90: Also did an analysis on RC3 last week; major improvement over RC1 and RC2. Still a few areas that were slightly worse than 6.0, but some of that is due to added functionality. Still a few quirks where 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. is noticeably worse, namely in the wp_head action. Have tracked down the particular change that makes wp_head slower even in classic themes; PR with a potential fix here: https://github.com/WordPress/wordpress-develop/pull/3536.
  • @spacedmonkey: Biggest issue is that class is static methods and variables, which makes it hard to review and test.

Feedback requested

Measurement

N/A

GitHub project

  • @adamsilverstein: Digging back into the testing environment work that started awhile ago to see what we can pick up and use and what an 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 could look like. Still researching/documenting, but more to come.

Feedback requested

JS & CSSCSS Cascading Style Sheets.

@aristath @sergiomdgomes

GitHub project

  • No updates

Feedback requested

Database

@olliejones

GitHub project

  • @mxbclang: @aristath is continuing to work on the SQLite integration module in https://github.com/WordPress/performance/pull/547; feedback welcome
  • @spacedmonkey: Thoughts on running core unit tests against SQLite, similar to how tests are run against memcache? Could allow the tests to fail for now, but would highlight where we need to fix issues.
    • @adamsilverstein: Great idea, curious about performance as well
    • @spacedmonkey: Is this Trac or 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.?
    • @adamsilverstein: Neither, Performance Lab only right now; proposal here
    • @spacedmonkey: Yes, but add official support for testing against SQLite, so in the test run, install the drop-in for SQLite and run tests
    • @adamsilverstein: I see, I think that is still core since it’s all in the main develop repo
    • @spacedmonkey: Will create a ticket for this

Feedback requested

Infrastructure

@flixos90

GitHub project

  • @flixos90: Planning to review https://github.com/WordPress/performance/pull/566 today, which brings the focus areas up-to-date.
  • @mehulkaklotar: I have worked on issue #561 – PR #570 – Investigate unexpected input Warning message during release build process -> Needs review and testing both

Feedback requested

Our next chat will be held on Tuesday, November 8, 2022 at 10am EST in the #core-performance channel in Slack.

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

#meta

Performance Chat Summary: 25 October 2022

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

Announcements

Focus area updates

  • @mxbclang: Results of focus area updates vote
    • Added new Database focus area – see GH label and Project
    • Renamed 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/. focus area to JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. & CSSCSS Cascading Style Sheets. – see GH label and Project
    • Removed Site Health focus area – added “LEGACY” to GH label and Project and moved all active issues to an appropriate new focus area
    • Working on adding a list of focus areas to the Handbook
    • Call for leads for Database – @olliejones volunteered! Will update GH accordingly

Images

@adamsilverstein @mikeschroder

GitHub project

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

  • No updates

Feedback requested

Measurement

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/.
  • @mxbclang: Work continuing on defining 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 Checker plugin and getting close to engineering; more updates soon

Feedback requested

JS & CSS

@aristath @sergiomdgomes

GitHub project

  • No updates

Feedback requested

Database

@olliejones

GitHub project

  • No updates

Feedback requested

Infrastructure

@flixos90

GitHub project

  • @flixos90: Planning to get back to the Server-Timing 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. work this week and reviewing focus area updates in https://github.com/WordPress/performance/pull/566 today

Feedback requested

Open Floor

  • @flixos90: Identified and validated the main cause of the 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. with @spacedmonkey and it has been fixed. Will run another iteration of the same analysis for 6.1-RC3 today or tomorrow to verify that results have improved.
    • @olliejones: What was it?
    • @flixos90: Was caused by a bug in https://core.trac.wordpress.org/ticket/39210. Research has not yet been published as wanted to see how the situation evolves, but fair to say that we got the perfect outcome and it shows how important performance analyses are. Will write a summary with concrete numbers up next week and publish after 6.1 launch.

Our next chat will be held on Tuesday, November 1, 2022 at 12pm EDT in the #core-performance channel in Slack.

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

#meta

Performance Chat Summary: 18 October 2022

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

Announcements

  • @mxbclang: Reminder: Focus area updates vote and call for leads
  • @mxbclang: Upcoming time change
  • @mxbclang: New Handbook on our CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Performance site
    • Some new content, some ported over from the /docs folder of the Performance Lab 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. If you have changes or updates, please contact Bethany directly; workflow for updates to come.
    • @flixos90: All new documentation related to Performance Lab should go into this Handbook, not /docs as that folder has been removed

Focus area updates

Images

@adamsilverstein @mikeschroder

GitHub project

  • @flixos90: Found a bug during yesterday’s release party where the WebP upload configuration checkbox is not displaying in Settings > Media on multisites
  • @joegrainger: #527 and #537 we’re part of the 1.6.0 release yesterday, which bring us to parity with the planned WebP implementation in core

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

  • @spacedmonkey: Just committed https://github.com/WordPress/wordpress-develop/commit/7b176e6deaeb54249f7096c8ef8415d3edb46e39
  • @spacedmonkey: Spent some time testing RC2 and seeing better numbers for page performance than for Beta2. 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. appears to have come from a change to PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher related to 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/. Numbers are better than Beta2 but not as good as 6.0 – 0.6325s for Beta2, 0.4014s for RC2, and 0.2929s for 6.0.
    • @flixos90: We’ve been working on a separate performance analysis comparing 6.1 RC1 to 6.0 and will follow up today to do RC2. Unfortunately results haven’t been looking as good as 6.0 in our analysis, either. Hopefully RC2 is improving in our tests, too.
    • @spacedmonkey: Have been using Blackfire for testing. You can get a free 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. license; if anyone is interested, can help them get set up.
    • @flixos90: Been using WebPageTest in combination with custom-measured Server Timings, so these two analyses can complement each other well.
    • @spacedmonkey: Don’t think we will have time to fix these issues before 6.1 release; these would require big changes so doesn’t feel like a good idea to get merges committed without testing. Maybe possible for 6.1.1.
    • @aristath: Been using Xdebug and webgrind and pushed a few tweaks to core in the last few weeks as the result of those tests. Setup instructions are here if anyone’s interested in getting started easily.
    • @johnbillion: For anyone who wants timing information and doesn’t have access to Xdebug/Cachegrind/XHProf/Blackfire etc., you can do rough timing with the Query Monitor plugin
    • @spacedmonkey: One issue I’ve found is that a lot of code related to theme.json is being loaded even if the active theme does not support these features
    • @mukesh27: Agreed
    • @spacedmonkey: Would like to work on conditionally loading these features on classic themes; much of this has been an issue since 5.9
    • @johnbillion: There are a few issues on that topic in the Gutenberg repo, e.g. https://github.com/WordPress/gutenberg/issues/38299

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/.
  • @mxbclang: Yesterday’s Performance Lab release included functionality to only load the two new SH checks that will be in 6.1 (persistent cache and full page cache) when they are not available in core: https://github.com/WordPress/performance/pull/543

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

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

  • @flixos90: Got 4 non-critical debug warnings during the release deployment yesterday, which we should look into: https://github.com/WordPress/performance/issues/561
  • @flixos90: Want to highlight the Server-Timing API proposal again. Been working on a proof of concept in https://github.com/WordPress/performance/pull/553 which would be great to get some first reviews on. Also added some example usage code and linked a Gist with several examples for how we could leverage that 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. to expose specific timings. Exact API seems a bit clunky to use and already have some ideas on how to simplify it better to fit the usage. Still works well technically though, so it’s okay to be reviewed.

Feedback requested

Module proposal: SQLite – @aristath

  • @mxbclang: Related to the broader proposal to make WP officially support SQLite
  • @aristath: The SQLite implementation can be found on the PR linked above. A couple of minor issues with the implementation, but they don’t have anything to do with the SQLite code itself. The issues I have in that PR are related to the module’s activation and deactivation: when enabling/disabling the module, WP switches DBs and subsequently all options regarding the activation/deactivation of the module are difficult to handle because on option-save, we switch databases. It’s a solvable UXUX User experience issue, but could definitely use some assistance. At this stage, believe it’s time to start collaborating on the PR, test it, and merge relatively early so we can urge more people to test.
  • @flixos90: Re-sharing one idea mentioned when discussing this previously (see Slack): Present a warning that this will result in an empty DB. If the user clicks Activate, show a modal where they have to enter SQLite config data, then put that into wp-config.php and install the DB before they activate. This way, they could remain on the same screen and continue to use WP or deactivate if they want to. Would avoid an overly confusing experience.
  • @aristath: Added a note next to the module (not a modal). SQLite doesn’t currently require any user-provided config, so didn’t want to make things more complicated. Agree that we should have something more user-friendly and be clear about what will happen and why.
  • @flixos90: So there would not be any constant to add to wp-config.php?
  • @aristath: At this stage, no – the module automatically copies a db.php file in wp-content, assuming that if the file is there, you want to use SQLite. On deactivation of the module, the file is deleted so you go back to your 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/. database.
  • @flixos90: There are other use-cases for db.php, though, so wary of the existence of the file being the only thing that we rely on. Should probably also back up any existing db.php file in case and restore it on deactivation of the module.
    • @rickjames: Will there be a migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. path from SQLite to MySQL? Thinking of a case where someone starts out with a “small” site but it grows “too big” for SQLite
      • @aristath: If SQLite is included in core, there will definitely be a migration path. Most likely it would be in the form a canonical plugin and not core. Don’t think it will be the nightmare we envision it to be – just connect both DBs and copy data between them.
    • @aristath: If they have a different db.php file, then they’re already using a custom DB somehow – if it’s detected, the module does not overwrite and instead exits
  • @rickjames: Don’t think there is any way to keep the DBs “in sync”
    • @aristath: There is a way, but wouldn’t want to do it. This is intended to be a module to test the stability of SQLite in WP and work toward implementation in core. Not intended to take care of syncing dbs, using them to back up data, etc.
  • @mxbclang: Feel free to leave comments on https://github.com/WordPress/performance/pull/547 and we can always discuss this further in a future chat, as well

Our next chat will be held on Tuesday, October 25, 2022 at 11am EDT in the #core-performance channel in Slack.

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

#meta

Performance team meeting summary 11 October 2022

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

Focus area updates

Images

@adamsilverstein @mikeschroder

GitHub project

  • @adamsilverstein: Committed two small fixes related to the existing `image_editor_output_format` 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.#54476 and #56442
  • @mukesh27: Added checkbox to Settings > Media to control whether to generate JPEG in addition to WebP in #537
    • @flixos90: This is unlikely to ever make it into coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., but it is useful 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 to test either of the two behaviors
  • @ankitgade: Continuing to work on background processing infrastructure

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

  • @spacedmonkey: Published and helped with several dev notesdev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. for 6.1:
    • https://make.wordpress.org/core/2022/10/10/performance-improvements-to-the-rest-api/
    • https://make.wordpress.org/core/2022/10/10/multisite-improvements-in-wordpress-6-1/
    • https://make.wordpress.org/core/2022/10/07/improvements-to-wp_query-performance-in-6-1/
    • https://make.wordpress.org/core/2022/10/06/new-cache-site-health-checks-in-wordpress-6-1/
    • https://make.wordpress.org/core/2022/10/11/performance-field-guide-for-wordpress-6-1/
  • @spacedmonkey: Also merged https://github.com/WordPress/wordpress-develop/pull/3424 and https://github.com/WordPress/wordpress-develop/pull/3403 and need code review for https://github.com/WordPress/wordpress-develop/commit/832b6c35f36d5f1ca84feadc49b0e5424af0ad6c, which will add a new function to core called wp_cache_supports to allow object caches to support different functionality
  • @spacedmonkey: Been investigating the performance regression seen in Beta 2, particularly new caching issues in block themes – see https://github.com/WordPress/gutenberg/issues/44772 for details. PR in the works https://github.com/WordPress/wordpress-develop/pull/3418 that needs review ASAP before the RC1 cutoff.

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/.
  • @mxbclang: Dev note for new Site Health checks has been published: https://make.wordpress.org/core/2022/10/06/new-cache-site-health-checks-in-wordpress-6-1/

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

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

  • @flixos90: Our next release, 1.6.0, will be this coming Monday, October 17. Any feature or enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature. that you want to include in this release should be completed and merged by tomorrow (Wednesday, October 12, see #548).

Feedback requested

Focus area updates

@flixos90

  • @flixos90: Three proposed changes that have come up in recent weeks to align focus areas. First is to introduce a new Database focus area; there are several module proposals (SQLite, optimized autoloaded options, database health checks) and some core optimizations that would also fit into this
    • @spacedmonkey: Should Object Caching and Database be the same?
    • @olliejones: Suggest keeping them separate
    • @flixos90: Don’t think so, some are pure database optimizations while sometimes object caching works around DB requests. I’d say adding caching around DB queries is still “Object Caching,” but there’s also room to improve some queries themselves and other DB issues
    • @spacedmonkey agrees
  • @flixos90: Second: We have a JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. focus, but there’s also a lot of work going on 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/ to improve CSSCSS Cascading Style Sheets. loading. Should we introduce a CSS area, or alternatively broaden the existing focus to be Assets (including CSS & JS)?
    • @mxbclang: Makes sense to me to broaden JS to both unless we have someone who is really interested in leading CSS
    • @spacedmonkey: Think they should be separate; if no one leads CSS, then it is not a “focus”
    • @mxbclang: That’s not entirely true; there’s some maintenance around designating something as a “focus,” e.g. having it on our weekly agenda, GH labels, updating the CODEOWNERS file, etc.
    • @olliejones: Is the scope of the JS focus intended to cover ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. apps and XHR/fetch performance?
    • @flixos90: FWIW the JS focus has barely made any updates here since it was established, but it’s a noticeable aspect of performance and some projects have been kicked off so would not want to remove it; @aristath has been quite involved with CSS though
    • @spacedmonkey: What does the JS focus mean right now?
    • @adamsilverstein: We do have some work around enabling better loading strategies for scripts that falls under JavaScript; I’ve been working on researching the benefits of using defer
    • @flixos90: Generally most of our focus is on website front-end performance, so the JS focus is also focused on front-end – things like deferring scripts, not loading JS that isn’t used, etc.
    • @spacedmonkey: How about a “Front-End” focus then?
    • @flixos90: Don’t think that would make sense, since everything we do is about front-end. Even DB queries and object caching improvements affect the front-end a lot. Let’s discuss later.
  • @flixos90: Last one: Suggest removing the Site Health focus – not because we shouldn’t work on Site Health, but more because any Site Health check actually fits into other areas and would be better suited as part of the other focus areas as opposed to it’s own area. There has not been a focus lead for Site Health, which is maybe another indicator that we should retire this area and consider checks to be part of other focus areas moving forward.
    • @spacedmonkey: So like an object caching-related Site Health check would be part of the Object Caching focus, right? Yes
    • @flixos90: Looking at our current SH modules:
      • Autoloaded options audit > Database
      • Enqueued assets > JS/CSS (TBD)
      • Full page cache > Object Caching
      • WebP support > Images
  • Vote on all through proposals here through Tuesday, October 18, 2022 at 1pm EDT: https://github.com/WordPress/performance/issues/554

Our next chat will be held on Tuesday, October 18, 2022 at 11am EDT in the #core-performance channel in Slack.

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

#meta

Performance team meeting summary 4 October 2022

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

Announcements

Focus group updates

Images

@adamsilverstein @mikeschroder

GitHub project

  • @adamsilverstein: Not much to update, worked on a 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. fix for #56442
  • @eugenemanuilov: #524 to disable JPEG subsizes generation for WebP images has been updated based on feedback from @flixos90
  • @mukesh27: Working on #525 to add a checkbox to the Media screen to enable multi-MIME type output, to match with the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. WebP implementation
  • @ankitgade: Working on background processing infrastructure related to image regeneration
    • Background job class PR #507 is merged
    • Background process runner PR is in progress and will be ready to review tonight
    • Adminadmin (and super admin) queue screen PR is work in progress
  • @khoipro: Any updates on SVG uploads?
    • @mxbclang: No one is actively working on this at the moment, so anyone can pick it up if they have time https://github.com/WordPress/performance/issues/427
    • @spacedmonkey: Not working on this right now, but may in the future. Biggest blockerblocker A bug which is so severe that it blocks a release. is that the library that everyone uses for cleaning SVGs requires PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher 7+, so it would need to be forked/rewritten if we wanted backwards compatibility. If we wanted to make it a PHP 7+-only feature, it would make things a lot easier.
    • @flixos90: WP hasn’t really done that before, but don’t think it’s a no-go as long as it’s a non-critical feature
    • @spacedmonkey: PHP 5.6 is only 4% of WP installs, per https://wordpress.org/about/stats/
    • @adamsilverstein: We already do something like this with server support for images where you can’t use a format unless your server supports it
    • @flixos90: As long it gracefully falls back if unsupported and doesn’t break anything on older versions, would be totally onboard
    • @khoipro: What about sanitize and escape file uploading, and styling SVG in media preview?
    • @flixos90: Matt also mentioned a few years back that he would be open to WP offering certain features only to sites with HTTPSHTTPS HTTPS is an acronym for Hyper Text Transfer Protocol Secure. HTTPS is the secure version of HTTP, the protocol over which data is sent between your browser and the website that you are connected to. The 'S' at the end of HTTPS stands for 'Secure'. It means all communications between your browser and the website are encrypted. This is especially helpful for protecting sensitive data like banking information., kind of similar
    • @spacedmonkey: The creator of the library was open to support, not sure how much work we would need to do to port back to 5.6
    • @flixos90: Unless backporting would be super straightforward, I would say it’s not worth our effort and we make it 7+ only
    • @ankitgade: We can analyze what issues we see on 5.6 to evaluate how difficult this would be

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

  • @spacedmonkey: Committed https://core.trac.wordpress.org/ticket/56721 and need review and commit on https://github.com/WordPress/wordpress-develop/pull/3403
  • @spacedmonkey: Also been profiling and testing WP 6.1 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. 2 – profiling data
    • @spacedmonkey: WP6.1 beta 2 has a slower page generation time than 6.0, in some cases by a lot (0.6325 vs. 0.2929 seconds), even with fewer DB calls in a lot of cases
    • @flixos90: Did you test 1 for each scenario, or multiple and then use average/median results?
    • @spacedmonkey: Ran at least three times and did median
    • @flixos90: If we could automate, maybe do something like 5-10 runs to make it more accurate
  • Also working on dev notesdev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. (1, 2, 3) – @mxbclang has reviewed and @flixos90 will take a look today or tomorrow
  • @khoipro: Will assign someone from their back-end team to take a look at profiling and testing, as well

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: Draft Make post is in progress for the new SH checks in 6.1, waiting for a final review before publishing

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
  • @mxbclang: Getting closer to starting engineering on 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 performance checker thanks to @mehulkaklotar and @jjgrainger‘s work on a design doc

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

  • @flixos90: Per the vote to bump the Performance Lab plugin minimum requirement to WP 6.0, our next release will require 6.0
  • @flixos90: Our next release, 1.6.0, will be Monday, October 17, less than two weeks from now. Any feature or enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature. that you want to include in this release should be completed and merged by next Wednesday, October 12 (see #548).

Feedback requested

Module proposal: Server-Timing API

@flixos90

  • @rickjames: For server-side performance measurement, 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/.’s “slowlog” can be useful
  • @flixos90: Not familiar with that tool, but worth exploring another time and feel free to draft a proposal. The current proposal leaves the actual measurement agnostic so it would leave room to introduce a more flexible and opinionated system later.
  • @adamsilverstein: Overall love the proposal, are you proposing that this would be included in the response by default once this is added?
    • @flixos90: Yes, envision that it would be added by default
  • @johnbillion: Added a comment on the issue about headers: headers need to be sent before any output, and a lot of processing that happens in WordPress that would ideally be measured occurs after the output begins
    • @flixos90: Definitely a fair point. Even with that limitation, still a lot of benefit to having the headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. to measure everything until WP begins to render the output. This will be a known limitation eventually, but also think this will become a smaller issue with FSE sites because they typically generate all content and then it is just “printed” out, so less “work” happening after headers are sent.
    • @johnbillion: Maybe, but <head> still gets filled up by plugins and core doing processing. Would be good to think of what metrics would be useful to see and whether exposing those metrics via this 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. makes sense.
    • @flixos90: One example would be the autoloaded options query given the recent module proposal to improve that
    • @johnbillion: Does FSE actually construct its output before it’s all sent?
      • @aristath: Yes, the whole content/template gets rendered internally prior to sending any headers
    • @johnbillion: Like the idea of using the Server-Timing API header, but not sure if it necessarily works for WP
    • @flixos90: Isn’t it worth pursuing to be able to cover anything that happens prior to page output, which is a lot?
    • @johnbillion: It could well be, but would be good to see real world examples of what would be good to measure. Output buffering may not be the worst idea if the API is restricted to the plugin; definitely worth investigating.
    • @flixos90 will think about examples

Open floor

  • @aristath: Started porting SQLite as a module: https://github.com/WordPress/performance/pull/547; will discuss further next week
  • @josklever: https://core.trac.wordpress.org/ticket/55344 is related to the performance of the WP dashboard. Resources are loaded for dashboard widgets that are disabled via Screen Options, which can cause unwanted delays or issues for other widgets if there are conflicts.

Our next chat will be held on Tuesday, October 11, 2022 at 11am EDT in the #core-performance channel in Slack.

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

#meta

Performance team meeting summary 27 September 2022

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

Announcements

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/.
  • No updates

Feedback requested

Measurement

N/A

GitHub project

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

  • @aristath: No movement on the JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. front recently, so focusing on general performance improvements instead, including #56636#56637#56654 and just a few minutes ago #56666. The process I’ve been following is to basically run vanilla WP using Xdebug-profiling, examine the results using webgrind and try to reduce the amount of function calls – as well as their cost. Generally small tweaks, with relatively big benefits. Last week #55005 was also merged in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., so overall I believe WP 6.1 contains a lot of nice and impactful performance changes – as highlighted by all the updates from other folks above.

Feedback requested

Infrastructure

@flixos90

GitHub project

Feedback requested

Discussion: SQLite support

@spacedmonkey and @aristath

  • @spacedmonkey: Think this is a great idea and could be useful in core for running unit tests and for other projects like wordpress-wasm. Wonder if the performance team should help take on this problem, even if it is to review the solution and ensure that there’s no 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..
  • @aristath: Understand that testing could be difficult, so currently converting it to work as a 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 in this repository. Trying to convert to something that would make sense for core and then publish in the .org repo as a featured plugin. Hoping if this is in the form of the plugin, more people will test and provide feedback. Also noting that the initial proposal focused on small-to-medium sites, but there’s great potential for growth in other areas as well where large sites can take advantage of SQLite.
    • @spacedmonkey: I’ve forked hyperdb and run very large multisites, can provide context here
    • @aristath: We’ll need lots of context once we get rolling – the prospect of pairing SQLite and hyperdb is very exciting

Our next chat will be held on Tuesday, October 4, 2022 at 11am EDT in the #core-performance channel in Slack.

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

#meta

Performance team meeting summary 20 September 2022

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

Announcements

Focus group updates

Images

@adamsilverstein @mikeschroder

GitHub project

  • @adamsilverstein: WebP feature was reverted following Matt’s post. Still trying to determine what a canonical 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 is and if it would work for WebP by default. Still have some fixes to land for 6.1 around image quality when WebPs are output via Performance Lab plugin.
  • @spacedmonkey: Next steps for Dominant color feature
    • We’ve run out of time to merge before 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. 1 cutoff
    • Feedback process was a lot slower than we thought it would be
    • Should continue to work on this and try to get it in for 6.2
    • @pbearne: Version with theme flag could be merged
    • @spacedmonkey: Merging now doesn’t feel great as there are still unanswered questions. Code is ready, but not sure what feedback will push this across the line. May need to push early in 6.2 cycle and see what happens.
    • @flixos90: Feels like another merge proposal post with a concrete timeline on a merge date could be good to put out right after 6.1, so people can provide any additional feedback. Should also note the new theme support flag approach.

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/.
  • @mxbclang: #56040 and #56041 (two Site Health checks from Performance Lab) have been merged for 6.1 and dev notes are in progress
  • @mukesh27: PR #543 for adding can-load.php to these Health Checks is ready for review

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
  • @mxbclang: Reminder about the performance testing environment work started back in March: https://make.wordpress.org/core/2022/03/22/performance-team-meeting-summary-22-march-2022/. This has stalled out since then; if anyone is interested in picking it back up, let us know.
  • @flixos90: Working on a proposal to integrate the Server Timing API into Performance Lab. We have a lack of awareness for how WP is performing server-side and this simple piece of infrastructure would allow us to measure specific features/modules of the plugin to see who they are affecting PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher performance. Should an open an issue this week or next.
  • @mehulkaklotar: Continuing to work on a proposal for the plugin performance checker tool

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

  • N/A

Feedback requested

Infrastructure

@flixos90

GitHub project

Feedback requested

Discussion: Module proposal: Optimized autoloaded options

@markjaquith

  • Options are autoloaded by default, and most options stay autoloaded even after the plugin or theme that uses them has been deactivated
  • This autoloading has a cost in terms of the performance of the query that loads autoloaded options, and also because the values of these options are kept in memory
  • Discussed a lot of ways of addressing this at WordCampWordCamp WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what they’ve learned throughout the year and share the joy. Learn more. US, and the most promising path that would have the most benefit for the most users (and fits in with this group’s philosophy on focusing on automated fixes instead of introducing new APIs) is to dynamically move options in and out of the “autoload” pool based on usage
  • Options that are used *and* are not past a certain size cutoff should be autoloaded, but large options and options that are not used, should not be autoloaded
  • Proof of concept is linked in the ticketticket Created for both bug reports and feature development on the bug tracker. and we’re looking for additional feedback
  • @pbearne already brought up the issue of options that are queried BEFORE a module could start “listening” for them to be called, but there are undoubtedly other gotchas and opportunities here
  • Especially useful would be help in developing a strategy for measuring the performance of this fix for various sizes of autoloaded options
    • @flixos90: Could leverage the Server Timing 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. (noted above) to measure the time the autoloaded options query takes, for example
  • @pbearne: Think that both @markjaquith‘s and my fixes can be used as they work best for different configurations
  • @spacedmonkey: Could we start adding a limit to the number of autoloaded options, say 250 rows? Or is the issue size in terms of memory?
    • @pbearne: If we can load just what we need, the SQL time is less
    • @markjaquith: We do this to avoid hundreds of individual queries
  • @rickjames: Is “autoloading” the thing that PHP can do for include files? I thought it was so slow as to be better to always include everything
    • @markjaquith: No, this is about quering the wp_options table for autoload = 'yes'
  • @rickjames: That gets to the lack of adequate indexes for the wp_options table; a simple change can speed up SELECTs
    • @markjaquith: There’s already an index, it’s more about the volume of data being transferred
  • @eugenemanuilov: Think we should move from defining which option is autoload-able in the database table to the option registration in WP, so a plugin/theme owner will need to register an option similarly to how settings are registered with register_setting and define whether an option is autoload-able there
  • @flixos90: Both proposals at a high level have the idea of querying what is needed, but the newer proposal does it globally while still keeping a single place of storage while the latter was aimed at having different “options lists” per template/page. The latter would be great, but it comes with heavy storage implications, so the newer proposal is probably the best place to start since it has no additional storage implications.
  • @markjaquith: Do think that the issue is data, not rows – evicting autoloaded options could help wtih both
  • @rmccue: Have run into performance problems with pulling autoloaded options from object cache, so agreed that this is an issue
  • @markjaquith: Also issue with memcache’s default config being size-limited
  • @spacedmonkey: Could we use register_settings to define if an option should be autoloaded?
  • @rmccue: CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. problem is that autoload is true by default, which is what causes issues
  • @markjaquith: Two approaches – @pbearne optimized for “literally just what this page needs”; my POC was for “never autoload things that aren’t used”
  • @spacedmonkey: So will we store an array of used options in options table?
    • @markjaquith: Current implementation only stores timestamp of last calibration, but with some additional storage we could minimize dynamic re-adding of autoloaded options
  • @rmccue: Autoloading options should minimize DB/cache calls, but not necessarily replace them. The heuristic of what should be autoloaded is key to this proposal.
    • @markjaquith: To me, it’s “things that are used and aren’t unreasonably large.” Can also honor autoload='no' while not honoring autoload='yes' as chosen by developers.
  • @spacedmonkey: Don’t love the idea of storing an array of keys. How do you generate the array? What is the average page load?
  • @rmccue: To move forward, we need a concrete proposal for how the heuristic works. Will look into the networknetwork (versus site, blog) saturation problems we’ve run into get an idea of what “unreasonable” might lok like.
  • Next steps: @markjaquith will work on detailing the heuristic further in #526 and when it’s ready, we’ll schedule another discussion for a future chat

Our next chat will be held on Tuesday, September 27, 2022 at 11am EDT in the #core-performance channel in Slack.

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

#meta

Performance team meeting summary 16 August 2022

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

Announcements

Focus group updates

Images

@adamsilverstein @mikeschroder

GitHub project

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

  • @tillkruess: Focused on getting the Object Cache Site Health test merged into core in https://github.com/WordPress/wordpress-develop/pull/2890 with @furi3r; core developer feedback appreciated

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/.
  • See above re: Object Cache Site Health check

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
  • @mxbclang: Reminder about the performance testing environment work started back in March: https://make.wordpress.org/core/2022/03/22/performance-team-meeting-summary-22-march-2022/. This has stalled out since then; if anyone is interested in picking it back up, let us know.

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

  • @adamsilverstein: For the preload resources work, proposed a new, more declarative way to specify preloads in https://github.com/WordPress/wordpress-develop/pull/3089; appreciate any feedback.

Feedback requested

Infrastructure

@flixos90

GitHub project

  • N/A

Feedback requested

Open Floor

  • @olliejones: There’s a Site Health and Troubleshooting plugin, and similar but not identical functionality in core. Is there any plan to incorporate that 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 into core? Or do Performance Lab modules need to target both environments?
    • @mxbclang: Someone manages that plugin, but not sure who; might be worth asking in the #meta channel

Our next chat will be held on Tuesday, August 23, 2022 at 11am EDT in the #core-performance channel in Slack.

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

Performance team meeting summary 9 August 2022

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

Announcements

  • @mxbclang: Team Rep elections
    • We’ll follow the process previously used by the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. team, outlined here
    • Bethany will add a nominations post to https://make.wordpress.org/performance/ this week

Focus group updates

Images

@adamsilverstein @mikeschroder

GitHub project

  • @adamsilverstein: Working to complete several follow-up patches for WebP support. A couple of small fixes were committed last week, and the remaining patches are on track to land in the next week. The Pull Requests section at the top of https://core.trac.wordpress.org/ticket/55443 is a good way to check progress, since follow-up patches are boing worked on in PRs linked to this ticketticket Created for both bug reports and feature development on the bug tracker..
  • @mukeshpanchal27: Working on:
    • 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. follow-up – WebP compatibility: add fallback for non-supporting browsers to core – PR #3034 ready for review
    • Enhance JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. replacement mechanism for WebP to JPEG to more reliably replace full file name – Merged in 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
  • @erikyo: Noting that WebP conversion feature currently only works for JPGs, but in the future hope to also use PNG with Performance Lab and maybe a way to 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. the input format is needed
  • @adamsilverstein: If you used the mapping to create WebP from PNG uploads, the replacement code won’t work. We should be able to address, though our initial implementation is focused on JPEG > WebP. @erikyo will comment on the linked PR for further discussion.
  • @mehulkaklotar: Working on core patches for WebP uploads, ready for review: https://github.com/WordPress/wordpress-develop/pull/3030 and https://github.com/WordPress/wordpress-develop/pull/3048. Also working on https://core.trac.wordpress.org/ticket/45471 to allow caching of parse_blocks results.
  • @joegrainger: Working on plans for regenerate existing images module
  • @mxbclang: Should have a core feature proposal up for this in the next week

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

  • @spacedmonkey out through 5 September
  • @tillkruess: Merged two PRs last week: https://github.com/wordPress/wordpress-develop/pull/2967 and https://github.com/WordPress/wordpress-develop/pull/2969
  • @pbearne: Not sure where the dominant color proposal is going, do we have the support to get it into core? Want to make sure it’s moving along
    • @flixos90 to review PRs this week, but welcome others too, as well: https://github.com/WordPress/wordpress-develop/pull/2907 https://github.com/WordPress/wordpress-develop/pull/2906
  • @itmapl: Interested in resolving https://core.trac.wordpress.org/ticket/32052; PR is here: https://github.com/WordPress/WordPress/pull/610. Open to comments on the solution so we can move forward.

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/.
  • @mxbclang: Discussion in #326 Update Settings language for health checks. #423 about naming conventions; @olliejones will update the PR
  • @furi3r: Working on porting Site Health modules to core and there’s some new feedback in https://github.com/WordPress/wordpress-develop/pull/2890 and https://github.com/WordPress/wordpress-develop/pull/2894 which is raising some concerns:
    • Asking to move Object Cache Check to Async test. Should we do this on the plugin level first and then move it to core, or directly there?
      • @mxbclang: Thinking we should update in the plugin first, then port to the core PR once it’s merged; @flixos90 agrees
    • Use of custom filters, instead of using site_status_test_result filter.=
    • Asking to remove the color scheme we have used for alerts (green, yellow, green), and instead use same one for label (performance uses blue)
    • @adamsilverstein: Looks like valuable feedback on the PRs, suggest keep working there with @clorith and others to find a good solution
  • @olliejones: Still looking at the SQL database health checks. Pretty sure we can check for misconfigured/slow/ancient 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, but none of this is actionable by a site owner. Do we want to proceed with health checks that aren’t actionable by “typical” users?
    • @mxbclang: Based on our discussion last week, seems like no – we want to focus on health checks that are actionable by typical (i.e. not developers, not ops people) users
  • @olliejones: Is there any way to move forward with MySQL optimization work in a way that can make it to core eventually?
    • Have a bunch of SQL server tests that say “ask your hosting provider to…” – should we abandon those?
      • @mxbclang: Those are okay because they provide an action that anyone can take, asking their hosting provider@flashusb agrees
      @zero4281: Does the Health Check module have hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same. to add in additional more advanced health checks? If it did, Ollie could add those checks to his custom plugin
      • @flashusb: Yes, there is a hook to add custom checks, not a separate tab though
      @furi3r: Agree we should expand Site Health use to more technical users, maybe a new tab? If we want to achieve bigger results, we shouldn’t limit ourselves
      • @ankitgade: Could be a separate tab, something like “Advanced Site Health Check”
      @olliejones: Would be great to find a way to address these MySQL optimization issues, maybe the Woo team should address it?
    • @johnbillion: Did you move the MySQL optimization work to your plugin?
      • @olliejones: Yes, been in the plugin for over a year now. Can add custom health checks just like Yoast did.
      • @johnbillion: Think the best approach is to continue work in the plugin, including the health checks, and propose any changes that need to be made in core to facilitate them
      • @olliejones: There are possible core changes but they’re very difficult to pull off because many users are still stuck on MySQL 5.5
      • @johnbillion: Happy to review the plugin and help create performance benchmarks for the changes

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
  • @mxbclang: Reminder about the performance testing environment work started back in March: https://make.wordpress.org/core/2022/03/22/performance-team-meeting-summary-22-march-2022/. This has stalled out since then; if anyone is interested in picking it back up, let us know.

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

  • @adamsilverstein: Resource preloading landed in https://core.trac.wordpress.org/ticket/42438. Some follow-up work for this work includes considering a more declarative 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. (currently it is implemented as a filter) and first party usage, e.g. applying preload to core resources in both wp-adminadmin (and super admin) and (core) themes

Feedback requested

Infrastructure

@flixos90

GitHub project

  • @flixos90: Notable PR is https://github.com/WordPress/performance/pull/458, which enhances plugin uninstall to better support multisite. Next Performance Lab 1.4.0 will be released on Monday; please finalize any PRs by tomorrow.

Feedback requested

Open Floor

  • @mxbclang: I’ll be offline on medical leave August 22 through September 9; please ping @flixos90 or @mukesh27 during that time if you need help with anything
  • @alaca: SVG uploads
    • @alaca: Would like to discuss possible approaches. The idea to allow only static XML files for now is great, but I think we can do more – which depends on the approach we want to take when detecting the dynamic file. Two possible approaches:
      • 1) We have a list of keywords that shouldn’t be in the document, we can just check that, and prevent document upload if we find something inside the document
      • 2) Parse the document to see what’s in there, but then we have an opportunity to do more, such as sanitization.
    • @alaca: Each one of the third party solutions out there is using the same library for SVG sanitization; it’s great and battle tested. Want to use the same approach and simplify the implementation a bit with one simple class.
    • @olliejones: Are there exploit vulnerabilities stemming from parsing XML?
    • @masteradhoc: Want to be able to upload any SVGs that I have and have WP sanitize them for me if there’s an issue
    • @erikyo: I use a completely different approach in https://github.com/erikyo/OH-MY-SVG; they aren’t stored in the Media Library, but there are advantages like being able to edit them
    • @masteradhoc: Think not having them in the Media Library would be confusing
    • @erikyo: If they’re stored in the Media Library they can be processed by ImageMagick

Our next chat will be held on Tuesday, August 16, 2022 at 11am EDT in the #core-performance channel in Slack.

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