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 Agenda: 21 March 2023

Here is the agenda for this week’s performance team meeting scheduled for March 21, 2023 at 16:00 UTC.

  • Announcements
    • Released 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
  • Open floor

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 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 Agenda: 14 March 2023

Here is the agenda for this week’s performance team meeting scheduled for March 14, 2023 at 16:00 UTC.

  • 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
  • Open floor

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 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 Agenda: 7 March 2023

Here is the agenda for this week’s performance team meeting scheduled for March 7, 2023 at 16: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 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

Performance Chat Agenda: 28 February 2023

Here is the agenda for this week’s performance team meeting scheduled for February 28, 2023 at 16: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

Core Performance Team Roadmap Published

Over the past few weeks, the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Performance Team has been working on a roadmap for 2023, gathering different priorities of the different contributors and bringing them together in a cohesive roadmap. The team is excited to share this roadmap, which is now available on the Make Performance site.

The roadmap summarizes the team’s big picture focus areas and more specific efforts planned for the year. This is intended to be a living document that may see updates from time to time. It is difficult to plan and scope work for an entire year, so certain priorities may shift or new ones may be raised. Even so, this roadmap is meant to communicate the current intentions for what is on the near horizon for the Core Performance Team.

While most priorities on the roadmap are focused on direct WordPress core enhancements and performance support of the key 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/ phases 2 and 3, other priorities are focused on external tooling, such as to measure performance reliably, or to provide assistance to 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 or theme developers.

Please refer to the 2023 roadmap page for a comprehensive overview. It contains the full list of priorities for the year, and furthermore provides additional context for the big picture focus areas.

#core-performance, #performance, #roadmap, #roadmaps

Performance Chat Summary: 21 February 2023

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

Announcements

  • Team rep nomination reminder, please add your nominations for Performance 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. by Friday, February 24 2023
  • Next steps on sharing the public roadmap for 2023 now the GitHub issue has been closed
  • Next steps on creating standalone plugins [summarized in this GitHub issue]
    • The performance team received feedback from Matt and Josepha regarding the 3 approaches in this comment
    • @flixos90 As such, we should move forward with option 2. While that’s not the same option we initially voted for, I think that’s still a great option, and it’s great that we now have a clear path forward
      • As mentioned before, Option 2 is technically a bit more work than Option 1, but it effectively includes the work we would need to do for Option 1 as well. So I think it makes sense to do this work in two stages
      • @flixos90 has opened a couple of follow up issues as well as this overview issue to keep track of all the work: https://github.com/WordPress/performance/issues/656
      • Call to please review and share any ideas or feedback you have on 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/ (either in the overview issue if it’s high level feedback, or on the specific issues if it’s a more concrete feedback regarding one of the tasks)
      • The idea is that for milestone 1, which is already fairly well defined, to get it across the finish line by end of March
      • So at that point we would have the standalone plugins available already, which is a big step regarding the overall effort

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 over the coming weeks. Once done we will reach a major milestone where we’ll have a working plugin running with some 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.
  • @joemcgill sharing on behalf of @mukesh27 who is out for WC Asia
    • he is very close to having the automated performance measurements workflow implementation for WP CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. ready to share. There is one new requirement that needs to be addressed, which we discovered when coordinating with @youknowriad about logging data with the dashboard he’s set up at https://www.codevitals.run/project/2. Hoping to have that wrapped up later this week.
  • @joemcgill Also, I opened an initial draft PR for adding XHProf support directly in the wp-env package. I’m planning on making updates to that approach this week that would simplify setting up XHGui for analyzing profiling data, but am already able to use this setup to do profiling of WP, which has been useful in testing for possible regressions in 6.2.

Feedback requested

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

@aristath @sergiomdgomes

GitHub project

  • No updates

Feedback requested

Database

@olliejones

GitHub project

  • @olliejones work proceeds on the SQLite integration
  • @clarkeemily spotted a few new issues added recently re. SQLite integration which I added to the [Focus] Database label [see here]
  • @joemcgill There were also a few issues that came up during the Performance Lab release party yesterday, that I wanted to make sure we get added

Feedback requested

Infrastructure

@flixos90

GitHub project

  • @flixos90 No updates from my end, other than the news I already shared about creating standalone plugins and unbundling the Performance Lab plugin, and that version 2.0.0 was released yesterday

Feedback requested

Open Floor

  • @olliejones The drop-in method of loading run-early code is reaching the limit of its flexibility. And the workarounds are, imho, too brittle to release broadly; they’ll drive site owners ’round the bend.
  • A lot of this performance work will depend on run-early code. Can we imagine a more extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. way of handling it that will work better when, say, 50% of all sites use SQLite, and they all use other drop-in activated features?
  • It will likely take some sort of core change to improve this corner of WordPress. What’s the process for working out all that stuff?
  • It might be as simple as modifying the mu-plugin load order so some of them load early.
    • @joemcgill I think it’s a great question, and one that we could begin thinking about by focusing on examples of where the current functionality of WP is limiting our ability to deliver the kind of user-facing improvements we’re trying to make. If solving an underlying architectural issue unblocks a whole lot of other improvements, then I think it’s worth prioritizing, but hard to say without concrete examples.
    • @olliejones the following come to mind:
      • Collisions between the performanceServer timing part of PL and various persistent object caches.
      • Collision between Query Monitor and the SQLite integration
      • And, conceptually it should be possible to run both Query Monitor and SQLite integration, and activate/deactivate them in whatever order the site owner wants. (except obvs deactivating SQLite on a install that uses it would break it.). The same logic applies to object caching.
    • @olliejones to create an issue to capture next steps here
  • @joemcgill flagged a critical issue to address this week https://core.trac.wordpress.org/ticket/57150 

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

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