Performance Chat Agenda: 18 October 2022

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


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

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

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 Chat Agenda: 11 October 2022

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


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

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

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 Chat Agenda: 4 October 2022

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


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

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

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 Chat Agenda: 27 September 2022

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


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

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

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 Chat Agenda: 20 September 2022

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


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

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

Performance team meeting summary 13 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: In the last week the image team finished addressing the WebP feedback and switching back to the original single mime output approach. We also started work on controlling output per size and adding support to add_image_size.
  • @adamsilverstein: Yesterday during contributor dayContributor Day Contributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of https://make.wordpress.org/ There are many teams that people can participate in, each with a different focus. https://2017.us.wordcamp.org/contributor-day/ https://make.wordpress.org/support/handbook/getting-started/getting-started-at-a-contributor-day/. at WCUS, Matt posted on (not shipping) WebP in 6.1 which was a surprise to the team. We are currently working with the release leads to better understand his concerns and develop a path forward. I want to acknowledge this is a blow for everyone who worked on the feature (myself included) and at the same time I’d like to encourage us to focus on how we can move forward given the current position. Are there concerns we can address? Does 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 make sense?
    • @spacedmonkey: I think it makes sense to move the webp functionality found in the performance plugin to it’s own plugin. That way it will be easier to get users to test it and get feedback on just this functionality.
    • @flixos90: I think if it remains a “feature project”, it makes sense to remain in the Performance Lab plugin – we don’t know if moving it out of it would get us more testers (especially since the Performance Lab plugin has 10k+ installs which is a lot for a feature pluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins.). If the path of a “canonical plugin” should be pursued, then of course we would need to take it out, but then the nature of the project would also change.
    • @kadamwhite: Speaking from REST experience, the times we flirted with making add-on plugins to test specific routes, they never got the traction the main plugin did.
    • @adamsilverstein: My main concern about a feature like WebP being in a canonical plugin is how users would know they should enable it.
      • @eatingrules: FWIW, millions of users are finding and installing image optimization plugins in the repo. Smush has over 1 million installs. EWWW Image Optimizer has 1+ million. Imagify has 600k. Shortpixel, 300k. WebP Express, 200k. Robin image optimizer, 100k.
    • @kadamwhite: Something I remember coming up when we initially introduced responsive images was server / cdn costs, because certain configuration could cause higher-res versions to be downloaded. Does WebP’s size benefit translate to any hosting benefit?, in terms of money?
      • @adamsilverstein: with the current implementation yes! lower storage requirements since WebPs are smaller, and lower bandwidth requirements as well, though slightly more processor effort to generate
    • @flixos90: I think this discussion is very valuable, however we won’t be able to make any decision here today since we’re still waiting for more information. Hopefully we’ll know more by next week. We definitely need to continue this discussion once we do.
  • @pbearne worked on https://github.com/WordPress/performance/pull/528 to add a fetchpriority module to the Performance Lab plugin; will be a co-owner of the module
  • @wpgurudev has been working through the feedback and comments on background job class for image regeneration: https://github.com/WordPress/performance/pull/507, this is again up for review; next PR for review will be background process runner https://github.com/WordPress/performance/pull/512, this makes use of job instance, so will be reviewed and merged post the above PR merge

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

  • @spacedmonkey got 3 commits into coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. ([54080], [54098], [54099]) and worked on PR #3178
  • @kadamwhite: We’ve been doing some work on sites with very high comment volume around understanding the comment caching in core, because we began to actually see bottlenecks in cache performance with churn from comment cache eviction. Is anybody in this group specifically knowledgable about how WP handles comment caching?

Feedback requested

Site Health

N/A

GitHub project

  • @spacedmonkey: @furi3r has updated draft for new cache Site Health checks dev notedev 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., ready for another 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 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/.
  • @mehulkaklotar is working on proposal for Plugin Check plugin. Right now, we would include minimal checks in the plugin that is included in the wporg-code-analysis and check the error log for any warnings, notices when plugin activated. I would love to hear suggestions about GithubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/ action that we will provide as an action that developers can use into their plugin repo.

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

  • @mukesh27 worked on JavaScript coding standard workflow #515. Please review and share feedback.

Feedback requested

Infrastructure

@flixos90

GitHub project

  • N/A

Feedback requested

Open Floor

  • @spacedmonkey: Next steps for Dominant color feature (continued from last week)
    • @pbearne: Are we all happy to merge the theme flag version?
    • @flixos90: I think there were still some open questions and research to do on the perceived performance improvement
    • @spacedmonkey: What are those questions? It comes down to the fact, we can’t move the performance benefit when it comes to metrics. But the benefit is more about what the users sees. That benefit is not an easy one to prove with numbers. It is more like a feeling of speed.
    • @flixos90: Agreed, it’s certainly more challenging to prove anything regarding perceived performance. I don’t know but there is research on how “good” the LQIP perceived performance benefit is – so at least in theory there is something to unpack there for the dominant color perceived performance benefit as well. Maybe it’s a bit of a stretch to have us to UXUX User experience research around that, which may be the only thing we could do in terms of research. At this point, I’m not opposed to it landing in core, but I’m also not sold on it.
    • @spacedmonkey: I consider dominant color like other 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. data we generate, so why not this? It could be helpful for theme developers.

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

#performance, #performance-chat, #summary