Dev Chat agenda, January 10, 2024

The agenda for the first dev chat after the seasonal break is below. The meeting takes place on the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. channel of the Make 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/ on January 10, 2024 at 20:00 UTC .

(Update: 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/ testing requests have been added under the Releases heading.)

Welcome and housekeeping

All welcome.

Announcements

Whatโ€™s new in Gutenberg 17.4

Reminder: call for volunteers for 2024 major releases.

Highlighted Posts

Posts during the break were highlighted in the following post. Many of the items in that post are still relevant, including a reminder that the core 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. nomination period had been extended until January 12, 2024 at 23:59 UTC, to give more time forย Core contributorsCore Contributors Core contributors are those who have worked on a release of WordPress, by creating the functions or finding and patching bugs. These contributions are done through Trac. https://core.trac.wordpress.orgย to consider and nominate other contributors and/or themselves. Nominations post for 2024 core team reps.

In the last few days, there have been the following new posts:

A Week in Core โ€“ Jan 8, 2023 โ€“ big thanks to @audrasjb

On TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.ย between January 1 and January 8, 2024:

  • 19 commits
  • 20 contributors
  • 26 tickets created
  • 2 tickets reopened
  • 21 tickets closed

Phase 3, agency outreach recap @s1m0nd on an outreach exercise to enterprise WordPress agencies specializing in enterprise projects, inviting them to a series of informal show-and-tell sessions.

Update from the Developer Blogblog (versus network, site)

New design is live.

Whatโ€™s new for developers, December 2023.

Writers are invited for the following articles on the WordPress Developer Blog:

To volunteer or ask further queries, comment 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/ tickets linked. If you need further assistance, post a message in the in theย #core-dev-blogย channel.


Core-editor update

Props to @annezazu for this update from January 2, 2024.

For information:

Release updates

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.: 6.5

Existing links:

Gutenberg updates

Thanks @bph for sharing.

  • Gutenberg plugin 17.5 RC1ย is now available for testing
  • WordPress 6.5 Roadmap:ย a few features are already available in Gutenberg pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. and could use some testing and feedback (the links below are tracking issues)

Tickets for assistance

Tickets can be highlighted for this section of the agenda, priority will be given to 6.5 release items.

Open floor

#6-5, #agenda, #core-editor, #dev-chat

Performance Chat Summary: 9 January 2024

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

Announcements

  • Welcome to our new members of #core-performance
  • Request for reviewers of the draft 2024 Performance Roadmap document please
    • @clarkeemily We are aiming to receive feedback on the above document by the end of this week please โ€“ we would greatly appreciate everyoneโ€™s feedback and input into shaping 2024
    • You will notice in this document that the Priority Projects have changed shape to being:
      • WordPress interactivity performance
      • WordPress load time performance
      • Ecosystem activation
      • Performance measurement
    • Iโ€™d be interested in opinions as to whether we structure the sections of this meeting aligned to those projects from next week onwards?

Priority Projects

Server Response Time

Link to roadmap projects and link to the GitHub project board

Contributors: @joemcgill @swissspidy @thekt12 @mukesh27 @pereirinha

  • @swissspidy For performance translations I just pinged some folks for code review again now that the holiday break is over
  • @pbearne can add an issue to create PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher-based translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. files in the build tools?
  • @thekt12 Working on final bits of #59969ย PR#5718ย addressing review changes, 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. and updating corresponding Guttenberg PR.
  • @thekt12 Also, started working onย #60120 Iโ€™ll give it for first review this week
  • @joemcgill At the end of this meeting last week,ย @flixos90 @spacedmonkey and I had a useful conversation about improving our caching strategy 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. theme files (#59719), which has unblocked #60120. Jonny already created a PR for that issue which is ready for review.
  • @joemcgill @pereirinha also updated the PR for #59595, and I left some feedback yesterday. I think this is close save for a few details.

Database Optimization

Link to roadmap projects and link to the GitHub project board

Contributors: @mukesh27 @thekt12

  • @pbearne I updated the options autoload 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. follow the term changes

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 and link to the GitHub project board

Contributors: @mukesh27 @flixos90 @westonruter

  • No updates this week

Images

Link to roadmap projects and link to the GitHub project board

Contributors: @flixos90 @adamsilverstein @joemcgill @pereirinha @westonruter

  • @adamsilverstein I have an update on AVIF image support โ€“ Microsoft has added support for AVIF in Edge, since version 1.121, (release data Jan 7, 2024) โ€“ seeย https://learn.microsoft.com/en-us/deployedge/microsoft-edge-relnote-beta-channel#feature-update
    • I also confirmed this manually be opening test AVIF images in Edge (Canary) and everything worked as expected.
    • Assuming this lands in stable, we should be able to add support for AVIF to coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., see #51228
    • @mukesh27 Like WebP do we needs to make a module first for testing then merge into core?
    • @flixos90 I think to merely add support for the format, we could work directly against core. That was done the same way with WebP. Only if we wanted to make it a default or something, weโ€™d need a module IMO. Although at some point we may just ditch WebP and try to progress with AVIF only, depending on browser support
    • @adamsilverstein Support can already be tested withย https://github.com/WordPress/wordpress-develop/pull/4612, note you need a server that supports AVIF for it to work, typically PHP 8.1+ or Imagick built with AVIF support
    • @flixos90 mentioned @swissspidy your client-side image efforts would be super useful for this too, as it would unlock AVIF support for a lot more sites
  • @joemcgill An initial module for implementing auto-sizes for lazy-loaded images is ready in 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.. This web feature is already in Chrome Betas, and will likely roll out in the next few weeks, so Iโ€™d like to get this out for people to start testing. See:ย https://github.com/WordPress/performance/pull/904
  • @swissspidy For client-side image compression aka media experiments Iโ€™m working on a PRD and trying things out in my media experiments plugin

Measurement

Link to roadmap projects and link to the GitHub project board

Contributors: @adamsilverstein @joemcgill @mukesh27 @swissspidy @flixos90

  • @joemcgill Nothing new this week, but wanted to flag that the Performance Tests started failing in the 6.4 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". recently, in case anyone has time to dig into it later this week: #60127

Ecosystem Tools

Link to roadmap projects and link to the GitHub repo for Plugin Checker

Contributors: @mukesh27 @swissspidy

  • @mukesh27 For the Plugin Check, Iโ€™ve been providing support by conducting code reviews for open PRs. Additionally, Iโ€™ve raised an issue regardingย Behat test issue in PHP 8.0ย for investigation
  • @flixos90 Several PRs have landed in the plugin checker repo last week from I believe a new contributor? Iโ€™m not sure what their 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/ user name is, but that effort definitely deserves recognition! @rabmalin thanks!
  • @joemcgill It also looks likeย @foosantosย left some feedback onย https://github.com/WordPress/plugin-check/issues/283#issuecomment-1882241470ย regarding steps to releasing 1.0.0 of the plugin. It sounds like the Plugin Review team have several new blockers that need to be handled prior to that release, though Iโ€™m not sure where all of that is being coordinated. One of us should respond and see if we can get some visibility into issuesย @bordoniย has been working on and whether we can support in order to relieve some pressure from their team. @flixos90 Iโ€™m happy to take this on if you donโ€™t have time, but will defer to you, given you started that convo. @pbearne also offered to help.
  • @flixos90 It would definitely be great to find ways to better collaborate on both efforts. I donโ€™t understand the problems at this point since I have no insight in the discussions that are happening. We could also actively support addressing their blockers which I think would be good for everyone
    • @clarkeemily asked @bordini how can we help here, and also get visibility into the behind the scenes planning that was mentioned in theย commentย above?

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27

  • @mukesh27 We have successfully completed theย Milestone 2aย tasks and their respective follow-up PRs for the Creating Standalone Plugins feature. This is set to be released in the upcoming version 2.8.0.

Open Floor

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

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

A Week in Core โ€“ January 8, 2024

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..
Yes, the Week in Core blogposts are back! ๐ŸŽ‰

Well, 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 January 1 and January 8, 2024.

  • 19 commits
  • 20 contributors
  • 26 tickets created
  • 2 tickets reopened
  • 21 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

Build/Test Tools

  • Increase the max old space size in Node โ€“ #59805
  • Remove svn debug command โ€“ #59805
  • Add a @ticket reference for WP_Customize_Manager::trash_changeset_post() test โ€“ #60183
  • Add a 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. for post trashTrash Trash in WordPress is like the Recycle Bin on your PC or Trash in your Macintosh computer. Users with the proper permission level (administrators and editors) have the ability to delete a post, page, and/or comments. When you delete the item, it is moved to the trash folder where it will remain for 30 days. hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same. executed when trashing a changeset โ€“ #60183
  • Use assertSame() in some newly introduced tests โ€“ #59655
  • Use more specific assertions in wp_scheduled_delete() tests โ€“ #59938

Customize

  • Pass the previous status to post trash hooks when trashing a changeset โ€“ #60183

Docs

  • Add a mention of appearance-tools as a possible value for add_theme_support() โ€“ #60118
  • Fix typo in twentyten_header_image_height 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.โ€™s docblockdocblock (phpdoc, xref, inline docs) โ€“ #59651
  • Replace โ€œsanityโ€ with โ€œconfidenceโ€ for inclusive language โ€“ #60187

Editor

  • add CSSCSS Cascading Style Sheets. var parsing for fontSize and fontFamily โ€“ #59982
  • add layout classes to legacy Group inner container โ€“ #60130
  • add setting to disable layout content and wide size controls โ€“ #60133
  • add size and repeat to background image support โ€“ #60175

Fonts

  • Fix font_style typo in wp_print_font_faces() โ€“ #59858

HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. 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.

  • Add explicit handling or failure for all tags โ€“ #60092

Site Health

  • Include site ID in debug data on 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 installations โ€“ #60081

TaxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies.

  • Check for empty term after DB sanitization in wp_insert_term() โ€“ #59995

Themes

  • Add theme support for appearance tools โ€“ #60118

Upgrade/Install

  • Check theme compatibility during bulk upgrades โ€“ #59758

Props

Thanks to the 339 people who contributed to WordPress Core on Trac: @mukesh27 (7), @andrewserong (3), @dmsnell (2), @hellofromTonya (2), @noisysocks (1), @ramonopoly (1), @salcode (1), @lakshmananphp (1), @fgiannar (1), @kraftbj (1), @joemcgill (1), @isabel_brison (1), @jonsurrell (1), @flixos90 (1), @sebastienserre (1), @tmatsuur (1), @rajinsharwar (1), @audrasjb (1), @dartiss (1), and @joelcj91 (1).

Congrats and welcome to our new contributor of the week: @lakshmananphp.

Core committers: @sergeybiryukov (8), @isabel_brison (5), @desrosj (2), @jorbin (1), @bernhard-reiter (1), @costdev (1), and @hellofromtonya (1).

#6-5, #core, #week-in-core

Performance Chat Agenda: 9 January 2024

Here is the agenda for this weekโ€™s performance team meeting scheduled for Jan 9, 2024 at 16:00 UTC. If you have any topics youโ€™d like to add to this agenda, please add them in the comments below.


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

Developer Blog editorial meeting summary, January 4, 2024

Summary of the WordPress Developer Blogblog (versus network, site) meeting, which took place in the ย #core-dev-blog channel on the Make 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/. Start of the meeting in Slack.

Attendees: @bph, @marybaum, @webcommsat, @greenshady, @ironnysh, @magdalenapaciorek

Last meeting notes: Dev Blog editorial meeting summary, December 14, 2023, Thank you to @webcommsat for the summary.

Updates and new post

Theย WordPress Developer Blogย redesign is now live on site. Itโ€™s easier to read and better connected to the other Developer Resources. Contributors were asked to browse the new site and if they find something quirky, to let developers know via an issue on the GitHub repo.

There was only one post published since our last meeting:
Extending plugins using custom SlotFillsย by Ryan Welcher, reviewed by Justin Tadlock, JuanMa Garrido and Mary Baum.

Project Status

The project board, to follow along, is available 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 by the repository owner. https://github.com/. There is a new column on the project board: โ€œNeeds writerโ€. (see below).

Posts in Progress:

To Do

The Todo-List is growing, and we need to increase efforts to get them published.

Topics in need of a writer

If you are interested in taking on a topic from this list or know someone who would be a good person to writer about them, comment on the Issue or pingPing The act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test itโ€™s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of โ€œPing me when the meeting starts.โ€ @bph in slack either in the #core-dev-blog channel or in a DM.

Posts in need of reviews:

New Topics approved

Open Floor

During the project status section, the question was raised if there should be two additional columns on the project board to be more explicit as to the current state of a topicโ€™s progression to publishing.

The discussion made clear that there is a need for more explicit steps between reviews on a writerโ€™s journey to a published article. It also made clear that more details are needed about the first and second review entail and the responsibilities/task for authors and reviewers.

Proposed steps

Birgit will connect with other content producing teams to inquire about their process and learn how they handle reviews in the project boards. Meanwhile, we could test the following workflow for a few articles.

  • Writer writes and moves project card to โ€œReady for 1st reviewโ€
  • When done, reviewer moves the card to โ€œDone w/ 1st Reviewโ€, adding comments to Google Doc or to the issue.
  • Writer edits and moves card to Ready for 2nd review
  • When done, Reviewer moves card to โ€œDone w/ 2nd Reviewโ€, adding comments to Google Doc or to the issue
  • Writer edits some more and moves content to Blog โ€“ โ€œReady to Publishโ€
  • โ€œFinal Publishing checkโ€ โ€“ only a separate step for writers getting their first post over the finish line. Experienced writers, use the Pre-publish check list and publish their posts.

The two additional columns are now available on the project board.

Next meeting 1st of February 2024 at 13:00 UTC in the #core-dev-blog channel

Props to @greenshady for review.

Phase 3 Agency Outreach Recap, December 2023

Phase 3โ€™s focus on collaboration, revisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision. and workflow takes 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/ further into enterprise territory. Inspired by @annezazuโ€™s earlier outreach exercise, and following up on my own proposal, I took the opportunity of availability during December 2023 to reach out to WordPress agencies specialising in enterprise projects, inviting them to a series of informal show-and-tell sessions.

The aim was to gain an insight into enterprise clientsโ€™ requirements, and how agencies currently address them. Sessions were offered on a semi-confidential โ€˜Chatham House Ruleโ€™ basis, to avoid any concerns around client confidentiality; but I committed to publishing a summary of what we saw and learned.

Take-up was disappointing.

Invites were sent via several different outreach channels, chosen primarily based on the personal connections of the people involved: WordPress VIPโ€™s partner networknetwork (versus site, blog), the Enterprise channel in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds 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/, and the News Nerdery community. This ought to have touched around 100 enterprise-centric agencies. I scheduled 9 one-hour sessions over a 10-day period, at times to suit all timezones. There was capacity for around 40 agencies to participate; but in the end, fewer than 5 agencies signed up. A few others indicated an interest, but did not get round to signing up.

There are many possible explanations. Perhaps December was simply poor timing. Our call for presentations was kept deliberately open and vague; perhaps it should have been more specific. Informal walkthroughs were requested, to minimise the burden of planning and preparation, but perhaps folks would have been more comfortable giving formal presentations.

What is clear is that Core currently lacks warm and clear communication channels with the agency ecosystem โ€“ at a time when such channels would be particularly useful for both parties.

It also follows that the following observations are based on a smaller snapshot of enterprise usage than was hoped for.ย 

Enterprise development practice moves slowly.

Agencies and their clients now seem comfortable with blocks, as delivered in Phase 1: this is largely backed up by data in the recent SOEWP survey.

But we saw no examples yet of Phase 2-style โ€˜site customisationโ€™: agencies are still sticking with familiar models based on site metadata and Settings pages, even when Phase 2 functionality would probably deliver a better outcome.

An enterprise may only revisit its tech stack every 3 or 4 years, with no reason to fix what isnโ€™t broken. Agencies are probably working on multiple enterprise contracts simultaneously, theoretically giving them more opportunities to embrace new possibilities; but with a decade of pre-Gutenberg โ€˜muscle memoryโ€™, they have a commercial incentive to stick with what they know until proven otherwise.

Collaboration will inevitably happen outside WordPress.

Enterprise employees spend their entire day in office suites like Google Docs or Microsoft 365; social media planning solutions; general collaboration platforms like Jira or Asana; industry specific tools like Desk-Net for newsrooms; technical platforms like 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/.

If businesses already have these tools, integrated into their company-wide workflow, for tasks beyond website management, itโ€™s a bigger challenge for WordPress to force its way into the picture.

Collaboration also happens before WordPress arrives on the scene, in the definition of a โ€˜house styleโ€™, or page templates, which are then hard-coded into the WordPress workflow. Web content creators get limited flexibility, or perhaps none at all, simply filling in boxes. This may seem like the antithesis of user empowerment. But:

  • The business gets predictable, consistent results, always on-brand, delivered efficiently.
  • Employeesโ€™ main concern is to get the job done quickly, and move on to their next task.
  • Agencies can tailor UIUI User interface and UXUX User experience to very specific outcomes, minimising the support burden.

Real-time content collaboration is not a current user priority.

We saw no โ€˜cowpaths to be pavedโ€™ when it comes to real-time collaboration on normal content.

The closest we have come has been from an agency working with large news organisations: they described multiple people swarming on a single piece of content, but working on different aspects of it. There would only be one author writing in โ€˜the content areaโ€™: but they would be supported by a picture editor, an SEO manager, a headline manager, a โ€˜homepage managerโ€™ deciding where it will appear. (This is broadly in line with @annezazuโ€™s earlier findings.)

But some content types are, by definition, real-time and multi-author. One agency brought up the example of โ€˜live blogsโ€™. If a news site runs โ€˜live blogsโ€™, typically for major โ€˜breaking newsโ€™ events or sports coverage, these will usually be among their most popular articles of the day. (Source: Press Gazette, 2023.)

Publishers dislike โ€˜live blogblog (versus network, site)โ€™ solutions embedded from third-party platforms, which do not deliver search-engine benefits. We saw one custom WP-based solution running in the back end, which suffered from the current inability to have multiple authors on the same edit screen. We also know of front-end based, Gutenberg-compatible liveblogs which allow for multiple authors and more creative content entry methods.

We certainly heard a desire for multiple users to collaborate around a single content item. But โ€˜Google Docs in the editor componentโ€™ is not the only possible meaning of collaborative creationโ€ฆ and may not even be the main one.

Revisions need work.

The current implementation of Revisions predates blocks, and is barely usable given the amount of code now held in post_content.

One agency demonstrated work they have done for a major European newspaper, refined over several years, which offers 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.-compatible WYSIWYGWhat You See Is What You Get What You See Is What You Get. Most commonly used in relation to editors, where changes made in edit mode reflect exactly as they will translate to the published page. comparison, with red and green highlighting of changes. They are open to the idea of sharing their code with Core; and are investigating how this might happen.

It was noted that collaborative editing may have unintended consequences for the current Revisions model. Right now, when only one user can edit and save at any one time, we know exactly who made each change, and when. This can be important for corporations in regulated industries. We lose that simple attribution to an individual, if multiple users are editing simultaneously. (Also noted in @leogermaniโ€˜s GitHub discussion thread.)

In conclusion

  • Core currently lacks channels for communicating and engaging with the agency ecosystem.
  • Collaboration on aspects of the website often happens away from the website, and involves people who never touch the website.
  • WordPress cannot realistically be the sole collaboration space for many enterprises and publishers, even as relates to a WordPress-based publishing workflow.
  • The ability to collaborate across different components of a post is currently a greater priority than collaborating within the post_content itself.
  • Beware of unintended consequences โ€“ for example, collaborative editing breaking our current Revisions model.

Where next?

Outside of immediate steps I can take, like supporting the agency mentioned to package its work on revisions for Core or arranging future sessions with agencies who expressed interest, we wanted to open the floor to hear from others around ways to improve uptake for enterprise agencies.

  • What do you think would help?
  • What should we try next to spark these conversations and bring feedback into this next phase?

My thanks to @annezazu and various members of the Core team for participating in this initiative; and to enterprise agency Big Bite for sponsoring my time in organising and running these sessions.

#feedback, #phase-3, #summary

Whatโ€™s new in Gutenberg 17.4? (03 January)

โ€œWhatโ€™s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/โ€ฆโ€ posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, hereโ€™s an overview of different ways to keep up with Gutenberg and the Site Editor project (formerly called Full Site Editing).

Gutenberg 17.4. has been released and is available for download!

For this release, contributors reached a milestone for data views, increased feature parity between site and post editors, improved performance across a few areas and added functionality to current features, including List view and Style RevisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision..ย 

With this new version, users can expect more flexibility with background images for the Group 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. and fixes to improve support for design tools for classic themes.

Table of Contents

Data Views: List of Templates stable

Screenshot of the new Template Data view

The Data Views work reaches a new milestone: stabilizing this new experience for the template screen, making it available outside the experiments flag and without the additional โ€œViewsโ€ options. Please consider using this new experience and provide feedback! (57109)

Style revisions: Stylebook integration and pagination

Screenshot of the Styles Revisions sidebar.

Work continued evolving the usefulness of Style Revisions, with added pagination for better navigation and the integration with the Stylebook. When reviewing revisions with the Style Book, you can better understand the impact of the changes for both within the template youโ€™re looking at and across individual blocks. (56799) (56800)

Background Images: size and repeat controls.

Screenshot of Group Block Background images settings.

This release also adds controls to the background image to adjust size and toggle repetition for the Group Block. This allows you to set the background image to โ€œCoverโ€ (default), or to โ€œContainโ€, keeping the aspect ratio intact, and when set to repeat it only repeats in one dimension. With the โ€œFixedโ€ option, you can set a custom display width, and by selecting the repeat feature, the image repeats over the canvas size of the block. (#57005)ย 

List View: Right click access to Block Setting

Screenshot of List view left columns with a right click menu for the Block settings.

A right click on List View opens up that blockโ€™s settings menu and gives fast access and streamlines editing. 50273

Other Notable Highlights

  • The site editor received an additional sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. panel already available to post editor screens. Unification of the interface and access to the same controls for page page attributes, post taxonomies, Discussion panel, and feature image panel, gives users more confidence in learning how to use it and allows as well to streamline development in the future. (57151, 57049, 57153, 57150, 57053, 57010)
  • The support for `appearanceTools` for classic themes has been expanded and improved for default color palette handling and duotone settings. (56131)

Changelog

Full changelog available

Enhancements

Components

  • Refactor experimental dropdown menu usages to the latest version. (55625)
  • Replace TabPanel with Tabs in the Block Inspector. (56995)
  • Replace TabPanel with Tabs in the editor Global Styles color palette. (57126)
  • ToggleGroupControl: Update large button size to 32px. (57338)
  • Update ariakit version. (57325)
  • CustomSelect: Add WordPressComponentsProps. (56998)
  • Modal: Improve application of body class names. (55430)
  • Components: Replace TabPanel with Tabs in the Block Inserter. (56918)

Site Editor

  • Add Page Attributes panel. (57151)
  • Add Post Taxonomies panel. (57049)
  • Add View Link. (57153)
  • Add the Discussion panel. (57150)
  • Add the featured imageFeatured image A featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts. panel. (57053)
  • Editor: Unify revision panel between post and site editors. (57010)
  • Social Link block: Obfuscate email address. (57384)

Design Tools

  • Background image: Add backgroundSize and repeat features. (57005)
  • Make sure theme color palette presets are output when appearance tools are enabled. (57190)
  • Move the tools panel to the left of the inspector. (55785)

Global Styles

  • Global styles revisions: Add pagination. (56799)
  • Global styles revisions: Integrate stylebook. (56800)

Bug Fixes

Components

  • DropdownMenu V2: Add fallback styles for when subgrid is not supported. (57327)
  • DropdownMenuV2: Do not collapse suffix width. (57238)
  • Fix DayButton dot position and expand the Button area. (55502)
  • Fix logic of has-text class addition in Button. (56949)
  • Palette Edit: Donโ€™t discard colors with default name and slug. (54332)
  • PaletteEdit: Consider digits when generating kebab-cased slug. (56713)
  • RadioControl: Fully encapsulate styles. (57347)
  • Tabs: Make sure individual Tabs are linked to the correct TabPanels. (57033)
  • Text selection: Show CSSCSS Cascading Style Sheets. hack to Safari only. (57300)
  • Truncate: Improve handling of non-string children. (57261)
  • FormTokenField: Handle disabled prop on internal Button. (57187)
  • tab panel: Donโ€™t render hidden content by default. (57046)

Block Editor

  • Exclude disabled buttons when setting initialIndex of NavigableToolbar. (57280)
  • Fix BlockSwitcher checks for showing a Dropdown menu or not. (57047)
  • Fix block lock toolbar item stealing focus when mounted with StrictMode. (57185)
  • Fix content lock UIUI User interface regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5.. (56974)
  • Fix vertical overflow when inserter is open in post and site editor. (57127)
  • Hide drop indicator where block isnโ€™t allowed to drop. (56843)
  • InserterListItem: Use item.isDisabled to detect disabled item. (57161)
  • More settings tip: Add explicit font size. (55835)
  • Writing flow: Absorb partial multi selection dispatching. (47525)
  • Fix the block โ€˜editโ€™ property validation. (57193)

Block Library

  • Audio: Hide some controls when multi-editing blocks. (57376)
  • Disable resizing when the viewport is small and wide-aligned. (57041)
  • Gallery: Hide some controls when multi-editing blocks. (57378)
  • Image Block: Get lightbox trigger button ref via data-wp-init. (57089)
  • Image: Hide caption control when multi-editing images. (57357)
  • Video: Hide some controls when multi-editing blocks. (57375)
  • Image Block: Fix deprecation when width/height attribute is a number. (57063)

Patterns

  • Fix: Viewport width not accounted for in the Site Editor > Patterns view. (55803)
  • Override all the labels of the pattern categories taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies.. (57094)
  • Pattern CategoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging.: Change show_tagcloud to false. (57212)
  • Patterns (unsynced): Prevent infinite loops due to recursive patterns. (56511)

Site Editor

  • Fix image upload 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.. (57040)
  • Reduce clearance around the Frame in the site editor. (57023)
  • Swap Template: Show the right templates for the right post type. (57149)
  • Save Button: Fix the translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. of the Activate button. (57147)
  • SlotFill: Allow contextual SlotFillProviders. (56779)

Post Editor

  • Editor: Use visibility selector for PostTemplatePanel. (57224)
  • Fix: Code editor title width in classic theme. (56922)

Design Tools

  • Allow default duotone styles in classic themes. (57191)
  • StylesPreview: Fix endless 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 of ratio calculations when on the threshold of a scrollbar. (57090)

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.

  • Fix namespaces in nested interactive regions. (57029)
  • Fix Interactivity, not working on Classic Themes. (57396)

Collaborative Editing

  • Collab editing: Ensure block attributes are serializable. (57025)

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)

  • Font size picker: Fix Reset button focus loss. (57196)
  • a11yAccessibility 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): Apply focus style to revision items. (57039)
  • [a11y] Fix: Use spans instead of headings on data views table view page title. (56956)

Performance

Block Editor

  • Block: Combine store subscriptions. (56994)
  • Combine selectors in the โ€˜BackgroundImagePanelItemโ€™ component. (57159)
  • InnerBlocks: overlay: Remove viewport size condition. (57135)
  • Prevent layout re-rendering when changing selected block. (57136)
  • Prevent re-rendering the editor 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. when the selected block changes. (57140)
  • Rewrite moving animation for better load performance. (57133)
  • Rich text: Avoid block editor subscription if not selected. (57226)
  • Try removing extra memoization for individual style panels. (57160)
  • hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.: Manage save props in one place. (57043)

Block Library

  • Gallery: Combine useSelect calls. (57240)
  • Image: Reduce โ€˜block-editorโ€™ store subscriptions. (57358)
  • List: Avoid useSelect in block render. (57077)
  • Blocks: Simplify/optimize isUnmodifiedBlock. (56919)
  • InnerBlocks: Combine store subscriptions. (57032)

Components

  • Navigator: Use CSS animations instead of framer-motion. (56909)
  • useSelect: Only invalidate on subscribe if store changed. (57108)

Experiments

Data Views

  • Add hover style to table rows. (57058)
  • Add: See revisions template action. (57175)
  • Code Quality: Update: Reuse view revisions action on templates and pages. (57208)
  • DataViews: Add list layout to templates. (57014)
  • DataViews: Align 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. implementations. (57059)
  • DataViews: Centralize control of filter visibility in the Filters component. (57056)
  • DataViews: Close actions menu upon switching layouts. (57015)
  • DataViews: Display column header when the field is only filterable. (57051)
  • DataViews: Fix bug on operators count for table layout. (57048)
  • DataViews: Improve naming for easy identification in ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org devtools. (57385)
  • DataViews: Improve preview. (57116)
  • DataViews: Make deferredRendering prop optional. (57334)
  • DataViews: Make getItemId optional. (57308)
  • DataViews: Make filters footprint more condensed. (56983)
  • DataViews: Mark the new Templates pages as stable. (57109)
  • DataViews: Memoize onSelectionChange callback. (57390)
  • DataViews: Remove paginationInfo prop from ViewComponent. (57306)
  • DataViews: Remove reference to edit site class. (57075)
  • DataViews: Rename operatorsFromField to sanitizeOperators. (57050)
  • DataViews: Update onChangeView memoization. (57393)
  • DataViews: Update documentation. (57305)
  • DataViews: Use SelectControl for selecting a page. (57215)
  • Dataviews: Simplify pagination. (57071)
  • Fix: Empty dropdown(s) on the grid view. (57316)
  • Fix: Template list title font styles. (57027)
  • Sort order: Use Unicode characters instead of SVG icons. (56833)
  • Update: Make secondary actions trigger always visible. (57174)
  • Use default variants for Filter and View buttons. (57057)

Patterns

  • Fix broken undo history stack for Pattern Overrides. (57088)
  • Fix unsaved pattern not reflecting on pattern overrides. (57148)
  • [Pattern Overrides] Use a single checkbox to turn on pattern overrides for all allowed attributes. (57009)

List View

  • Allow right-click to open block settings dropdown, add editor setting. (50273)

Documentation

  • Add new section on markup representation of a block. (57230)
  • Added additional explanations to attributes and supports sections. (57120)
  • Added documentation for the text-decoration-control component. (57184)
  • CardHeader used instead of CardFooter. (45585)
  • Components: Update TypeScript-related tips in Contributing Guide. (57267)
  • Doc: Block Wrapper โ€“ enclose HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. 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.), use correct keyword supports not support. (56906)
  • Docs/getting started readme. (57223)
  • Docs: Add a new โ€œBuild your first blockโ€ tutorial to the Getting Started section of the BEH. (56931)
  • Docs: Fundamentals block development/block in the editor โ€” add page to manifest (toc). (57179)
  • Docs: Fundamentals of Block Development โ€“ block in the editor. (56488)
  • Enforce heading sentence case throughout the BEH. (57143)
  • Fix grammar and typos in the Block Development Environment doc. (57123)
  • Fix incorrect links in ToggleGroupControl docs. (57236)
  • Fix: Typo on footnotes docs. (57348)
  • Fixes heading hierarchy in block filters. (57239)
  • Minor heading to improve readability and reference. (57102)
  • Platform Docs: Fix missing link. (57145)
  • Remove Radix UI-related documentation. (57336)
  • Remove links to excalidraw diagrams from images. (56980)
  • Remove the โ€œHow to use 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 in the Block Editorโ€ documentation. (57166)
  • Remove unnecessary TOCs from documentation. (57087)
  • Restore descriptions for deprecated button props. (37690)
  • Small heading fix. (57098)
  • Snackbar: Remove __unstableHTML prop from TS. (57218)
  • Update block toolbar and settings sidebar image. (57203)
  • fix: Updated the link for โ€œBuilding a custom block editorโ€. (57319)

Code Quality

  • Add missing block/theme jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. $schema property. (57201)
  • Add missing period in block descriptions. (57131)
  • Fix code style in Gutenberg_HTML_Tag_Processor_6_5. (57030)
  • Font size picker: Use Button API for keeping focus on reset. (57221)
  • Mobile: Fix getPxFromCssUnit circular dependency. (57045)

Block Editor

  • Editor: Move the ExcerptExcerpt An excerpt is the description of the blog post or page that will by default show on the blog archive page, in search results (SERPs), and on social media. With an SEO plugin, the excerpt may also be in that pluginโ€™s metabox. panel to the editor package. (57096)
  • Refactor useCanContextualToolbarShow for simplicity and clarity. (56914)
  • Remove unnecessary isDisabled option on useShortcut for BlockToolbarPopover. (56907)
  • Replace block variation buttons with ToggleGroupControl. (45654)
  • Replace isSmall prop #53560. (53599)
  • Several little refactors. (57107)
  • useBlockTypesState: Divide useSelect call into two. (57163)
  • useInputRules: Remove unneeded check for inputRule. (57164)

Components

  • Adding unit tests for useCompositeState to Composite component. (56645)
  • Delete experimental radix-ui based DropdownMenu component. (55626)
  • GradientPicker: Use index while iterating over gradient entries to avoid React โ€œduplicated keyโ€ warning. (57361)
  • TabPanel: Refactor unit tests to @ariakit/test. (57302)
  • Tabs: Update styling to more closely match previous implementation. (57275)
  • ToggleGroupControl: Fix snapshots. (57367)
  • Move kebabCase() function from block-editor package and mark it as a private API. (56758)

Block Library

  • Gallery Block: Remove unused attributes property in ShortcodeShortcode A shortcode is a placeholder used within a WordPress post, page, or widget to insert a form or function generated by a plugin in a specific location on your site. transformation. (57356)
  • Remove cruft in Button block editor styles. (30950)
  • Tag Cloud: Replace โ€˜withSelectโ€™ HoC with โ€˜useSelectโ€™. (57194)

Global Styles

  • Global styles revisions: Refactor sticky pagination footer to use CSS. (57294)
  • Relocate revisions from fill to sidebar component. (57034)
  • Simplify the conditions in GlobalStylesEditorCanvasContainerLink. (57144)

List View

  • Editor: Move and unify the inserter and list view states. (57158)
  • Editor: Unify the list view shortcut registration and definition. (57200)
  • ListView: Replace prop drilldown by a stable ref in store. (57198)

Typography

  • Font Library: Consolidate existing API rest endpoints. (57282)
  • Quality: Replace wpKebabCase function with kebabCase function from components package. (57038)

Site Editor

  • Editor: Move the panel visibility state from the edit-post to the editor package. (57012)
  • Remove isResizing variable from layout component as it is always false. (57119)
  • Allow disabling and enabling comments. (57205)
  • Add basic test coverage for Navigation MenuNavigation Menu A theme feature introduced with Version 3.0. WordPress includes an easy to use mechanism for giving various control options to get users to click from one place to another on a site. editing mode. (56871)
  • Fix flaky Navigation focus mode test. (57016)

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.

  • Implement proposal to remove the WordPress-Docs ruleset. (56982)
  • 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.: Make menu and title labels in Gutenberg plugin translatable. (43500)

Modules API

  • Refactor, tests, and final dependencies array structure. (57231)

Tools

  • Dependency Extraction Webpack Plugin: Fix test issues. (57332)

Testing

  • Add an end-to-end test to check image upload working in site editor. (57086)
  • Components: Add 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. __experimentalExpandOnFocus unit tests for FormTokenField. (57122)
  • Global styles revisions e2e: Tidy up selectors to open revisions panel. (57146)
  • Migrate โ€˜Comments Formโ€™ end-to-end tests to Playwright. (57337)
  • Migrate Site Editor โ€˜settings sidebarโ€™ end-to-end tests to Playwright. (57392)
  • Migrate remaining โ€˜block switcherโ€™ end-to-end tests to Playwright. (57381)
  • e2e: Try to fix flaky font-library test. (57092)

Build Tooling

  • DependencyExtractionWebpackPlugin: Drop webpack4 and node<18. (57303)
  • Disable webpack perf hints when compiling packages. (57155)
  • Update to Node.js 20.x. (56331)

First time contributors

The following PRs were merged by first time contributors:

  • @dotslashbit: fix: Updated the link for โ€œBuilding a custom block editorโ€. (57319)
  • @koen12344: Restore descriptions for deprecated button props. (37690)
  • @kurudrive: Fix DayButton dot position and expand Button area. (55502)

Contributors

The following contributors merged PRs in this release:@andrewhayward @andrewserong @anton-vlasenko @arthur791004 @atachibana @bacoords @BenjaminZekavica @brookewp @c4rl0sbr4v0 @chad1008 @ciampo @colorful-tones @DAreRodz @dcalhoun @ddryo @derekblank @desrosj @dotslashbit @ellatrix @fluiddot @geriux @getdave @glendaviesnz @gvgvgvijayan @jameskoster @jasmussen @jeryj @jorgefilipecosta @jsnajdr @juanmaguitar @kevin940726 @koen12344 @kurudrive @luisherranz @Mamaduka @matiasbenedetto @mcsf @mhimon @mirka @ndiego @ntsekouras @oandregal @ockham @ramonjd @richtabor @SiobhyB @sirreal @stokesman @t-hamano @tellthemachines @TimBroddin @youknowriad @yuliyan


Props to @annezazu for co-writing, and @saxonfletcher for for designing assets for this post.ย 

#block-editor, #core-editor, #gutenberg, #gutenberg-new

Performance Chat Summary: 2 January 2024

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

Announcements

  • Welcome to our new members of #core-performance
  • Call for 2024 roadmap priorities https://github.com/WordPress/performance/issues/903 โ€“ the issue will remain open for project priorities untilย January 5, 2024

Priority Projects

Server Response Time

Link to roadmap projects and link to the GitHub project board

Contributors: @joemcgill @swissspidy @thekt12 @mukesh27 @pereirinha

  • @mukesh27 plan to review Jonnyโ€™sย Lazy load varientsย PR
  • @joemcgill Just getting back into things after the long holiday break. Left a review onย @spacedmonkey PR on #59969, whichย @thekt12ย has also been working on. I think weโ€™re close to having something there, just need to align on some details of the approach, I think
    • @spacedmonkey I think we need to consider b/c I think adding a new parameter of variations callback is the only way forward. We need to think about how we are going to implement this in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ as well.ย We have to support 2 versions back of WP coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. The blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher code is in Gutenberg.
    • @joemcgill agreed. If you can outline those concerns in the PR or ticketticket Created for both bug reports and feature development on the bug tracker., that would be helpful. I left you some feedback just about 30 min ago there
  • @pereirinha I plan to circle back this week to #59595

Database Optimization

Link to roadmap projects and link to the GitHub project board

Contributors: @mukesh27 @thekt12

  • No updates this week

JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a userโ€™s browser. https://www.javascript.com & CSSCSS Cascading Style Sheets.

Link to roadmap project and link to the GitHub project board

Contributors: @mukesh27 @flixos90 @westonruter

Images

Link to roadmap projects and link to the GitHub project board

Contributors: @flixos90 @adamsilverstein @joemcgill @pereirinha @westonruter

  • @joemcgill I think the Performance Lab module proposal for lazy sizes is about ready.ย @flixos90ย do you have any timing considerations before that is merged? https://github.com/WordPress/performance/pull/904
    • @flixos90 Iโ€™m not sure we should merge it right now given weโ€™re in the last bits of unbundling the pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party., and it would introduce a new module that ideally should be a standalone plugin. Potentially we could still merge it, but IMO the more pressing point would be to submit it to the .org directory. So that it can go to the review chain. Since itโ€™s a community feature pluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins, potentially we could request to expedite
    • @joemcgill Makes sense. I do think weโ€™ll end up wanting it to be in the PL plugin while we await the review, though, so we can get some early testing and feedback on the approach prior to potentially getting this into core during this cycle
    • @flixos90 I think my proposal at the end ofย https://github.com/WordPress/performance/issues/911#issuecomment-1866602771ย would allow for that. Curious what yโ€™all think about this. It would allow us long-term to start anything as a module, then make it a plugin once itโ€™s approved in the directory
    • @joemcgill I like the idea. I would prefer we work towards a clean code separation between modules and plugins, so itโ€™s obvious which are which.
    • @flixos90 There would still be a transition involved though. For instance, if we merge this now, it would go into theย modulesย folder, as only those are actually included and loaded in PL.
      Once it would be approved on .org, we could then move the code to theย pluginsย folder, with (probably) the only code change being the module 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. turning into the plugin header

Measurement

Link to roadmap projects and link to the GitHub project board

Contributors: @adamsilverstein @joemcgill @mukesh27 @swissspidy @flixos90

  • No updates this week

Ecosystem Tools

Link to roadmap projects and link to the GitHub repo for Plugin Checker

Contributors: @mukesh27 @swissspidy

Creating Standalone Plugins

Link to GitHub overview issue

Contributors: @flixos90 @mukesh27

Open Floor

  • Discuss #60120ย 
    • @spacedmonkey I donโ€™tย think this ticket should be blocked by other ticket. That ticket might take a long time to resolve.ย This issueย canโ€™tย be resolved by the next release. The only thing to decide is if we make the cache group global.
    • @joemcgill I would hope to have an approach for #59719 (the blocking ticket) resolved very shortly and I agree that #60120 should be resolved in this release cycle.
    • @spacedmonkey With theme data, most of it should be global caches in 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 context
    • @flixos90 I completely agree that this should receive a cache group. Iโ€™m curious though why that is urgent. What are the actual problems of having this in the global cache group?
    • @spacedmonkey The default cache groupย isnโ€™tย a global cache group. Not being in a cache group, means that the cache group can not be cleared.
    • @joemcgill By โ€œdefault cache groupโ€ I assume you are talking about the โ€œthemesโ€ cache group. That group is also not persistent without a 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., so one of the questions is whether we need to introduce a new cache group, or revisit the way theme data is cached.
    • @spacedmonkey The default cache group is that, a group called default which is where is stored if no group is defined, as current.
    • @pbearne I would be happy to make the changes as needed
    • @joemcgill Thanks for clarifying what you meant by default. What do you mean by โ€œglobalโ€
      • @flixos90 Global groups apply to an entire multisite
    • @flixos90 Makes sense that itโ€™s probably not optimal to use a non-global cache group. But we shouldnโ€™t just useย themes, thatโ€™s the tricky part. Surely we could just make up a new group name for a new global group and fix this issue, but I think then it could be that group name would need to be changed based on the decision from #59719
    • @spacedmonkey Cache groups can be local to a site like posts or global in multisite like networknetwork (versus site, blog) or user
    • @flixos90 To be fair, even theย themesย group is only global if itโ€™s set to persistently cache. Since we probably want the data here to be persistently cached, it would make sense to make that group (whatever it would be called) global
    • The rest of this discussion continues in Slack from here https://wordpress.slack.com/archives/C02KGN5K076/p1704215017254669

Our next chat will be held on Tuesday, January 9, 2024 at 16:00 UTC in the #core-performance channel in Slack.

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

Performance Chat Agenda: 2 January 2024

Here is the agenda for this weekโ€™s performance team meeting scheduled for Jan 2, 2024 at 16:00 UTC. If you have any topics youโ€™d like to add to this agenda, please add them in the comments below.


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