Editor Chat Summary: 3 May 2023

This post summarized the editor chat fromย  Wednesday, May 3, 2023, 14:00 UTC (agenda) held in theย #core-editorย channel moderated by @bph โ€“ Full transcript

Announcements

Gutenberg 15.7 is now available for download from the plugins repository. Release post is in progress.

New Developer Blogblog (versus network, site) posts

FSE Program Testing Call #22: Front Page Funย โ€“ย  Deadline for feedback is May 8th, 2023

Developer Hours โ€“ Introduction to WordPress Playgroundย will be held on twice

On May 23, 2023 at 17:00 UTC / 12:00 PM EDTย hosted by Justin Tadlock
On May 24, 2023 at 8:00 UTC / 15:00 Indonesia Timeย hosted by Michael Burridge

Project updates

Navigation

@get_dave created a new overview issue for Navigation:ย WIP Navigation Overview: 6.3 Priorities

Fonts 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.

@hellofromtonyaย posted anย update for the Fonts API:

  • Theย project boardย is now groomed, with card priority sorted in highest (top) to lowest (bottom).
  • The Roadmapโ€™sย Ongoing work sectionย is updated and tasks are split intoย ย Required for Core introductionย andย Future. The primary focus then is on completing the required for CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. items.
  • Goal: introducing the API in WP 6.3ย 

Native Mobile

@twstokesย noted recently fixed or improved

Task Coordination

@annezazuย mentioned:ย  โ€œThereโ€™s a new, very simpleย โ€œUX and Polishโ€ boardย that some of us are trying to curate for some developers to dive into.Any issue on this board should be actionable by developers specifically, not add any new features, and not require additional design thought or help.โ€ย 

@mamaduka mentioned โ€œIโ€™ve been debugging flaky e2e tests and helping with reviews this week.โ€

Open Floor โ€“ extended edition

@proxxim posted on the agenda the following idea:

โ€œThe `templateLock` for feature `innerBlocks` might need more refinementโ€ and provided the following use case:
โ€œWe want the client to be able to insert a maximum amount of two buttons in an innerBlock. The client should also be able to insert just one or zero buttons as well. The current implementation of templateLock does not offer a configuration option for such a use case.โ€

@aurooba commented: โ€œThis would be handy for a lot of different custom blocks I often also create where you need to maximum number of innerBlocks, rather than a specific amount.โ€, followed by another use case: a custom 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. to feature posts from another custom post typeCustom Post Type WordPress can hold and display many different types of content. A single item of such a content is generally called a post, although post is also a specific post type. Custom Post Types gives your site the ability to have templated posts, to simplify the concept.. The design directive explicitly asked to not allow more than 6, less than 6 was okay. โ€œIf the templateLock featured had aย maxย property, that would make it pretty simple.โ€ she wrote.

Another use case: โ€œHaving a max (and even a minimum) is a pretty common pattern most folks coming from the world of ACF and similar plugins are used to. For example, the repeater field in ACF lets you define a minimum and maximum for its rows.โ€ (also by @aurooba)

@fabiankaegy chimed in with an issue thatโ€™s already on the 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 by the repository owner. https://github.com/ repo: Add ability to limit the number of items within an Inner Blocks area. @proxxim and @aurooba should join the discussion to give developer more scenarios to be sure a new API would cover the use cases.

Props to @paaljoachim for review

#core-editor, #core-editor-summary, #gutenberg, #meeting, #summary

WordPress 6.2.1 Planning

Coming after WordPress 6.2 โ€œDolphyโ€, a 6.2.1 release is planned for some items that came up near the end of the 6.2 release cycle or have been raised post-release.

If there is a critical bugfix that has a patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing./PR ready, then please look to add those to the 6.2.1 milestone on Trac or the WordPress 6.2.1 Editor Tasks project board on GitHub.

Schedule

The following schedule is whatโ€™s currently planned for the release, any additional 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, release candidates, or other items will be added here as they get scheduled.

Thursday, May 4th, 2023 at 15:00 UTCBug scrub focused on finalizing items for 6.2.1
Monday, May 8th, 2023 at 19:00 UTCFinal scrub ahead of Release Candidaterelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta).
Tuesday, May 9th, 2023 at 16:00 UTC6.2.1 Release Candidate
Tuesday, May 16th, 2023 at 16:00 UTC6.2.1 Final Release

Release Coordination

This release is led by @audrasjb and @mamaduka, with the help of @sergeybiryukov on mission control.

The #6-2-release-leads channel will continue to be used for all coordination and conversation related to the 6.2.x releases. This matches the pattern of communication that worked well for previous minor releaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality. cycles.

Thanks @mamaduka, @sergeybiryukov, @annezazu, @costdev and @jpantani for proofreading.

#6-2, #6-2-1, #minor-releases

Dev Chat Summary, May 3, 2023

The WordPress Developers Chat meeting took place on May 3, 2023 at 20:00 UTC in the core channel of Make WordPress Slack.

Key Links

Highlighted Posts

Here is an overview of changes in TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between April 24 and May 1, 2023:

  • 7 commits
  • 21 contributors
  • 50 tickets created
  • 3 tickets reopened
  • 38 tickets closed

Release Updates

6.3 Major Releasemajor release A release, identified by the first two numbers (3.6), which is the focus of a full release cycle and feature development. WordPress uses decimaling count for major release versions, so 2.8, 2.9, 3.0, and 3.1 are sequential and comparable in scope.

@ironprogrammer noted that the 6.3 squad was being composed over inย #6-3-release-leads, with the team and dates to be finalized by the end of the week.

6.2.1 Minor ReleaseMinor Release A set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality.

@audrasjb provided a minor release update:

  • On Trac, there areย 22 tickets in milestone, 11 are closed as fixed, and 2 others are awaiting backportbackport A port is when code from one branch (or trunk) is merged into another branch or trunk. Some changes in WordPress point releases are the result of backporting code from trunk to the release branch. to 6.2.
  • On 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/, there areย 15 issues/PRs in the milestone, with 8 of them fixed and merged to core. @mamaduka is leading the Gutenberg work.

@audrasjb will run a 6.2.1 bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. scrub on May 4, 2023 at 15:00 UTC.

@audrasjb also shared a proposed schedule for the minor release, and asked for input:

If no feedback is provided regarding the schedule, @audrasjb will publish the release planning post to Make/Core later today.

Maintainers: Component Help Requests

@afragen requested further feedback on Trac #22316 (PR 3032) and 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. Dependencies feature pluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins, noting a desire to see it land in 6.3. @ironprogrammer noted that testing could be performed using the plugin or Core patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing.. Andy suggested that a simple way to test would be to start with a clean installation, install/activate the Plugin Dependencies feature plugin (if not using the PR), and install and activate The Events Calendar CategoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. Colors plugin, which includes the necessary headers to trigger the dependencies feature. There are additional test plugins within the feature plugin directory.

Open Floor

Comments from the agenda provided the first couple of topics for discussion:

@pskli requested that Trac 57300 be reviewed, which deals with fatals related toย parse_tax_query(). Neither @audrasjb nor @oglekler could reproduce the issue, and agreed that clear reproduction steps were required to move it forward. Olga agreed to update the ticketticket Created for both bug reports and feature development on the bug tracker. and request this information.

@margolisj requested that the following E2E test package prerelease be prioritized: https://github.com/WordPress/gutenberg/pull/43998. @ironprogrammer summarized that the PR was stalled due to a lack of input related to versioning the prerelease package @wordpress/e2e-test-utils-playwright. Brian requested comment from editor package maintainers, noting there were numerous requests for the packageโ€™s release in the PR.

@oglekler drew attention to two tickets that might remove clutter from WP adminadmin (and super admin), and adopt a more modern look and improved UXUX User experience:

#51006: Add a mechanism for accessible tooltips in core โ€” @joedolson was confident about providing/validating accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) for the ticket, but indicated a desire to collaborate with a 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 developer to help ensure that scripting best practices were met. @oglekler, @audrasjb, and Joe shared example tooltip patterns/libraries to consider, and agreed that it might be simpler to work from the good parts of prior examples and develop a custom solution well suited for WordPress. Joe agreed to add requirements to the ticket to help move this work forward.

#21583: Improve discoverability and visual design of Screen Options and Help Panels โ€” The clock ran out for Dev Chat, so this ticket was not discussed during the meeting. @oglekler asked that this ticket be raised during the next Dev Chat, and due to its importance, suggested it be scheduled for the 6.4 release.

Next Meeting

The next meeting will be on May 10, 2023 at 20:00 UTC.

Are you interested in helping draft Dev Chat summaries? Volunteer at the start of the next meeting on the #core Slack channel.

Props @pbiron and @audrasjb for peer review of this summary, and to everyone who participated in the Dev Chat.

#6-3, #6-2, #dev-chat, #meeting, #summary

Dev Chat agenda, May 3, 2023

The next weekly WordPress developers chat will take place on May 3, 2023, at 20:00 UTC in the coreย channel ofย Make WordPress Slack.

1. Welcome and housekeeping

Dev Chat summary from April 26, 2023 โ€“ courtesy of @ironprogrammer.

Could you volunteer to write the meeting summary post? If you would like to help, please note in a comment below, or raise your hand at the start of the chat.

2. Announcements

3. Highlighted posts

A Week in Core โ€“ May 1, 2023 โ€“ thanks to @audrasjb.

An overview of changes onย TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.ย between April 24 and May 1, 2023.

  • 7 commits
  • 21 contributors
  • 50 tickets created
  • 3 tickets reopened
  • 38 tickets closed

A discussion call: WordPress Core and Artificial Intelligence โ€“ posted by @annezazu.

Proposal for enhancing LCP image performance with the fetchpriority attribute in WordPress core โ€“ posted by @flixos90

Reminder: WordPress 6.3 Planning Proposal & Call for Volunteers

4. Forthcoming releases

Updates on releases coming up.

The next major releasemajor release A release, identified by the first two numbers (3.6), which is the focus of a full release cycle and feature development. WordPress uses decimaling count for major release versions, so 2.8, 2.9, 3.0, and 3.1 are sequential and comparable in scope. will be 6.3.

5. Help needed for Component Maintainers/ Tickets

If you have a ticketticket Created for both bug reports and feature development on the bug tracker. which needs some help, do add it in the comments below.

6. Open floor

If you have an item for this part of the agenda, you can add the topic below.

#6-3, #agenda, #core, #dev-chat

Performance Chat Summary: 2 May 2023

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

Announcements

  • Proposal for using fetchpriority to enhance LCP image performance published

Priority Projects

Server Response Time

Link to roadmap projects

Contributors: @joemcgill @spacedmonkey @aristath

  • @spacedmonkey: Committed [55701] and [55702]
  • @spacedmonkey has been working on #58196
    • Could have the possibility to have 6-10% of server time 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. themes
    • @flixos90: There are some conflicting metrics on that last one. We have to figure out why your metrics show such good values while mine donโ€™t show any notable change. I tested with 6.2 (not trunk) and didnโ€™t see any performance impact
    • @spacedmonkey: I think it related to changes in 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.
    • @johnbillion: The ticketticket Created for both bug reports and feature development on the bug tracker. is now about adding caching (see new comment and new PR)
    • @spacedmonkey and @flixos90 to follow up with additional benchmarks to determine why the benchmark results differ so much

Database Optimization

Link to roadmap projects

Contributors: @aristath @spacedmonkey @olliejones @rjasdfiii

  • @spacedmonkey plans to commit lazy loading of comment 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. everywhere, today or tomorrow
    • All other types, like user and post meta are so heavily used ( user meta == capabilitiescapability Aย capabilityย is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on theirย role. For example, users who have the Author role usually have permission to edit their own posts (the โ€œedit_postsโ€ capability), but not permission to edit other usersโ€™ posts (the โ€œedit_others_postsโ€ capability). and post meta, post thumbnails ), that it not really worth lazy loading it
  • @xavivars had a couple of comments regarding the SQLite integration
    • @xavivars: I know it has been discussed previously that this may not be a โ€œperformanceโ€ project, but only something related to the work here, so not sure if this is the relevant forum for that, or thereโ€™s a better place for it
    • @flixos90: Yes, just to recap the above conversation from last week: 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. / PL module will going forward no longer be directly associated with the performance team. Weโ€™ll still be supporting the project, but it will be decoupled from theย WordPress/performanceย repository and the Performance Lab plugin
    • @flixos90: Probably best to raise in the pluginโ€™s GitHub repository
    • @xavivars: It may be worth to remove it fromย https://make.wordpress.org/performance/roadmap-2023/#category-database-optimizationย (or make that decision explicit in the roadmap)
    • @flixos90: Good point. Letโ€™s raise that again next week when more people are around to discuss. Maybe we could change it to support the project rather than driving it, or something like that.

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

  • @flixos90 would like to share that there is now a pull request for the new script loading strategyย https://github.com/WordPress/wordpress-develop/pull/4391
    • @westonruter: In that pull request for Script Loading Strategies,ย identifiedย what may be missing support forย asyncย scripts having dependencies. I put together anย Async Library Script Loading Demoย that demonstrates howย asyncย scripts could indeed have dependencies. So Iโ€™d like it if anyone could affirm my findings for the need forย asyncย scripts to be able to have dependencies/dependents. Feel free to just comment on the PR. Since 10up is not here, it doesnโ€™t make much sense to chat about it right now.
    • @flixos90: Iโ€™ll have to take a closer look. Letโ€™s continue discussing, but Iโ€™d like to note that this could also happen in a separate follow up enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature.. It depends a bit on how complex it is and how much it increases the scope of the current effort Iโ€™d say. We can always iterate, and not supportingย asyncย with dependencies could only be the first iteration
    • @westonruter: From what I can see, itโ€™s more about just copying the same logic in place forย defer. Currently thereโ€™s a check that just bailsย asyncย entirely if there areย deps
    • @flixos90: When the current implementation was originally defined, it was noted that by defaultย asyncย scripts donโ€™t execute necessarily in the same order their tags are printed on the page.
    • @westonruter: When async scripts have dependencies, the order is explicitly not significant. Itโ€™s up to the library to ensure that the logic is executed in the right order. You can see in my demo when you get a chance. So itโ€™s less about the execution order as much as being able to automatically get a bundle of scripts printed
    • @flixos90: Yeah, but I feel that is what complicates things. We would have to assume the script that usesย asyncย does the right thing, whereas so far with how the strategies are handled, WordPress will ensure it loads things in the right order
    • @westonruter: Since it is opt-in by developers, I donโ€™t see it being an issue.
    • @flixos90: I agree that this is something worth supporting in WordPress, but supporting it has different implications for developers than what is supported by the current PR. So I would see that as a separate enhancement as it requires its own level of discussions. On a technical level we could easily support it it seems, but the implications are different
    • To be discussed further
    • @westonruter: Another point I wanted to raise: for that same pull request, I alsoย proposedย theย elimination of manual script tag constructionย inย WP_Scriptsย to improve readability, increase robustness, and facilitate CSP in scripts printed by WordPress coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Any concerns about using those script 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.) construction helpers inย WP_Scripts? Itโ€™s not clear why they werenโ€™t utilized when they were introduced.
    • @johnbillion: +1 to that, those functions havenโ€™t gotten much use since they were introduced
    • @flixos90: Yeah I agree we should definitely use them
    • @flixos90: It would be great to get additional code review feedback this week, just please be conscious that Simon who has been leading the work on the PR is out this week, so it may only be next week that heโ€™ll get back to it

Images

Link to roadmap projects

Contributors: @flixos90 @thekt12 @adamsilverstein @joemcgill

  • @flixos90: Last week I opened and milestoned several TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets to enhance coreโ€™s lazy-loading logic:
    • #58211
    • #58212
    • #58089
    • #56588
    • #58213
    • These enhancements will benefit an eventualย fetchpriorityย implementation as well. The idea is that the latter should therefore only happen after those enhancements have landed.

Measurement

Link to roadmap projects

Contributors: @adamsilverstein @olliejones @joemcgill @mukesh27

  • No updates

Ecosystem Tools

Link to roadmap projects

Contributors: @joegrainger

  • @flixos90: There is still some work going on in the plugin check repository projectย https://github.com/orgs/10up/projects/12/views/1. Itโ€™s close to having a first alpha version that is ready to use, at which point it would be great to move it to theย WordPressย 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 by the repository owner. https://github.com/ organization

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27 @10upsimon

  • @flixos90: Weโ€™re still awaiting approval for the Fetchpriority standalone plugin repository, as the plugin review team is currently seeing notable delays. Fingers crossed we get an approval soon
  • @flixos90: Other than that, weโ€™ve started thinking about what the implementation for a Milestone 2 (actually removing the modules from PL) could look like, see theย overview issueย description for sub-issues

Open Floor

  • @westonruter: On the topic of CSS, thereโ€™s Felixโ€™sย Gutenberg issueย to load less CSS for core blocks by only printing the CSS for the blocks used on the page, here specifically for classic themes. I identified someย challenges with inlining CSS with rendered blocks. I suggested a (probably controversial)ย alternativeย using output buffering. Hereโ€™s aย proof of concept plugin. Maybe page output buffering now would be less controversial since itโ€™s essentially how block themes are working?
    • @spacedmonkey: I am not a fan of output style tags inline. I feel like that would have side effects we could do know about. ATM, we have a head and footer styles / scripts. I was wonder if we could add a enqueue after every set of blocks, so widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user. blocks, post content and block theme. If it was an opt-in feature and all core blocks opt-in, that could go a long way.
    • @westonruter: Inlining I think is a no-go, for the reasons Iย identified
    • @spacedmonkey: Could we inline that at the start / end of post content?
    • @westonruter: That wouldย probablyย resolve the issue with inlining breaking CSS selectors. But not all. For example, if you haveย div.entry-content > p:first-child, inlining would break thisย (edited). And if the CSS were at the end of the post content, then this would be the same problem as we have right now with the styles being printed in the footer: the potential for flash-of-unstyled-content
    • @spacedmonkey: So we need some other hook to output the scripts / styles in. Outside of the context of the content. In block themes we could add that but if might an opt-in for classic themes.
    • @westonruter: IMO, an opt-in for classic themes would take a long time to get adoption, and it doesnโ€™t seem quite right if the future focus is on block themes. Iโ€™m not sure how the hook would work in practice either. Block themes are able to solve this problem by โ€œoutput bufferingโ€ the content (not usingย ob, but rather just storing the content in memory forย do_blocks). If output buffering could be used in classic themes, then weโ€™d be able to hoist footer styles to theย headย in the same way, easily.

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

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

Letโ€™s talk: WordPress Core & Artificial Intelligence

WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. always seeks to provide a stable foundation for folks to build upon directly and extend as they see fit. Even if a new technology is not actually included in Core, the project aims to enable innovation and progress through extension (plugins, themes, etc.) wherever possible and sensible.

Artificial Intelligence (โ€œAIโ€) technology has made huge strides in recent years, with the potential to revolutionize how humans build and interact with websites, companies, and individuals. As the WordPress community dives into the world of AI, the responsibility and role the Core WordPress software has in this journey has come into question. This post attempts to build clarity around how Core aims to function during this evolving time, while encouraging folks to share what would be helpful for them to integrate AI into the experiences they seek to create with WordPress.

WordPress blocks describe both content and layout; since many of the recent AI strides come in the form of large language models (LLMs), having a common โ€œlanguageโ€ of blocks can be an incredibly powerful way to bridge the communication between AI technologies, developers, and users alike. With the right foundation in place, developers will be able to integrate AI into their plugins and themes, making it easier than ever to create intelligent and personalized experiences for WordPress users.

In some cases, itโ€™s a matter of using whatโ€™s already in place, like well-defined and structured 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. markup, while in other cases, it might be new extendable entry points or even integrating small built-in AI models, for example to better learn user preferences that donโ€™t require third party integration. The impact extends to anyone using WordPress with AI, expanding the ways users can interact and modify software and keeping open sourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL. even more relevant in todayโ€™s world. For example, imagine building a pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. that extends the in-progress command center that allows someone to describe to an AI-powered interface what they want to see built:

An imaginary video of what might one day be possible

As this work rapidly evolves and folks begin exploring, letโ€™s use this post as a gathering point for early feedback, ideas, and questions. To focus the discussion, here are some questions to consider:

  • How would you want to see Core updated so it can be extended in ways accessible to AI technologies?
  • For thoseย  building, or trying to build, with AI today, how does Core currently enable or hinder this effort?
  • Are there any concerns that you think the community should be aware of as this space is explored?

Please share your thoughts below and letโ€™s discuss this as a broader community. After a few weeks, Iโ€™ll do my best to summarize whatโ€™s come out of this discussion for future reference for the community. If youโ€™re interested in working on this and shaping how 43% of the internet interacts with AI, join #core and #core-editor as any exploratory work will start from either avenue.ย 

Props @jeffpaul, @desrosj, @matveb, @priethor, @richtabor, @mcsf, @andraganescuย for helping with the content of this post and @jameskoster for the video exploring a futuristic look at what could be possible.

#artificial-intelligence, #discussion

Proposal for enhancing LCP image performance with the fetchpriority attribute in WordPress core

This post proposes adding the fetchpriority=โ€highโ€ attribute to LCP images in WordPress coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. to enhance LCP performance. The proposal was created as a collaboration between members of the Core Performance Team.

Context

The fetchpriority attribute is a standard HTML attribute that can be used to indicate to the browser that a given resource should have a particular priority for when it should be considered for loading. Most commonly, using the attribute is recommended with a value of โ€œhighโ€, only on the most important image on a page.

It is a performance best practice to provide fetchpriority=โ€highโ€ on the single image that is the โ€œLargest Contentful Paint elementโ€ in the HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. markup, to indicate to the browser that this image should be prioritized over other resources that would compete with it for networknetwork (versus site, blog) bandwidth.

Largest Contentful Paint (LCP) is one of the three Core Web Vitals metrics, and it represents how quickly the main content of a web page is loaded. Specifically, LCP measures the time from when the user initiates loading the page until the largest image or text 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. is rendered within the viewport.

Quoted from this article about optimizing LCP

As mentioned above, the Largest Contentful Paint element can take different forms, it may be an image, text, video, or other resource. However, most commonly the LCP element on WordPress sites is an image, concretely 42.4% on desktop and 38.2% on mobile based on HTTP Archive data from February 2023. Of those sites, less than 0.03% have fetchpriority=โ€highโ€ on their LCP image, so it is safe to say that introducing support in WordPress core will benefit almost all of them.

You can learn more about the fetchpriority attribute and how it should be used to optimize image performance in this article.

Proposed solution

WordPress core already comes with a mechanism to detect which image(s) not to lazy-load because they are likely in the viewport, which includes the potential LCP image. Bringing fetchpriority=โ€highโ€ to images in WordPress core should make use of that existing logic for the loading attribute, which was added in WordPress 5.9. However, the two attributes should still function independently of each other. Furthermore, a few additional aspects need to be taken into consideration and implemented as additional heuristics that only apply to the fetchpriority attribute, but not the loading attribute.

Initially, the two attributes may seem like they are opposites. An image that should be lazy-loaded should not have a high priority, and vice-versa. The usage of fetchpriority=โ€highโ€ however needs to be a bit more nuanced: It should only be loaded on the single most important image on the page. This is different from loading=โ€lazyโ€ which should be omitted on any image above the fold โ€” which sometimes may be just the LCP image, while in other cases it may be multiple images.

In other words, fetchpriority=โ€highโ€ should only ever appear on a single image at most.

Scope

While the fetchpriority attribute is available on a few different HTML elements, the scope of this proposal is only to use the attribute on images, specifically to add it to the likely LCP image of a page so that the browser knows to load it earlier than other resources that may be competing with it.

Performance impact

Based on benchmarks conducted by members of the Core Performance Team, adding fetchpriority=โ€highโ€ to the LCP image typically improves LCP performance by 5-10%, which is a notable win for adding a simple attribute to an image 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.). In some instances the enhancements can even be close to 30%, like in an example from the aforementioned article.

Browser compatibility

While the fetchpriority attribute is a relatively new attribute first introduced in 2022, it was standardized in February 2023 and is supported by all Chromium based browsers, which make up for ~70% of browser usage based on caniuse.com. Support was recently added in WebKit, and is currently available in the Safari 167 Tech Preview. Firefox has expressed positive feedback on the feature, and a ticket to support it is available. Despite not every major browser supporting the attribute, it is a progressive enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature., i.e. fully backward compatible: A browser that does not understand the attribute will ignore it, and its presence wonโ€™t cause any adverse effects.

Effectively, this enhancement is only about adding the fetchpriority=โ€highโ€ attribute to the LCP image, which does not pose any risk of breaking backward compatibility.

Default behavior and customization

Similar to how WordPress core handles omitting the loading attribute on specific images, it should add the fetchpriority attribute by default on the LCP image based on server-side heuristics. While the exact heuristics are still being defined, it should be noted that the two attributes will never be used on the same image as they should be mutually exclusive.

Developers will be able to customize where the attribute should be used, e.g. when using the functions wp_get_attachment_image() and get_the_post_thumbnail(), both of which should receive support for the attribute. The default addition of the attribute to in-content images will also be customizable using a new filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output., which will likely be similar to existing image attribute filters like wp_img_tag_add_loading_attr or wp_img_tag_add_width_and_height_attr.

Alternatives considered

Alternatively to fetchpriority=โ€highโ€, images can also be prioritized through other means, e.g. a link[rel=โ€preloadโ€] tag in the head, or a Link response headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitorโ€™s opinion about your content and you/ your organizationโ€™s brand. It may also look different on different screen sizes.. While those two approaches in principle allow the browser to know about loading the image even earlier, in practice there isnโ€™t a notable difference, especially when using the tag, as at that point the entire HTML will already be loaded.

Either of the alternative approaches would furthermore require WordPress core knowing about the image in the page load lifecycle before it is even included in the output, which makes them more complex to implement in a way that is not justifiable given the little benefits it would bring over using fetchpriority=โ€highโ€ on the actual image tag.

Contributing and testing this enhancement

An early version of the proposed enhancement can already be tested through the Performance Lab plugin, by enabling its Fetchpriority module, or alternatively through the Fetchpriority standalone plugin which uses the same underlying logic. It should be noted that the implementation is still being refined with additional heuristics to detect the LCP image, and since it is part of a pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. rather than within WordPress core, the customization options outlined above cannot be part of this early implementation. It should furthermore be noted that the plugin implementation relies heavily on WordPress coreโ€™s lazy-loading heuristics, whereas the plan for the eventual core implementation would be to decouple the two.

A WordPress Core 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. #58235 has been opened, and a pull request for WordPress core, including the aforementioned customization options will be worked on soon.
Your testing and feedback is much appreciated. Please share your ideas, questions and thoughts either in a comment on this post, in the pluginโ€™s support forum on wordpress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/, or on the GitHub repository.

Props to @tweetythierry @adamsilverstein @addyosmani @joemcgill @thekt12 for review and proofreading.

#fetchpriority, #images, #media, #performance, #performance-lab

Editor Chat Agenda: 3 May 2023

Facilitator and notetaker:ย @bph

This is the agenda for the weeklyย editor chatย scheduled forย  Wednesday, May 3, 2023, 14:00 UTC The meeting is held in theย #core-editorย channel in the Making WordPressย SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/.

  • Announcements
  • Project updates
  • Task Coordination
  • Open Floor โ€“ extended edition.

If you are not able toย attendย the meeting, you are encouraged to share anything relevant for the discussion:

  • If you have an update for the main site editing projects, please feel free to share as a comment or come prepared for the meeting itself.
  • If you have anything to share for the Task Coordination section, please leave it as a comment on this post.
  • If you have anything to propose for the agenda or other specific items related to those listed above, please leave a comment below.

#agenda, #core-editor, #core-editor-agenda, #meeting

A Week in Core โ€“ May 1, 2023

Welcome back to a new issue of Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Letโ€™s take a look at what changed on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between April 24 and May 1, 2023.

  • 7 commits
  • 21 contributors
  • 50 tickets created
  • 3 tickets reopened
  • 38 tickets closed

Ticketticket Created for both bug reports and feature development on the bug tracker.ย numbers are based on theย Trac timeline for the period above. The following is a summary of commits, organized by component and/or focus.

Code changes

Coding Standards

  • Remove an empty else statement in dbDelta() โ€“ #56982

Editor

  • Improve the 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.) field loading spinner alignment โ€“ #58136

General

  • Donโ€™t pass $action to wp_get_session_token() in wp_create_nonce() โ€“ #58181

I18Ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.

  • Use correct translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. function in wp-admin/includes/media.php โ€“ #58138

Text Changes

  • Typo fix in README.md โ€“ #58177

Themes

  • Improve performance of get_block_templates() โ€“ #57756
  • Remove unused parameter in query for get_block_templates() โ€“ #57736

Props

Thanks to the 21 people who contributed to WordPress Core on Trac last week: @audrasjb (3), @mukesh27 (2), @sergeybiryukov (2), @hellofromTonya (2), @neychok (1), @vladytimy (1), @mujuonly (1), @dd32 (1), @hztyfoon (1), @malavvasita (1), @davidbaumwald (1), @draganescu (1), @youknowriad (1), @flixos90 (1), @Presskopp (1), @jorgefilipecosta (1), @spacedmonkey (1), @brookedot (1), @krunal265 (1), @costdev (1), and @krupalpanchal (1).

Core committers: @audrasjb (3), @sergeybiryukov (2), and @oandregal (2).

#6-3, #core, #week-in-core

Performance Chat Agenda: 2 May 2023

Here is the agenda for this weekโ€™s performance team meeting scheduled for May 2, 2023 at 15:00 UTC.


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

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