Phase 3 Media Meeting Agenda – February 7, 2024

The Phase 3 Media Meeting is scheduled for Thursday February 8, 2024 at 00:00 UTC in the core-media channel on Make WordPress Slack. This is a follow up to the post announcing this meeting that can be found here. If you have any topics you’d like to add to this agenda, please add them in the comments below.

Meeting agenda:

Below is an outline to drive discussion for the meeting. We will approach these topics broadly and get a sense

  • Quick round of intros.
  • Overview of the objectives for Phase 3 Media
  • Discussion on alignment of CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Media focus to help the process
  • Discuss communication channels and checkpoints to be used for regular updates
  • Media Library
    • At a high level let’s discuss what the future of the Media Library looks like.
    • More global insight into media usage at the attachment level
      • Where is a media being used if at all
      • What alt attributes are being defined for it in its usage
      • Duplicate detection
  • Discuss the BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Editor’s role in editing media.
  • Back-compat relative to existing Media Library, Uploads, and Third party plugins
    • Discuss the transition process from the existing media library to the future media library. What does that look like?
    • What are the intermediary steps between where we are now and a new, fully integrated media library?
    • Will the new media library be available outside of the editor?
  • Update from William Bay on his Media Library experimentation, where Will can share some thoughts on sorting, filtering, and basic functionalities being tested in his experimental media library project.
  • Discuss the feasibility and desirability of using the Block Editor as the primary interface for media attachment editing.
    • Can we in a future state use the Block Editor as the attachment image editor using a Media Attachment Block that gives editing capabilities of the image block but updating the source image or creating new attachments.
  • Review of Phase-3-Triage Tickets
  • Open Floor for Questions and General Discussion
  • Opportunity for attendees to bring up topics not covered on the agenda, share updates, or ask questions.

This meeting happens in the #core-media channel. To join the meeting, you’ll need an account on the Make WordPress Slack. Props @joedolson for helping prepare and proofread this post.

#agenda, #core-media, #meeting

Performance Chat Summary: 25 April 2023

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

Announcements

  • Updated the cadence of bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. scrubs to be every 2 weeks – next one scheduled for April 26, 2023 at 15:00 UTC.
  • @flixos90 Also briefly sharing that I just published a performance retrospective post on WP 6.2 that I had been working on over the past few weeks: https://make.wordpress.org/core/2023/04/25/the-benefits-of-prioritizing-and-measuring-performance-in-wordpress-6-2/ It highlights some of the key aspects which changed in 6.2 in how we dealt with performance and also summarizes high level numbers. It can be seen as somewhat complementing https://make.wordpress.org/core/2023/04/05/wordpress-6-2-performance-improvements-for-all-themes/, at a higher level however without looking as much at specific improvements.
  • Discussion regarding the decoupling of the SQLite 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 from the performance lab work. In reference to this conversation that came up in a previous performance chat. Would love to have an open discussion about peoples preferences here and whether we do decouple this?
    • @olliejones I favor that approach. It will usually be deployedDeploy Launching code from a local development environment to the production web server, so that it's available to visitors. independently of the stuff in PL.
    • @10upsimon I tend to lean more toward an agreement with @rmccue in that SQLite is not necessarily performance improvements focused (or at least that is not the primary goal), and probably belongs outside of the realm of the performance lab work.
    • @spacedmonkey To be clear, I think that performance team should continue to support SQlite getting into coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., to much sure it done in a performant way. But SQlite is not a performance benefit on the face of it, so it is confusing why we part of performance lab plugin.
    • @rmccue Yeah, that was basically my thought; I think it’s beneficial all-round to separate it out (but with performance still consulting as @spacedmonkey says)
    • @olliejones yes, having SQLite headed for core is good. I believe the issue is about monorepo and multifunction plugins on the one hand and a separate repo and plugin on the other.
    • @aristath I agree with what was mentioned above 100%. SQLite can be related to performance, but is not in itself a “performance” module/plugin. It should be developed in collaboration with the performance team since it can have a big impact, but I’d vote to decouple it from the performance-lab plugin
    • @olliejones Maybe in a parallel universe or another year, there can be a separate database team. But for now the perf. team has the talent.
    • @spacedmonkey If you want to setup a meeting for a database team, that could work. Many component meetings have less than 5 people.
    • @flixos90 To clarify, this conversation is slightly different and mostly unrelated to the “unbundling Performance Lab plugin” effort. While we are publishing other PL modules as standalone plugins, those standalone plugins will still be directly associated with the performance team, developed in the monorepo, referenced from the PL main plugin etc. Removing / decoupling SQLite from PL would be different: We would still support getting the plugin towards WP core of course, but it wouldn’t be in any way connected to PL anymore. Maybe that was clear, but just in case.
    • Next steps clarification:
      • @aristath I think the only thing to do here would be to remove the module from PL, and add a notice so in case the user previously had the module activated, they’ll be prompted to install the standalone plugin
      • @joemcgill I assume we’ll remove the module from the performance lab plugin in the same release where we remove other modules. How we handle the transition so as to not break any active sites, is not clear to me at the moment.
      • @olliejones Do we have any usage telemetry to help guide that decision?
      • @flixos90 Potentially. As mentioned, I think this conversation is decoupled from the general PL unbundling effort, so we could do it at the same time, but also sooner. I would love to find a way to make the transition smooth though. For sites that already have the SQLite module active, we should probably recommend activating the SQLite plugin before deactivating the feature.
      • @aristath That’s a good idea…
      • @flixos90 Has anyone tried yet to activate the SQLite standalone plugin on a site where the PL SQLite module is already active? We need to make sure it doesn’t throw fatal errors
        • @aristath Adding it on my TODO list for tomorrow, though from what I recall I tried it last month and I there were no issues. I’ll need to test that again just to be sure, it’s been a long time
      • @10upsimon I feel strongly about not intentionally breaking users sites, however few are using it. Perhaps we need to defer the removal to 2 versions from now, and raise a notice or similar in the adminadmin (and super admin) making it very clear that from version n it will no longer be supported as a core PL module.
        • @flixos90 agreed @10upsimon adding though that for a smooth transition the plugin should be activated before deactivating the PL module, so we have to make sure that that is actually possible
      • @joemcgill A similar transition plan will be good for all of the modules, to be honest, even though SQLite is the most critical due to potential breakage.
      • @flixos90 @joemcgill I think for the other modules we’ll handle that in a central effort as part of unbundling, but with SQLite it will now be bit different, since that plugin will not be referenced directly from PL in the future. But I agree it’s most critical there to have a smooth transition since switching back to a 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 database accidentally will break any site that actually relies on SQLite right now

Priority Projects

Server Response Time

Link to roadmap projects

Contributors: @joemcgill @spacedmonkey @aristath

  • @spacedmonkey I landed lazy loading term 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.
    https://github.com/WordPress/wordpress-develop/commit/2c6bf77a9e7532c6ac3a03502b44d108cae86179
    • I hope to get comment meta in the next week.
      https://github.com/WordPress/wordpress-develop/pull/4128 – Code review welcome
    • Related to term meta, https://github.com/WordPress/wordpress-develop/pull/4259 also need code review
    • This saves around 15k calls to sanitise term function per page load
    • TLDR, there was no need to call get_term , we already had the term id, so just remove that
    • I also reviewed this – https://github.com/WordPress/wordpress-develop/pull/4097 (amazing work @oandregal)
    • @joemcgill This is a huge one that I had noticed in my profiling research, so nice to see this already addressed!
    • @10upsimon Call me cheesy, but 15% server time alone across many WP hosts is a positive contribution to the environment alone
    • @mukesh27 With all this improvement, 6.3 is faster than 6.2
      • @flixos90 Yeah, this alone will make blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. theme performance in 6.3 almost as much faster as it got faster in 6.2
    • @flixos90 Certainly the highest performance improvement in a single PR that I’ve seen so far
    • @joemcgill Worth noting that the 15% improvement on that PR is compared against WP 6.1.1, not the commit prior to that one, so it would be interesting to A/B against the commit prior (if I’m reading the workflow correctly)
      • @flixos90 No, the 15% is against today’s trunk. The original metrics on the PR are incorrect, but then I measured it against trunk and that’s where the 15% come from

Database Optimization

Link to roadmap projects

Contributors: @aristath @spacedmonkey @olliejones @rjasdfiii

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/. & CSSCSS Cascading Style Sheets.

Link to roadmap project

Contributors: @mukesh27 @10upsimon @adamsilverstein

  • @10upsimon Regarding “Enhancing the WP Scripts 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. with a Loading Strategy”:
    • We’ve had a good amount of feedback and iteration on our draft PR
    • We’ve had some valuable feedback come in this week, so we’ll be addressing that with the goal of opening a PR against core later this week. Thanks @joemcgill @adamsilverstein and @westonruter for the invaluable feedback thus far (and to @spacedmonkey)
    • We’ve established a mostly approved documentation plan/roadmap, with slight ongoing tweaks thereto. Draft documentation and documentation updates can commence soon
  • @flixos90 One more thing regarding JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. & CSS, last week I opened https://github.com/WordPress/gutenberg/issues/49927 to optimize how block CSS is loaded in classic themes (it’s great in block themes, but not so much for classic themes, and we can probably improve that). There have been some great conversations on that. @aristath has pointed out a detailed code example with how we could improve this by printing inline styles per block type right before the first block of each type is rendered

Images

Link to roadmap projects

Contributors: @flixos90 @thekt12 @adamsilverstein @joemcgill

  • No updates this week

Measurement

Link to roadmap projects

Contributors: @adamsilverstein @olliejones @joemcgill @mukesh27

  • @joemcgill I’ve been working to prioritize a set of “next steps” for automated performance testing. For me, the “next step” is to turn these tasks into tracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets that we can address as capacity allows.
    • One of the big ones is to improve the stability of the results and make them more atomic, so we can use them to evaluate specific PRs (like the discussion we had earlier about the get_block_templates PR)

Ecosystem Tools

Link to roadmap projects

Contributors: @joegrainger

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27 @10upsimon

  • @flixos90 We’re still waiting to get the Fetchpriority standalone plugin approved, beyond that and then the same for Dominant Color, we have basically completed the work for “Milestone 1” in https://github.com/WordPress/performance/issues/656
  • @flixos90 Separately, we need to explore what we want the user experience for “Milestone 2” to look like, both in terms of the regular UIUI User interface of the PL plugin going forward (in which it controls certain plugins as well as the Site Health modules), and for a smooth migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. from the modules to remove to their standalone plugins

New Projects / Proposals

  • @spacedmonkey I would love feedback on – https://github.com/WordPress/performance/issues/718 a new module proposal for adding object caching information to site health
    • I want to make it easier for users to understand what kind of object cache they are using and what features it supports.
    • Specially if your object cache drop in supports multiple gets. I got a lot of questions after this article was published.

Open Floor

  • No updates

Our next chat will be held on Tuesday, May 2, 2023 at 15:00 UTC in the #core-performance channel in Slack.

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

Performance Chat Summary: 18 April 2023

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

Announcements

  • 2.2.0 was released yesterday
  • UPDATED from agenda: fetchpriority standalone 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 still under review (not ‘approved’ as originally thought)

Priority Projects

Server Response Time

Link to roadmap projects

Contributors: @joemcgill @spacedmonkey @aristath

  • @joemcgill Happy to say that I’m back from some time off with two fully working arms, and am hopeful I’ll be able to publish some results from the profiling research I was doing earlier.
  • @spacedmonkey I have been reviewing @aristath autoloading PR. It is nearly there.
  • @flixos90 What about the performance implications of autoloading? I believe that was still an open question in regards to whether we should move forward with this
    • @spacedmonkey Autoloading massively improve RAM usage. CPU, it is a little benefit at the moment.
    • @flixos90 Obviously autoloading is a best practice, but I think we still need to assess what really are the benefits of it in WordPress coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Are there any benchmarks for those statements yet?
    • @johnbillion There were some numbers on the PR but they could do with being updated
    • @spacedmonkey https://github.com/WordPress/wordpress-develop/pull/3470#issuecomment-1490083546
    • @flixos90 That’s a single profile though, right? There is so much variance in load time data, I think we need to do something a bit more comprehensive for the timing metrics. The 5.5 MB -> 5.15 MB looks promising though
    • @spacedmonkey I haven’t done a tonne of benchmarking yet, it is a WIP.
    • @flixos90 That’s fair, though I think we should do that sooner than later to be confident that this is actually a beneficial change for WordPress core. Also best to use medians from all the results
    • @spacedmonkey What is the KPI here? CPU usage, response time, ram usage?
    • @joemcgill Has there already been a merge proposal created for this change? Seems like something that would need broader communication and would be an opportunity to include performance data alongside the technical details?
    • @johnbillion Would be good to see separate metrics for front end, wp-adminadmin (and super admin), REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think “phone app” or “website”) can communicate with the data store (think “database” or “file system”) https://developer.wordpress.org/rest-api/., too, hopefully improvements all around
    • @spacedmonkey I am happy to run all those tests and provide data. As I say, it is WIP at the moment. I will wait until @aristath gets back to me and says it is good for a full review

Database Optimization

Link to roadmap projects

Contributors: @aristath @spacedmonkey @olliejones @rjasdfiii

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/. & CSSCSS Cascading Style Sheets.

Link to roadmap project

Contributors: @mukesh27 @10upsimon @adamsilverstein

  • @10upsimon Regarding “Enhancing the WP Scripts 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. with a Loading Strategy”:
    • Iteration is underway following the code review completed by several WPP team members
    • This is now ready for another round of review here

Images

Link to roadmap projects

Contributors: @flixos90 @thekt12 @adamsilverstein @joemcgill

  • No updates this week

Measurement

Link to roadmap projects

Contributors: @adamsilverstein @olliejones @joemcgill @mukesh27

  • @joemcgill I’m starting to collect some ideas for enhancements to the initial automated performance workflow we added last release and would be happy for any suggestions folks here have.

Ecosystem Tools

Link to roadmap projects

Contributors: @joegrainger

  • @joegrainger for the Plugin Checker, we’re working through the issues raised as part of the milestone 1 Review/QA and making good progress. We’ll continue to be working through these as over the coming weeks. Progress can be seen on the GitHub repo here. Feel free to take a look and leave any thoughts/ideas you may have there. Thanks!

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27 @10upsimon

  • @mukesh27 I continue working on some follow-up issues and milestone 2 tasks
  • @flixos90 At this point for milestone 1 we’re just waiting for plugin repo approval, then we can go ahead and publish the outstanding plugins Fetchpriority and Dominant Color Images
  • @flixos90 We may also want to start coordinating how we’re going to re-integrate the SQLite repository into the monorepo, cc @aristath
    • For the latter, we would be good to publish from the WordPress/performance repository any time now since the main effort has been completed
    • @joemcgill Seems like that should be handled before we release a version of the performance lab plugin that removes the related module
    • @flixos90 Absolutely, that would only be part of Milestone 2
    • @flixos90 asked @aristath Do you have an update on https://github.com/WordPress/performance/pull/677? Is that ready for another review?
    • @flixos90 I wonder what is left beyond the above PR in order to sync the two codebases. At some point soon we should probably code-freeze the standalone 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/ repository and make WordPress/performance the source of truth again, that way we’ll work in one codebase only, and we can publish from there a new version to WP.org any time

New Projects / Proposals

  • @spacedmonkey I am looking into the autoloaded options in WordPress. I am just getting up to speed.
    • Wonder if anyone here, as any thoughts on the matter. Articles, plugins or other work arounds I should look at as part of my research
    • One route I am looking into, is stop using the single autoload cache key and make it so each option using it’s own cache key. We can now use wp_cache_get_multiple to prime all autoloaded caches in one go.
    • @joemcgill Have we done any research into how many WordPress sites are able to make use of the benefits that get/set_multiple functions provide?
    • @spacedmonkey I have been looking at differnt object caching plugins
    • Sadly, many of them do not seem to implement wp_cache_get_multiple
    • But many of these are the list have not been updated in 5+ years, it is hard to know if they are still being used. I made a mega list – https://github.com/stars/spacedmonkey/lists/object-caching-plugins
    • @joemcgill Nice. I think it would be good for us to keep track of those numbers. Not that this should keep us from trying to optimize the caching of options, but it would help us better understand impact and ensure that any changes we make to support multi-cached options don’t create a 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. for folks whose hosting doesn’t support those features.
    • @spacedmonkey memcache and redis support multiple gets, it is just a matter of updating plugins to support it as well. We have wp_cache_supports in core. I wonder if we could get any data from that. We have some sites on WordPress sites php etc.

Open Floor

  • No updates

Our next chat will be held on Tuesday, April 25, 2023 at 15:00 UTC in the #core-performance channel in Slack.

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

Performance Chat Summary: 11 April 2023

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

Announcements

  • 2.2.0 release date will be Mon April 17

Priority Projects

Server Response Time

Link to roadmap projects

Contributors: @joemcgill @spacedmonkey @aristath

  • No updates this week

Database Optimization

Link to roadmap projects

Contributors: @aristath @spacedmonkey @olliejones @rjasdfiii

  • No updates this week

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/. & CSSCSS Cascading Style Sheets.

Link to roadmap project

Contributors: @mukesh27 @10upsimon @adamsilverstein

  • @10upsimon Regarding “Enhancing the WP Scripts 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. with a Loading Strategy”:
    • Holistic code review has been completed by several WPP team members
    • Feedback has been provided within the draft PR and feedback is being transformed into 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/ issues
    • Some of these issues have work already underway against them
    • Consensus is a positive attitude all around toward the end result overall
    • Functional testing has been complete, but is being extended slightly so that testing is done alongside some key performance plugins. This is mostly to aid documentation (planning) efforts and validate earlier findings
    • Documentation plans are underway and being drafted, which include inline and coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. documentation (as well as core community comms)

Images

Link to roadmap projects

Contributors: @flixos90 @thekt12 @adamsilverstein @joemcgill

  • No updates this week but @adamsilverstein will be watching data on how our recent core 6.2 lazy loading improvements work and report back here once there is data available

Measurement

Link to roadmap projects

Contributors: @adamsilverstein @olliejones @joemcgill @mukesh27

  • @mukesh27 There are no major updates this week, but myself and @joemcgill started brainstorming on the next step for Automated Performance Tests. I will share more updates in the coming week.

Ecosystem Tools

Link to roadmap projects

Contributors: @joegrainger

  • @joegrainger We have completed Architectural Review and QA for the initial infrastructure of 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. We’ve created a number of issues to tackle the improvements and bugs that came out of the testing which we will be working through over the next couple of weeks. Progress can be seen on the GitHub repo here. Feel free to take a look and leave any thoughts/ideas you may have in the repo. Thanks!

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27 @10upsimon

New Projects / Proposals

  • No updates

Open Floor

  • No updates

Our next chat will be held on Tuesday, April 18, 2023 at 15:00 UTC in the #core-performance channel in Slack.

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

Performance Chat Summary: 4 April 2023

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

Announcements

  • 2.2.0 release date will be Mon April 17

Priority Projects

Server Response Time

Link to roadmap projects

Contributors: @joemcgill @spacedmonkey @aristath

  • @aristath shared an update ahead of time:
    • Autoloader: Work continues on https://github.com/WordPress/wordpress-develop/pull/3470 to add a PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher autoloader in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. The results so far are encouraging and all tests (both manual and automated) has shown that performance is better and there are no apparent drawbacks. There are still a few minor things to polish, but it’s looking good so far.
    • L10nL10n Localization, or the act of translating code into one's own language. Also see internationalization. Often written with an uppercase L so it is not confused with the capital letter i or the numeral 1. WordPress has a capable and dynamic group of polyglots who take WordPress to more than 70 different locales.: Experimenting with different approaches and methods to refactor the way localization works in WP, in collaboration with @sergeybiryukov, @afercia and @poena. Still in the early stages of exploration, trying to find ways and methods to make the process more performant.
  • @joemcgill One thing that I wanted to bring up, was this post by @swisspidy about the new translations functionality he’s been working on. He has specifically asked for some performance help in that post, and I think it’s something that our team should take a look at. In the server timing research that I have been doing, I have found that processing translations can be a performance bottleneck for classic themes, specifically, so it would be nice if we could both help with this effort and improve performance overall for translated sites.

Database Optimization

Link to roadmap projects

Contributors: @aristath @spacedmonkey @olliejones @rjasdfiii

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/. & CSSCSS Cascading Style Sheets.

Link to roadmap project

Contributors: @mukesh27 @10upsimon @adamsilverstein

  • @10upsimon for Enhancing the Scripts 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. with a loading strategy
    • All work is now contained within our base feature branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch".
    • An holistic code review process is underway, where we’re going over all code contributed as part of this work and reviewing it in a single PR against trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision.
    • Functional testing to follow on from the code review completion
    • Inline documentation review will follow from that

Images

Link to roadmap projects

Contributors: @flixos90 @thekt12 @adamsilverstein @joemcgill

  • @flixos90 No major updates from my side, still working on assessing the best path forward for enhancing the lazy-loading logic in core, which will also benefit fetchpriority. I feel I’m close to opening TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets, but also noting that I’ll be AFK next week, so it’ll probably only in ~2 weeks from now

Measurement

Link to roadmap projects

Contributors: @adamsilverstein @olliejones @joemcgill @mukesh27

  • @mukesh27 No major updates, @joemcgill I and started brainstorm on next step for Automated Performance Tests

Ecosystem Tools

Link to roadmap projects

Contributors: @joegrainger

  • @joegrainger We have completed the initial infrastructure for 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 and have moved onto testing! This week we have started reviewing the infrastructure holistically and begun QA testing. Once testing is complete we will start work improving upon the initial architecture and moving towards building out the additional checks. Progress can be seen on the GitHub here. As always, feel free to take a look and leave any thoughts/ideas you may have in the repo. Thanks!

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27 @10upsimon

  • @mukesh27 We finished engineering for Milestone 1 tasks and all PRs in final review. If anyone has some capacity please review. We are plaining to release our first WebP Uploads plugin soon.
  • @flixos90 +1, if we can get those final PRs merged tomorrow, the idea would be to publish the WebP Uploads standalone plugin on Thursday with the new automated workflow (which deploys the plugin based on the same codebase that the module uses)
    • Hopefully that all works out. Once the plugin is successfully released, we can proceed with the other ones (Dominant Color, Fetchpriority), and last but not least unify the currently 2 codebases from the SQLite plugin

New Projects / Proposals

  • No updates

Open Floor

  • No updates

Our next chat will be held on Tuesday, April 11, 2023 at 15:00 UTC in the #core-performance channel in Slack.

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

Performance Chat Summary: 28 March 2023

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

Announcements

  • None today

Priority Projects

Server Response Time

Link to roadmap projects

Contributors: @joemcgill @spacedmonkey @aristath

  • @spacedmonkey worked on several tickets:
  • @aristath work continues in the SQLite project – as well as the php autoloader for wp-core
  • @joemcgill I’m just wrapping up an initial round of profiling observations, and plan to have something written up to share soon. Some highlights are that there are lots of places where we could try to reduce the use of file system reads associated with 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. registration and template rendering that we wanna look into. There is also a potential opportunity for some improvements to the way translations are being handled and classic seems that we also want to review.
    • @spacedmonkey already has some fixes in the works for some issues we discovered while comparing notes. I continue to be somewhat hampered by only being able to use one arm, but I’m working through it.
    • @rmccue As an aside, I noticed that the method of merging translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. files in memory is probably suboptimal and we might be able to avoid that. (I’ve been reimplementing pomo in native code, and noticed it there)

Database Optimization

Link to roadmap projects

Contributors: @aristath @spacedmonkey @olliejones @rjasdfiii

  • @olliejones Work continues on SQLite, next is to load woocommerce and beat on it.
    • Future project: identify as many places in core where the SQL is non-portable 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/. specific stuff and work on making it standard. Should that be a TRACTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. ticketticket Created for both bug reports and feature development on the bug tracker.?
    • @joemcgill I definitely think that having trac tickets that describe any improvements you’d like to see made would be useful.

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/. & CSSCSS Cascading Style Sheets.

Link to roadmap projects

Contributors: @mukesh27 @10upsimon @adamsilverstein

  • @10upsimon We are addressing the issue(s) around script concatenation, work is in progress and in the final stages of review, with minor iterations ongoing. Unit tests are being implemented to validate the approach and should be ready for final review today or tomorrow.
    • We are entering into a more holistic/overall code review of work done to date, essentially a code review of all work done thus far as part of the epic. Minor iteration is anticipated as part of this review process and will be executed as required.
    • Work can be seen here
    • Various tests/testing scenarios will be undertaken prior to submitting a final pull request against.

Images

Link to roadmap projects

Contributors: @flixos90 @thekt12 @adamsilverstein @joemcgill

  • @flixos90 I have been continuing on the lazy-loading exploration and am getting close to opening Trac tickets for the individual pieces of work
    • To clarify, this is about avoiding to lazy-load LCP images, or rather in-viewport images in general
  • @flixos90 I have also been thinking a bit about the fetchpriority="high" feature for which we already have a module. One thing that we may need to iterate on there is that it just adds the attribute to whichever first image doesn’t have loading="lazy". This is not terrible, but it’s also probably not the best way to go about it, since the two attributes should not simply be mutually exclusive. The guidance is rather:
    • fetchpriority="high" should be only on the LCP image.
    • loading="lazy" should be omitted on images above the fold (i.e. potentially more images than just the LCP image).
  • @joemcgill I am in the very early stages of looking into ways we can improve the way WordPress calculates the sizes attribute.

Measurement

Link to roadmap projects

Contributors: @adamsilverstein @olliejones @joemcgill @mukesh27

  • No updates

Ecosystem Tools

Link to roadmap projects

Contributors: @joegrainger

  • @joegrainger We have 2 tasks remaining for 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 infrastructure with plans to complete this week. Once done, we will start performing initial testing and review  the infrastructure holistically before working on the additional checks. Progress can be seen on the GitHub repo here. As always, feel free to take a look and leave any thoughts/ideas you may have in the repo. Thanks!

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27 @10upsimon

New Projects / Proposals

  • @spacedmonkey Just flagging, I want to get the core unit tests running against redis. In my research, more hosts are using redis then memcache, so we could test against this and change our thinking of object caching in WP space from memcache to redis https://core.trac.wordpress.org/ticket/58000
    • @olliejones fwiw the SQlite Object Cache plugin has extensive perf. instrumentation built in.

Open Floor

  • @rmccue Re SQLite, I’m moderately concerned about the potential performance impact that introducing another layer of abstraction may introduce there. A traditional reason that WP hasn’t been DB-independent is because of (theoretical) performance gains by tightly coupling the two and taking advantage of that. (Which are assumptions I think do need to be tested.) I realise I’m coming in late to this, but I guess I’m just not seeing how the SQLite work ties into performance specifically. (I see a clear case for the non-performance benefits.)
    • @aristath Well, I admit that the tie between SQLite and performance is a bit weird… but the way I see it, it comes down to this: on a small, lower-end server, the server’s resources are shared between a php server, apacheApache Apache is the most widely used web server software. Developed and maintained by Apache Software Foundation. Apache is an Open Source software available for free., and a MySQL server. By using SQLite, the server can allocate its limited resources to php and therefore achieve better performance.
      It’s better for sustainability mostly, and for performance on smaller sites (that usually are hosted on cheap servers) the performance gains will be there
    • @rmccue I can see how eliminating the latency and translation between two separate servers for PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher and MySQL could help performance, not sure of the overhead if it’s on the same server; that said, it feels like the primary goals of the project are not performance related
    • @olliejones It might ??? be a good idea sometime to spin off a team to do dbms-independence work, the target of which would be support for SQL Server, postgreSQL, SQLite, and, gag, Oracle. Having those would help scale up WordPress sites. postgreSQL especially because it can do wildcard searches with indexes. But that imaginary project’s connection to this team is a bit tenuous, as you mention.
    • Discussions here continued beyond the end of the meeting

Our next chat will be held on Tuesday, April 4, 2023 at 15:00 UTC in the #core-performance channel in Slack.

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

Performance Chat Summary: 21 March 2023

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

Announcements

  • Release 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 2.1.0 yesterday

Priority Projects

Server Response Time

Link to roadmap projects

Contributors: @joemcgill @spacedmonkey @aristath

  • @spacedmonkey I have been working on profiling translations and looking into how we can make them faster
  • @joemcgill working with @spacedmonkey on comparing notes this week on some initial profiling that we’ve done. I’m still struggling a bit to write all of this up in a shareable way, given that I’ve got one arm in a sling, but we should have some good progress to share by next week.
  • @spacedmonkey committed the following issues
  • @spacedmonkey On autoloading, I did some quick profiling on it and a seeing slower performance after the change. Around 5ms on a home page view.
    • @flixos90 Yeah that covers roughly with benchmarks I had done a few months back
    • @spacedmonkey I tested this – https://github.com/WordPress/wordpress-develop/pull/3470 There maybe benefits for other requests types, like REST APIs
    • @flixos90 Autoloading is tricky. There is probably some memory benefit of not loading as much PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher code, but we’ll have to assess the performance impact more. Of course autoloading is a good practice, but we also need a good argument to support getting this into coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. And if it actually slows down server response time, I would say we shouldn’t push it. But more research needs to be done.

Database Optimization

Link to roadmap projects

Contributors: @aristath @spacedmonkey @olliejones @rjasdfiii

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/. & CSSCSS Cascading Style Sheets.

Link to roadmap projects

Contributors: @mukesh27 @10upsimon @adamsilverstein

  • @10upsimon gave his update on Enhancing the Scripts 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. with a loading strategy ahead of time
    • Engineering for the epic as a whole has been completed and is in round 1 of code review and iteration – work can be seen here. We anticipate an iterative feedback and implementation 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. to continue into next week, followed by a full and final code and functional review of all work by EOW next week, thus concluding engineering and being in a state to consider and implement a core merge proposal mid-April.
    • A developer testing plan is currently in review, which aims to support testing efforts of all engineering work carried out. This includes validation of all unit tests introduced as part of said work, and defines functional testing approaches, of which popular WordPress themes and plugins are included as part thereof.
    • An approach for documentation (automated/code reference & community) has been discussed and is soon to be executed. Draft documentation items will be produced for review, with the aim of being released as soon after the core merge as possible.

Images

Link to roadmap projects

Contributors: @flixos90 @thekt12 @adamsilverstein @joemcgill

  • @adamsilverstein I have an update about the image comparison game/study I ran 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. Asia. In the game people compare two images generated by WordPress to the original uploaded image. The image quality setting between the images varies and the format changes as well, so far I’m testing with WebP and JPEG and quality settings from 70 to 90.
  • @adamsilverstein Here is a doc with a summary of the results and a bit of analysis as well as a link to a sheet with the raw data:
    • To summarize the results though:
      • People loved playing the game and also became super engaged about images
      • We didn’t gather enough data to have statistically meaningful results
      • Anecdotally, most people struggled to tell which image was closer to the original
  • @joemcgill I’m starting a high-level review of our approach to calculating the sizes attribute for images in WordPress this week. It’s the first step for me to work on ways we can improve some of the base assumptions that the current approach takes and see if we can improve it now that we have more information and 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.
  • @flixos90 I have been researching the remaining problems with lazy-loaded LCP images, with some good findings. I should have something to share in a week or two. Likely this will be in form of a few new TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets with things we should fix. It’s worth noting that still more than 20% of LCP images today are being lazy-loaded with the loading attribute. This is where WordPress core can help.
    • (Additionally ~10% of LCP images today are lazy-loaded through other custom JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. technologies, so that’s something where plugins and libraries will have to do the work. Maybe something we can help facilitate)

Measurement

Link to roadmap projects

Contributors: @adamsilverstein @olliejones @joemcgill @mukesh27

  • @joemcgill Automated performance timing continues to be collected and was useful while reviewing potential performance regressions during release candidates for 6.2. We are starting to put some thought into what the next improvements should be. If anyone has specific ideas they think should be considered, I’d certainly love input. Will share some ideas in the coming weeks.
  • @adamsilverstein I wanted to link to a Drupal ticketticket Created for both bug reports and feature development on the bug tracker. where their  team is working on adding automated performance testing for Drupal  core: https://www.drupal.org/project/drupal/issues/3346765. The approach they are taking is quite different, with a plan to store performance traces using a tool like Open Telemetry or “jaeger” (new to me) – although they are starting more simply like we have. I feel like it is worth following their effort as we can always learn from each other

Ecosystem Tools

Link to roadmap projects

Contributors: @joegrainger

  • @joegrainger We are working on the final elements on the Plugin Checker infrastructure with plans to complete this by the end of the week. From next week we’ll be performing initial testing and review of the infrastructure before working on the additional checks. Progress as always can be seen on the GitHub repo here. Please feel free to take a look and leave any thoughts/ideas you may have in the repo.

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27 @10upsimon

New Projects / Proposals

  • A polite reminder, our 2023 roadmap is intentionally broad. Despite there being clear workstreams envisioned within the highlighted priorities, the team aims to support contributors with additional related ideas

Open Floor

  • n/a

Our next chat will be held on Tuesday, March 28, 2023 at 16:00 UTC in the #core-performance channel in Slack.

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

Performance Chat Summary: 14 March 2023

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

Announcements

  • As agreed in last weeks chat, this week we are following the new agenda structure below that is more aligned with our 2023 roadmap
  • During each priority project update, we will aim to tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) the individuals who contributed suggestions for that priority project in the 2023 roadmap, to get any updates on progress

Priority Projects

Server Response Time

Link to roadmap projects

Contributors: @joemcgill @spacedmonkey @aristath

Database Optimization

Link to roadmap projects

Contributors: @aristath @spacedmonkey @olliejones @rjasdfiii

  • @olliejones Work on the SQLite database integration continues. Lots of tiny details transliterating one irregular SQL grammar to another. Nothing big to report.

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/. & CSSCSS Cascading Style Sheets.

Link to roadmap projects

Contributors: @mukesh27 @10upsimon @adamsilverstein

  • @10upsimon We’re making progress on some of the final implementation details related to handling inline scripts, and doing some internal testing and research into how other projects are already implementing async/defer to look for possible conflicts. We should have something to share in a couple of weeks. In the meantime, we’d appreciate any examples you have of projects that are manually adding async/defer, so we can check them against our approach.

Images

Link to roadmap projects

Contributors: @flixos90 @thekt12 @adamsilverstein @joemcgill

  • @flixos90 I have been researching remaining problems with lazy-loaded LCP images in WordPress sites in the last week, will continue to do so today. I’m using HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. Archive to identify the most common problems and look at specific sites for samples to dig further
  • @flixos90 Noting that the enhancements that will hopefully come out of this work will benefit the fetchpriority="high" work as well
  • @adamsilverstein quick update from me: 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. Asia a few weeks ago, I ran an “image comparison game” where users picked from two images (generated in WordPress at different compression levels and in WebP or JPEG) trying to tell which one was closer to the original. we had around 50 “choices” registered which isn’t much, but in any case I’m planning to analyze that data this week and should have some sort of results to share next week.

Measurement

Link to roadmap projects

Contributors: @adamsilverstein @olliejones @joemcgill @mukesh27

  • @clarkeemily we did have ‘Automated performance testing has been committed to the WP coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. repo https://core.trac.wordpress.org/changeset/55459‘ highlighted last week
  • @joemcgill We’re successfully getting automated performance data on every commit to core now, which is a cool milestone. I expect that we’ll continue to improve those capabilities over time, but this is a nice starting point.

Ecosystem Tools

Link to roadmap projects

Contributors: @joegrainger

  • @joegrainger We plan to complete the infrastructure for 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 by the end of next week. Once complete we will start to perform some initial testing and review the infrastructure before working on the additional checks. Progress can be seen on the GitHub repo here. Please feel free to take a look and leave any thoughts/ideas you may have in the repo.

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27 @10upsimon

New Projects / Proposals

  • n/a

Open Floor

  • @spacedmonkey Can we talk about this – ‘Explore and assess 6.2 server-side performance regressionshttps://core.trac.wordpress.org/ticket/57916
    • @flixos90 Happy to answer any questions on the data I gathered
    • @spacedmonkey Doing some research, realpath seems to be taking up a lot of resources
    • @flixos90 Is the realpath() usage something that was introduced in 6.2?
    • @spacedmonkey No, but I think it has been made worse.
    • @joemcgill After thinking about the original issue some more, I’m wondering if what @flixos90 observed is mainly a side-effect of things being moved around in the application lifecycle, which means that there are more callbacks firing on init, but overall the total response time is still an improvement over 6.1.X.
    • @flixos90 The overall total response time for classic themes is now actually worse in 6.2 than 6.1
    • @joemcgill That’s not what I’m seeing in our automated tests though.
    • @spacedmonkey It might be related to this – https://github.com/WordPress/wordpress-develop/commit/6d0a691b84d411813378f1983a0a87bf78a1ccad
    • @flixos90 Yeah I also didn’t see that in my previous tests. However what I have consistently seen is init being slower than in 6.1
    • @flixos90 FWIW, the automated tests are running core trunk . The tests I have been conducting are using built ZIP releases of the Betas and RCs. Not sure how relevant that is, but it may make a difference
    • @joemcgill Even in the latest run, 6.2 seems like an improvement.
    • @flixos90 The ZIP files are in principle closer to the real world experience, that’s why I’ve been using them in addition to the development repository
    • @spacedmonkey my test runs Slack thread
    • @joemcgill Zips should be built from the build folder, which is what the automated tests are testing
    • @flixos90 request for @spacedmonkey or @joemcgill to run the comparison between 6.1.1 production ZIP and 6.2-RC1 ZIP on your machines? Just to validate, maybe something is off on my environment
    • @joemcgill Happy to double check using local profiling at the betaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. tester plugin later today.
    • @spacedmonkey I might try using Local envoirment and other tools and see if i can reproduce
    • @johnbillion Are all these tests using the theme unit testunit test Code written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see regression. data?
      • @spacedmonkey I use Fakerpress to make mock data
      • @joemcgill The automated tests are. Not sure about how others are testing.
    • @flixos90 Good call @johnbillion My own local performance testing I’ve done only with the regular WP content (“Hello world”), nothing added. I know that’s not representative of real-world experience, but @joemcgill and @spacedmonkey please try to use that too for specifically the attempt to validate what I’m seeing on my end
    • @joemcgill If other folks can do A/B comparisons of the total response time for WP 6.1.1 vs 6.2-RC1 and share data on that issue, it could certainly help.
    • @spacedmonkey Fakerpress is great for generating posts from multiple authors, adds comments, terms and users.
    • @flixos90 So to summarize, just to reproduce, I’m seeing the regression locally in this environment:
      • between 6.1.1 and 6.2-RC1
      • a site with LocalWP
      • using TT1 theme
      • using Performance Lab plugin for Server-Timing, with no modules enabled
      • no content on the site other than what a clean WP core install gives you
    • Also see this sheet for more details.
    • @johnbillion Are you able to test again with the theme unit test data Felix? That way we have a somewhat unified set of data that’s in use for the tests
    • @flixos90 I certainly can. That said though, we also would still need to validate why I see a regression with the default content, so I would appreciate if someone else could run that on their end
    • @spacedmonkey https://codex.wordpress.org/Theme_Unit_Test
    • @flixos90 Last but not least, I want to highlight something here (which I tried to also call out on the ticketticket Created for both bug reports and feature development on the bug tracker.): Regardless of whether WP 6.2 is faster than 6.1, init is slower than before for classic themes. That has surfaced in all performance benchmarks I have done up to date. So while we should validate the overall test results, we should look into what is going on in init and why it has become worse in 6.2
    • @flixos90 See https://docs.google.com/spreadsheets/d/1LroIJoYz-O9CpfJzaiKYYMWJ7GbE5RZoW1rf1R4FqyA/edit#gid=0 for example. In my new data https://docs.google.com/spreadsheets/d/1LroIJoYz-O9CpfJzaiKYYMWJ7GbE5RZoW1rf1R4FqyA/edit#gid=1935935734 this is just more pronounced (which again could be due to a problem on my setup that wasn’t there before). If you want to get those more detailed Server-Timing metrics in your local environment, you can use https://gist.github.com/felixarntz/63c05392dbf7d51cc7f8f4a424b1ff39 for example
    • @joemcgill Back to my initial comment. I am curious if this is a side effect of some things being refactored during this release which has caused more work to be done on the init callback that was previously happening elsewhere. It could be that it’s fine that we’re doing more work on init than we were before if the overall execution time is improved.
    • @flixos90 Potentially that’s the case, in which case the “regression” would be fine. But we need to validate that
    • @joemcgill I think it would be helpful to review what is hooked to init in 6.2 vs 6.1 and compare differences.
    • @flixos90 I did that in https://docs.google.com/spreadsheets/d/1OCfHtty6__DZPkPeOrMTBJiPPH46Lwd1AdofvUA4bnE/edit#gid=879358988
    • @spacedmonkey register_block_type_from_metadata -> register_block_script_handle -> realpath. register_block_type_from_metadata Are hooked into init
    • @flixos90 So we need to check how those functions’ code changed
  • @johnbillion Briefly from me for a core issue related to performance: I’ve been working to remove use of the now-deprecated SQL_CALC_FOUND_ROWS in core, starting with its use in WP_Query. PR here: https://github.com/WordPress/wordpress-develop/pull/3863 which continues work from a couple older PRs. There are a few outstanding items to address, I might ask for some help from interested parties on the performance team if I can’t make much progress myself over the next few weeks. Apart from that, the more eyes the merrier on this change!
  • @flixos90 Last but not least: Next Monday is the release of the Performance Lab plugin 2.1.0, so we need to get a few PRs ready
  • @flixos90 I have been working on a fix for the object-cache.php compatibility issues which I’m about to open a PR for. Would be great to get some reviews today/tomorrow so we can include it in 2.1.0

Our next chat will be held on Tuesday, March 21, 2023 at 16:00 UTC in the #core-performance channel in Slack.

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

Performance Chat Summary: 7 March 2023

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

Announcements

  • Proposed update to our chat structure for future weeks to be focused more around our 2023 performance roadmap
    • @flixos90 Focusing on the roadmap items sounds great to me. I’d say some of those points are rather broad though, maybe we can still go a bit more granular per project. There’s also some projects on the roadmap that are well underway while others are merely ideas that may not see a lot of updates soon, so we need to think about how to balance that
      • @clarkeemily I think that would be the plan, to dive more into those sub-bullet point per priority as listed in our roadmap (sorry, should have clarified that!)
    • This was agreed – for future meetings, the agenda will be structured below, with the goal of diving deeper into each roadmap priority sub-project
      • Announcements
      • Roadmap priorities:
        • Server response time
        • Database optimization
        • 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/. & CSSCSS Cascading Style Sheets.
        • Images
        • Measurement
        • Ecosystem tools
      • Infrastructure
      • Open floor

Focus area updates

Images

@adamsilverstein @mikeschroder

GitHub project

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

Feedback requested

Measurement

N/A

GitHub project

  • @joegrainger We are working towards completing the infrastructure for 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 and once done we’ll have a working plugin with some initial checks. At that point we’ll be taking the time to do some initial testing, review the infrastructure and make any changes before working on the additional checks. You can see progress on the GitHub repo here. Feel free to leave any thoughts/ideas you may have in the repo too!
  • @mukesh27 Automated performance testing has been committed to the WP core repo https://core.trac.wordpress.org/changeset/55459
    • @joemcgill The first run of the new performance workflow ran perfectly, except for successfully posting results to the codevitals.run dashboard. I assume it’s because we either have an incorrect project token or some other change was made to the APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. there. I’ll follow up with @youknowriad to get this working when he’s back around. Regardless, this is pretty cool to see (copied over from Mar 3)

Feedback requested

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

@aristath @sergiomdgomes

GitHub project

  • @10upsimon update on WRT Script Loading Strategy:
    • Trac Ticket 12009 has been updated with a comment describing the work being carried out, and brief instructions on where and how to follow progress. We encourage early feedback.
    • Work on milestone 2 issues has been completed, and all code approved, unit tested and functionally tested. Further holistic testing is underway but is not a blockerblocker A bug which is so severe that it blocks a release. to progress.
    • Milestone 3 work is underway and tracking well.
    • We continue Investigating potential interoperability issues to assess how developers most commonly solve for the async and defer script applications in the absence of this 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 is underway, so that we can better understand if and how we need to potentially solve for this in the interest of preserving the work we are doing in core, and being mindful of backward compatibility.

Feedback requested

Database

@olliejones

GitHub project

  • @olliejones Work continues on the SQLite project. Starting to look at popular plugins with their own SQL. (Thousands of them.) Trying to get the top ten to work. (WooCommerce, Yoast, etc).
    • The work is happening in the standalone repo. Migrating to the monorepo is still in the future.
    • @spacedmonkey You can use https://wpdirectory.net/ to find plugins that do custom database queries

Feedback requested

Infrastructure

@flixos90

GitHub project

  • @mukesh27 started working on milestone 1 tasks for creating a standalone plugin.
    • PR 662 for implementing CLICLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. command for a build process to transform modules into standalone plugins is ready for review
    • @flixos90 I’ll give the above another review today, really excited to see it moving forward

Feedback requested

Open Floor

  • @olliejones Is there any intentional liaison between us and #hosting-community
    • @spacedmonkey I know the hosting community is keeping on eye on our work, see https://wordpress.slack.com/archives/C3D6T7F8Q/p1677695456489839
    • @spacedmonkey I meet with some hosting companies 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. Asia, but we could do a better job at building bridges between these teams.
      • @olliejones Can you persuade your contacts to lurk here, or identify themselves? Would love to know what they wish they had from performance.
    • @olliejones I would really like to have a conversation with a couple of hosting dbms-ops people, to learn more about their problems and how we can help address them.
    • @spacedmonkey there are people like @desrosj (Bluehost) and @mikeschroder (GoDaddy) that might be able to help
    • @johnbillion that’s a conversation worth having with agencies too
    • @spacedmonkey Humanmade does a lot of hosting with their platform
    • @spacedmonkey can make some intros to help @olliejones
  • @tillkruess raised a concern over comments on https://github.com/WordPress/performance/issues/132
    • @spacedmonkey The TLDR of 132, is that as we support older version of DBs, we can’t rollout the indexes? Can we do a progressive enhancement for newer DBs?
    • @olliejones To oversimplify, (191) indexes don’t do what big sites need. “Progressive enhancement” means “two versions of the database definition”. Is there testing capability? https://www.plumislandmedia.net/index-wp-mysql-for-speed/wordpresss-prefix-keys/ is a writeup on the topic.
    • @spacedmonkey There are other examples of progressive enhancements in core. And there is a different schema for the user table 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 for example. Any thoughts on progressive enhancements like this @johnbillion
    • @tillkruess I’m strongly in favor of databases indices as an opt-in feature.
    • @olliejones In schema.php we’d put if (the database uses the barracuda storage engine ) { lots of data definition language }
    • @johnbillion The answer I always give when talking about introducing optional features is, is the intended user capable of making an informed decision about whether or not to enable the feature? If the “user” in this context is a large scale web host then yes, if the “user” is a freelance integrator without much SQL experience then no. So if we can guide an informed decision to be made then I’m in favor of these indices enhancements being opt-in, as much as I’m not a fan of differing schemas the benefit outweighs that here IMO

Our next chat will be held on Tuesday, March 14, 2023 at 16:00 UTC in the #core-performance channel in Slack.

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

Performance Chat Summary: 28 February 2023

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

Announcements

  • Team rep nomination decision – consensus from the group is to skip the voting stage and allocate @clarkeemily as Team RepTeam Rep A Team Rep is a person who represents the Make WordPress team to the rest of the project, make sure issues are raised and addressed as needed, and coordinates cross-team efforts., as there were no other nominees
  • WordPress 6.2 performance improvements:
    • @flixos90 it’s just great news: WordPress 6.2 is notably faster than 6.1 :partying_face:
    • Both on the server-side and the client-side: See Web Vitals and the more granular server-side Server-Timing metrics
    • All these are based on lab metrics for coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., but after several weeks of different testing methodologies being tried, I believe we now have an approach that works well for this type of benchmarking (I plan to document it soon)
    • One note here is to please be mindful that those are metrics for just WordPress core. Since actual WordPress sites will be heavily influenced by the theme and plugins, the real improvements across the WordPress ecosystem will not be that high
    • With that said, it’s a major accomplishment for the WordPress core release itself, and WordPress core getting that much faster certainly helps all sites out there to get at least a little bit faster

Focus area updates

Images

@adamsilverstein @mikeschroder

GitHub project

Feedback requested

Object Cache

@tillkruess @spacedmonkey

GitHub project

  • No updates this week

Feedback requested

Measurement

N/A

GitHub project

  • @joegrainger we are working towards completing the infrastructure for 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. Once done we will be at a point where we’ll have a working plugin running with initial checks. You can see progress on the GitHub repo here. Feel free to leave any thoughts/ideas you may have in that repo too.
  • @mukesh27 Automated performance testing core PR is ready for review

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

  • @10upsimon update on WRT Script Loading Strategy:
    • Engineering work for Milestone 1 has been completed and issues closed out.
    • Engineering for Milestone 2 is almost complete and in a state of iteration and ongoing revision. It is almost ready for approval after which functional testing of Milestone 2 will commence
    • On completion of Milestone 2, we will have a functional means of executing loading strategies on registered scripts, and work on Milestone 3 (relating to inline scripts) will commence.
    • The epic is tracking well, with no concerns from my part (here’s the repo for folks to view)
    • @joemcgill That’s all pre-work on an approach for #12009 that we’re hoping to have ready for 6.3. I think Simon plans on posting an update to that ticketticket Created for both bug reports and feature development on the bug tracker. that briefly outlines the approach later this week.

Feedback requested

Database

@olliejones

GitHub project

  • @olliejones SQLite: Lots of compatibility issues https://github.com/WordPress/performance/issues?q=is%3Aissue+is%3Aopen+label%3A%22%5BModule%5D+SQLite%22 are coming up. This isn’t surprising considering two decades’ history in core using one particular SQL dialect, then trying to add another.
  • We’ll need at least one epic to turn this from experimental stuff into deployedDeploy Launching code from a local development environment to the production web server, so that it's available to visitors. stuff.
  • Is it possible wordpress.com people have a closed-source compatibility layer for something like Oracle or postgres that we can learn from?
  • @aristath Currently OTP, but just a quick update on SQLite: @zieladam and I completely rewrote the implementation using a lexer and a parser. Almost all WordPress phpunit tests are passing now, and all the issues that have already been reported, have already been resolved. The implementation has already been released in the standalone plugin, and I’ll be back porting the changes to the PL plugin as soon as we push a couple more minor tweaks

Feedback requested

Infrastructure

@flixos90

GitHub project

  • @flixos90 All the issues that are part of milestone 1 for creating standalone plugins are now defined with their individual requirements. See https://github.com/WordPress/performance/issues/656 for the overview
  • You can from there go into the Milestone 1 issues to review, any additional feedback would be much appreciated
  • I think we can start engineering on the first issue this week
  • @flixos90 Also noting that the idea is to eventually maintain SQLite in the monorepo as well, see https://github.com/WordPress/performance/issues/661; right now developing the code in two places is a maintenance burden as seen above (cc @aristath)
  • Though we will only be able to unify the two codebases once the WordPress/performance repository is set up to deployDeploy Launching code from a local development environment to the production web server, so that it's available to visitors. standalone plugins, so it’ll be a few more weeks

Feedback requested

Open Floor

  • @clarkeemily Circling back to Team Rep nominations, there were quite a few thumbs up to the comment so I presume we can agree on myself being the new Team Rep – general consensus is yes!

Our next chat will be held on Tuesday, March 7, 2023 at 16:00 UTC in the #core-performance channel in Slack.

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