Performance Chat Summary: 16 April 2024

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

Announcements

  • Welcome to our new members of #core-performance
  • The team launched 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 version 3.0.0 on Mon April 15

Priority Items

Structure:

  • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
    • Current release (WP 6.6)
  • Performance Lab plugin (and other performance plugins)
    • Final decision regarding streamlining PL plugin and other standalone plugins #1061
  • Active priority projects
    • Improve template loading
    • INP research opportunities
    • Improving the calculation of image size attributes
    • Optimized autoloaded options

WordPress Performance Trac Tickets

  • For WordPress 6.6:
    • Nothing to discuss this week

Performance Lab Plugin (and other Performance Plugins)

  • Final decision regarding streamlining PL plugin and other standalone plugins #1061
    • @thelovekesh added a workflow diagram on the issue itself and had some initial conversation with @swissspidy as well.
    • In the new workflow, we will be aiming to automate the other chores like:
      • auto creation of a release 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".
      • raise a PR on the 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. from the release branch which will be having updated since tags and bumped version.
      • renaming of milestone and creating a next milestone.
  • @mukesh27 has the following PR ready for review PR #1148 – Warning notice about read-only file system remove even when all plugins are installed
  • @westonruter For Speculative Loading, I learned about an issue yesterday where WooCommerce links to add-to-cart and remove-from-cart are erroneously being prefetched/prerendered. WooCommerce shouldn’t be using links for these UIUI User interface elements, but such is WP.

Active Priority Projects

Improve template loading

  • @thekt12 ticketticket Created for both bug reports and feature development on the bug tracker. #59595PR#6392 is good for some initial review and feedback. Findings and reasoning behind each changes is added to PR description and inline comments. In TT4 homepage, I can see 4% improvement for non persistent cache and 6% improvement for site with persistent cache.
  • @thekt12 In #59600,
    • Working on improving performance for 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. Template  PR#6369 ( current results not that good )
    • Template Parts caching PR#6391 ( current results not that good )

INP research opportunities

  • @adamsilverstein created this top level issue to track the work: https://github.com/WordPress/performance/issues/1120
    • opened a few coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. tickets about adopting the Interactivity APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. to replace jQuery (#60986 #60985 and #60987) These are open for contributions if anyone wants to get a chance to try the Interactivity API out.
    • created a sheet with the list of scripts identified in the audits and have started to inventory which themes/plugins have public 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/ repositories we can contribute to.
    • created a PR to add custom metrics to httparchive so we can track adoption of the Interactivity API and I also started exploring adding performance instrumentation to the Interactivity API, so we can debug performance issues with callbacks.

Improving the calculation of image size attributes

  • @joemcgill I have an update on https://github.com/WordPress/performance/issues/760
    • One of the first steps to this project is to get a baseline of what the impact of inaccurate sizes attributes have on the web. I’ve updated an earlier HTTPArchive query that was created a few years ago to get some of that info, and am planning to work with @adamsilverstein on some additional ways to measure the impact of any changes we make.
    • I’ll plan on creating a bit of a roadmap for how we can improve the sizes attribute via a Performance Lab project once we’re happy with how to measure this.

Optimized autoloaded options

  • @swissspidy we have this long-standing module proposal for optimizing autoloaded options however @joostdevalk just published something very similar. So I was thinking that maybe we should collaborate
    • @joostdevalk I’ve done (in what’s probably a pretty rough way) something similar to what @swissspidy proposed in his ticket too; measure which options are used, remove autoload from those that aren’t used
    • I was kinda shocked by the results on some sites, going from multiple megabytes of options to 2-300 KB
    • I do still think though that maybe we should look at more aspects. We currently only have autoload yes and no, and I’ve basically always thought it’s weird that we don’t use the fact that it’s a string to also allow other contexts, like admin
    • Anyway, my code is there, happy to look at it together with someone and build something for performance labs
    • @joostdevalk One other thing related to options; the impact of a “miss” on an option that’s supposed to be autoloaded is actually way higher, as that always results in a DB query. If we could get a way to prevent that from happening, by having a get_autoloaded_option or something like that, I think the impact could be quite big.
  • @joemcgill For 6.6, we just added some functionality in #42441 that could be useful for automating some of this. After that change, any new option that is added can have its autoload value determined based on some additional criteria. For example, in that issue disables autoloading for large options if they weren’t explicitly added while passing true to the autoload param.
  • @pbearne asked @joostdevalk have you looked #347 code

Open Floor

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

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