The WordPress coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. development team builds WordPress! Follow this site for general updates, status reports, and the occasional code debate. There’s lots of ways to contribute:
Found a bugbugA 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.?Create a ticket in the bug tracker.
On November 10th, 2023 Gutenberg contributors met in a Hallway Hangout to discuss the best ways to triagetriageThe act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. the Extensibility Issues for inclusion into 6.5 or later version of WordPress.
TL;DR
The action items from this meeting are:
Go through the project board and add impact, effort, and next steps labels
Advocate for high-impact issues that are blocking adoption
Focus engineering efforts on lower hanging fruit issues that can be solved more easily
Have a check in meeting in early December to discuss progress
This hallway hangout is a continuation of prior hallway hangouts in the FSE Outreach Program about release specific updates. In this session, we’ll talk through some of what’s to come in the next WordPress release with a proposed schedule for March 26th. This is being shared early to help encourage more folks to tune in and to build some excitement for this next release.
How to join
If you’re interested in joining, the Hallway Hangout will happen on 2024-01-16 21:00 . A Zoom link will be shared in the core-editorSlackSlackSlack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/. channel before starting and all are welcome to join, whether to listen or participate, for as long or as little as you’d like. This will be recorded and recapped.
Agenda
At a high level, expect this to take the form of a free flowing demo/presentation going through as many release priorities as possible. @annezazu and @saxonafletcher will take point to demo and share what’s being worked on. Others might jump in to share as well depending on the roadmap post for 6.5 and where work stands by that point in the release cycle.
As a reminder, hallway hangouts are meant to be casual and collaborative so come prepared with a kind, curious mind. Depending on how large the session is, we may not get to all questions live on the call but we can always include follow up in the recap.
“What’s new in GutenbergGutenbergThe 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).
The latest release includes several new enhancements, loads of bugbugA 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. fixes, and continued work on Phase 3 features.
Improvements to accessibilityAccessibilityAccessibility (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) and writing flow
There are a few improvements that contribute to a better editing experience:
The Image and Media&Text blocks properly show the pressed state for the link button in the blockBlockBlock 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. toolbar (56123).
The buttons block now mimicks the list behavior: enter twice on the last button goes to the next line (56134).
New keyboard shortcut in the list view (CMD+A on Mac, CTRL+A on Windows) to select all blocks (54899).
Video showing how media blocks now show a toggled link button when linked, pressing Enter twice in the buttons block to escape it, and pressing CMD+A successively to expand the selection range.
Design tools: block spacing for Quote block
The Quote block has gained support for layout and so it’s now possible to control the spacing of its inner blocks (56064).
New block spacing control in the quote block.
Other notable highlights
Escape on Block Toolbar returns focus to Editor Canvas (55712).
Continue polishing the global styles revisionsRevisionsThe 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.: return the user to the editor and global styles panel after a revision is applied (55881), improve copy text (55868), load unsaved revision in the preview (55880).
Patterns: in the front-end, they show embeds (55979), and the site editor’s pattern page now shows theme patterns specified in theme.json (55877).
Changelog
See full changelog.
Enhancements
Block Library
Navigation block: Fix Inaccurate description of the Show icon button setting. (55429)
Query LoopLoopThe 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.: Add accessibility markup at the end of the loop in all cases. (55890)
Template Part: Add fallback to the current theme when not provided. (55965)
Update components to use __next40pxDefaultSize. (56022)
Tabs: Update subcomponents to accept full HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. element props. (55860)
TextControl: Add opt-in prop for 40px default size. (55471)
ToggleGroupControl: Add opt-in prop for 40px default size. (55789)
Interactivity APIAPIAn 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.
Server directive processing: Process only root blocks. (55739)
Block settings menu
Remove the extraneous template part title in replace control. (55603)
List View
Add keyboard shortcut to select all blocks. (54899)
Background Image Support: Hide the background image reset button when there’s no image. (55973)
Background image support: Fix focus loss when resetting background image. (55984)
Custom Link: Decode value in URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org input field. (55549)
Form block: Use type="submit" for buttons. (55690)
Image block: Add check for lightbox values during image block migrationMigrationMoving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies.. (56057)
Image block: Don’t show pointer cursor on linked image in the editor. (55882)
Lightbox: Fix button misalignment in gallery image. (56060)
Missing block: Use raw source for originalContent. (56014)
Navigation Link block: Register variations on post type / taxonomyTaxonomyA 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. registration. (54801)
Pattern: Fix regressionregressionA 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. error in post type templates. (55858)
Post feature image block: Wrap images with hrefs in an A tagtagA 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.). (55498)
Quote Block: Fix the Quote block layout supports. (55240)
Read More block: Reduce text decoration specificity. (56038)
Data Views
DataViews: Add missing key to ResetFilters component. (56189)
DataViews: Fix issue with irrelevant statuses. (55967)
DataViews: Fix nested button tags on sidebarSidebarA 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.. (56089)
DataViews: Fix pagination on manual input. (55940)
DataViews: Fix spacing issue in top-level bar. (56151)
DataViews: Fix status filterFilterFilters 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. upon switching the default views from the sidebar. (55856)
DataViews: Make items per page an even number. (55906)
DataViews: Reset pagination upon filter change. (55797)
Dataviews: Add a missing icon for the side by side view. (55925)
Components
DropdownMenu: Remove extra vertical space around the toggle button. (56136)
DropdownMenuV2: Prevent default on Escape key presses. (55962)
DropdownMenuV2: Use the Icon component to render radio checks. (55964)
Typography
Fix fatal error in WP_Fonts_Resolver::Get_settings(). (55981)
Font Library: Create fonts dir if a font face needs to use the filesystem. (56120)
Font Library: Fix font installation failure. (55893)
Block Editor
IframeiframeiFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the user’s browser.: Bubble events from html element instead of body element to fix drag chip positioning. (56099)
Post Featured ImageFeatured imageA 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.: Handling correctly when uploading a file without mime type. (56133)
Move clientId key to BlockContextualToolbar. (56008)
Patterns
Add context for translators to any unclear usage of “synced”. (55935)
Use existing download function for JSONJSONJSON, 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. downloads to fix non-ASCII encoding. (55912)
Inspector Controls
Global Styles: Don’t show “Apply Styles Globally” button in non-block based themes. (56033)
Template Editor
Templates: Update filter to call all of the individual methods. (55980)
Global Styles
Global styles revisions: Load unsaved revision item into the revisions preview. (55880)
Post Editor
Edit Post: Fix pattern modal reopening when making the title empty again. (55873)
Data Layer
CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. data: Fix wrong store results when page receives less items that what is stored. (55832)
Fix mismatching link control action buttons visual order and DOM order. (56042)
Escape on Block Toolbar returns focus to Editor Canvas. (55712)
Site Editor
Prevent sidebar focus in site editor on small screens. (55934)
Block Library
Heading level dropdown: Remove obtrusive tooltips in favor of visible text. (56035)
Performance
Tooling
Add a metric to trace template navigation in the site editor. (55796)
List View
ListViewBlock: Combine ‘useSelect’ hooksHooksIn 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.. (55889)
DataViews: Add: Ability to delete custom views. (55924)
DataViews: Add: Custom views headerHeaderThe 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. indication. (55926)
DataViews: Remove unnecessary label when no visible filters exist. (55838)
Documentation
Add a first block type page to the platform documentation. (56109)
Add new block development “Quick Start Guide” and update the create-block-tutorial-template. (56056)
Clean up DataViews docs: filter.id is not used. (55833)
DataViews: Document enableSorting and enableHiding. (55988)
Fix: 404 link in get-started-with-create-block docs. (55932)
Fix: Create metaMetaMeta 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. block link in block attributes documentation. (55804)
Fix: Filter duotone link on block-supports documentation. (55896)
Fix: Two invalidinvalidA resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. links on docs/contributors/documentation/README.md. (55843)
Update documentation to clarify workflow branchbranchA 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". for release package publishing. (56183)
Rich text: highlight format: Gracefully handle old span format. (56071)
Update Link Control labels to use gray-900. (55867)
Components
DisclosureContent: Migrate from reakit to @ariakit/react. (55639)
Divider: Migrate from reakit to @ariakit/react. (55622)
RadioGroup: Migrate from reakit to ariakit. (55580)
Site Editor
Core Data: Move the template lookup to core-data selectors/resolvers. (55883)
Don’t use ‘useEntityRecord’ to only dispatch actions. (56076)
Block Library
Navigation: Refactor the PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher render function to make it easier to make changes in the future. (55605)
Data: Fix ESLint warnings for the ‘useSelect’ hook. (55916)
Post Editor
Edit Post: Use a single ‘useSelect’ hook for getting selectors. (55902)
Colors
Add Unit testing for duotone enhanced pagination. (55542)
Patterns
Split up the block editor inserter patterns tab into separate component files. (55315)
Design Tools
Block styles: Remove __unstableElementContext in favour of useStyleOverride. (54493)
Tools
Issue Templates: Add default type labels to issue templates. (55826)
Label enforcer: Make the warning message less scary for new contributors. (55900)
Quote feature requestfeature requestA feature request should generally begin the process in the ideas forum, on a mailing list, as a plugin, or brought to the attention of the core team, such as through scope meetings held for each major release. Unsolicited tickets of this variety are typically, therefore, discouraged. label. (55862)
Testing
Disable ‘no-conditional-in-test’ ESLint rule for Playwright. (56088)
Fix ‘Block Switcher’ test file name for Playwright end-to-end tests. (55840)
Exploration to support Modules and Import Maps – this post shares the collaborative effort to explore native support for modern JavaScriptJavaScriptJavaScript 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/. modules and import maps within the WordPress ecosystem to enhance the developer experience. Details of how you can get involved with this initiative are in the post.
Please add any additional highlighted posts in comments.
Introduction
Update from coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.-editor (New section in the agenda)
Initially items relating to this will be posted as comments on the agenda by @annezazu and others.
Please also add your thoughts to the discussion on the future of the core-editor chat.
Forthcoming release updates
WordPress release: 6.4 – any new issues?
Any new updates on 6.4.x release team or dates for 6.4.2?
Are you able to help with future bugbugA 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? Bug scrubs post.
Tickets or Components help requests
Please add any items for this part of the agenda to the comments – tickets for 6.5 will be prioritized. If you can not attend dev chat live, don’t worry, include a note and the facilitator can highlight a ticketticketCreated for both bug reports and feature development on the bug tracker. if needed.
Open floor
If you have any additional items to add to the agenda, please respond in the comments below to help the facilitator highlight them during the meeting.
a) Josepha has asked in the Team Reps channel for highlights from the last year, if you have any item you feel should be included about core’s achievements or items in progress, please add them to the comments on this post for @webcommsat and @hellofromtonya who are preparing the bullet points to send for core.
b) Nominations for Core Team Reps: 2024 edition – reshare of the draft post to gather suggestions on timings related to the end date for nominations and the end of the voting period. The voting tool to use and whether an embedded voting blockBlockBlock 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. in discussion with other teams would be available for this edition to be finalized. Please do consider whether you could stand for the core team repTeam RepA 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. for next year.
register_block_core_template_part accounts for ~7% of load time ~80ms. The function calls
build_template_part_block_variations, which accounts for 99% of the function time. This function is called in almost every page. The root reason for this is deep down in the call stack it calls WP_Theme_JSON_Resolver::get_merged_data, which calls WP_Theme_JSON::__construct for parsing theme jsonJSONJSON, 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..
Another interesting thing we found is that by disabling build_template_part_block_variations, for pages that don’t require it, we found there is an improvement of ~80ms which align to the total time needed for register_block_core_template_part.
The challenge is how to tell apart pages that have variations from pages that don’t
@thekt12 In short – we can get some improvement for pages if we disable variations for pages we don’t need it. Root cause is however parsing of theme json.
@joemcgill Interesting! It sounds like the ongoing work to add improved caching to WP_Theme_JSON data is still the most promising improvement, if we can come up with a good strategy for doing so. #57789 Is that your read?
@thekt12 Yes, improving WP_Theme_JSON is the most promising improvement. In addition we can also disable variations for pages that don’t need them to be loaded.
@joemcgill So the question then is how to know when a variation needs to be loaded and when not?
@thekt12 Yes this is something I am trying to figureout.
@thekt12 A snapshot of before and after. And the change improve ~80ms in total load time too [link to image]
@joemcgill I think creating a TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.ticketticketCreated for both bug reports and feature development on the bug tracker. for further exploration would be the best next step, since this was originally only being discussed in the GB repo, but will require coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. changes, I believe.
@joemcgill Related to the above, I’ve been working on #59719 some this week, with hopes of having something sharable this week.
@pbearne I have refreshed #42441 and fixed an issue with update_options function. Does it need a proposal for core, or can it just get merged? Do we need/want an upgrade routine/CLICLICommand Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. command to remove all the oversized options from autoload list?
@joemcgill When we last looked at that issue, my understanding was that we weren’t totally sold that the approach to change the DB values was ready, or at least needed some broader consensus and testing. Not sure if @flixos90 had a different opinion. Regardless, having this refreshed and looked over with fresh eyes is wonderful!
Thanks for iterating on this. I’m planning to take another look at this today or tomorrow. We still have to indeed decide on what to do with the database value, but there were other issues in the original PR, so having an update is great.
@joemcgill At minimum, I would love to see the approach written up on the ticket rather than just in the PR so the DB changes being proposed are clear.
JavaScriptJavaScriptJavaScript 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/. & CSSCSSCascading Style Sheets.
@flixos90 I have continued iterating on https://github.com/WordPress/performance/pull/733, which is that new Speculation Rules module. I created a feature branchbranchA 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". for it yesterday, as this definitely shouldn’t ship until January or so, whenever that browser feature becomes generally available
Currently thinking about what would be the customization needs there and how that could be exposed via a simple APIAPIAn 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.. The Speculation Rules API is very bespoke in that it allows all sorts of nesting with “and” and “or” and “not” conditions, so I feel making that entire API e.g. a filterFilterFilters 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. would be too error-prone. And maybe it’s too low-level to expose at that degree entirely. But there are definitely certain more specific aspects that need to be customizable per site
I’m also in contact with some of the Chromium folks working on this on the browser side, to get a better sense of some of those implications
@joemcgill I’ve been working on some initial explorations for improving the way WP calculates the sizes attribute with some success. Working on wrapping up some initial exploration and writing up some options we may be able to pursue there.
@flixos90 Weston is OOO as mentioned above, but he has made a lot of progress on the image loading optimization efforts (using client-side detection). For example, https://github.com/WordPress/performance/pull/878 was merged into the feature branch last week
@joemcgill Nothing new from me this week, but I do have on my to do list to do a broader profiling report of 6.4 to identify any additional server timing opportunities for the 6.5 cycle.
@swissspidy On #59900 I shared some initial thoughts on using a proper test matrix for the core performance tests
@joemcgill Is there any specific feedback you’re looking for?
@swissspidy Maybe some thoughts on how we’d like the summary to look like on GH (there’s an example link in my comment), and how important it would be to be able to run the same matrix locally as well.
@clarkeemily we are intending to reach out to the pluginPluginA 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 review team again today to continue the remaining roadmap to v1.0.0 here https://github.com/WordPress/plugin-check/issues/283
@luisherranz Well, I was about to say that following up on last week’s mention of the exploration of a Modules API, I had just published this post in Make Core to make people aware of the initiative and collect feedback. But the same link just popped up in the middle of the conversation (I published it an hour ago)
@clarkeemily The performance have suggested organising an ‘End of Year Hallway Hangout‘ with the intention of having the following as a loose agenda:
Retrospective sharing field data for the cumulative performance impact of the performance team’s work in 2023
Potential questions/discussion/interpretation on metrics
As the web continues to evolve, so does our approach to building and managing JavaScriptJavaScriptJavaScript 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 WordPress. Looking to the future, a collaborative effort is underway to explore native support for modern JavaScript modules and import maps within the WordPress ecosystem. This exploration is geared towards enhancing the developer experience by embracing the capabilities of modern browsers.
Introduction
JavaScript modules have transformed the way developers write and organize JavaScript code. They provide a cleaner and more modular architecture, making code easier to maintain, test, and reuse across projects. Today, the vast majority of web browsers offer native support for JavaScript module syntax, offering performance benefits and unlocking new possibilities in how we develop and manage client-side scripts.
In this realm, it becomes essential for WordPress to keep pace with these advancements and start experimenting with the addition of native support for registering and enqueueing JavaScript modules — including generating an import map directly within WordPress.
The primary objectives of this initiative are:
To leverage the native JavaScript module system available in modern browsers.
To streamline the development process in WordPress using JavaScript modules.
To determine the most efficient and effective methods for handling dependencies and optimizing loading times.
Prior discussions and experiments
The following links are some preliminary discussions and experiments that touch upon JavaScript modules and related approaches to script loading within the WordPress ecosystem:
However, the journey toward a modern, module-friendly WordPress is still in its early stages, and the next steps will be instrumental in deciding how best to integrate module support in a way that benefits developers and users alike, without disrupting the stability and familiarity of the current WordPress experience.
The experimentation phase
The current plan involves conducting initial experiments within the GutenbergGutenbergThe 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/pluginPluginA 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. By exploring within this semi-contained environment, contributors will gain practical insight into constructing modules that are compatible with WordPress’ existing infrastructure. This experimentation will help make informed decisions on several fronts:
Deciding whether to extend the existing wp_enqueue_script function or introduce a distinct APIAPIAn 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. (like wp_enqueue_module).
Evaluating whether to maintain dependencies on the server vs relying completely on the client’s native resolution.
Establishing best practices for module identifiers, dependency registration, inline modules, preloading optimizations, and more.
Assessing integration challenges and ensuring backward compatibility.
It’s worth noting that while the experimentation will be kicked off using a separate API for simplicity’s sake, this doesn’t necessarily predetermine the final form of the proposal.
After conducting experiments, collecting insights, and incorporating the feedback received, an update that will outline a more specific implementation plan will be provided.
Potential enhancements such as dependency auto-detection and additional performance optimizations could be incrementally introduced later on.
Your input is important
Your perspective is crucial to the success of this initiative. Whether you are a plugin author, theme developer, coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. contributor, or anyone interested in the future of JavaScript in WordPress, join us in shaping a robust and forward-looking solution.
Get involved!
You are invited to participate in this exploratory phase and contribute your ideas, concerns, and suggestions. Below are some prompts to get the conversation started:
How do you currently manage JavaScript modules within your WordPress projects?
What challenges have you faced with the existing script enqueueing system?
In what ways can native support for JavaScript modules improve your development workflow?
Are there specific use cases or scenarios where you feel this proposal could greatly benefit you or the WordPress community?
Please share your thoughts in the comments below, on Trac, or participate in the ongoing discussions and experiments on GitHub. Your engagement is invaluable to work together toward a more modern, module-friendly WordPress.
Here is the agenda for this week’s performance team meeting scheduled for Nov 21, 2023 at 16:00 UTC. If you have any topics you’d like to add to this agenda, please add them in the comments below.
Hosting companies and interested contributors are encouraged to join the distributed testing program where anyone can get involved with and report the results of the coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. automated test suite back to WordPress.
WordPress 6.4 performance improvements (to be added to the Field GuideField guideThe field guide is a type of blogpost published on Make/Core during the release candidate phase of the WordPress release cycle. The field guide generally lists all the dev notes published during the beta cycle. This guide is linked in the about page of the corresponding version of WordPress, in the release post and in the HelpHub version page.).
Update to the core commit message format: It has been updated to take into account backportbackportA 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. and follow up commits. There is also a change on where “props” is used in the commit message.
@webcommsat emphasized that developers with 6.4 knowledge can really help with reviews and contributions toward End User docs. The sooner the documentation is published, the sooner it can benefit the community.
And some items from last week’s cancelled chat to touch on:
A proposed schedule for 2024 major releases has been shared by @chanthaboune, proposing dates for 6.5, 6.6, and 6.7. Please share your thoughts on timing, focus, or anything else relates to these releases in the post comments.
@jeffpaul called on potential 6.5/6.6/6.7 leads to share their thoughts on this post.
Accessibility improvements in the 6.4 release: Check out this rundown of a11yAccessibilityAccessibility (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) items addressed in 6.4.
Shareable performance testing utils: Join the discussion to explore ways that projects can incorporate performance testing as part of their development workflow.
And finally, some reminders ⏲️:
Call for 6.4.x Release Managers: Work on improving 6.4 continues after the main release, so please consider joining the minor releaseMinor ReleaseA 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. squad to help keep 6.4 healthy.
Call for volunteers to help with 6.4 end-user documentation: The Docs team is looking for volunteers to revise end-user docs (HelpHub) for 6.4. Check out the post and learn how to pitch in! Wait…did I mention this already? Yep — but it’s so important for our user community ❤️.
Release Updates
Next minor release: 6.4.2
@jeffpaul noted that if minor release squad volunteers can be found soon, that there’s a possibility of shipping a 6.4.2 minor release before year’s end. He requested feedback on whether there are any urgent/important items that need to be addressed soon.
@jorbin has been watching the (6.4) minor release issues report, and noted that #59847 seems the most urgent. He also pointed out nice-to-have editor package backports in #59828. If volunteers can be found to support the release, then he suggested a target of the week of November 27, 2023.
@joemcgill noted that #59847 is nearly ready, and requested feedback on the related PR.
👉🏻 Volunteers who can help with the 6.4.2 minor release (and determine timing) should drop a note in #6-4-release-leads.
Next major releasemajor releaseA 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
The development cycle page has been created. It will be populated after discussing release timings and the finalization of the squad.
Are you able to help with future bugbugA 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? Check out the 6.5 scrub schedule.
@jorbin asked that 6.5 ticketticketCreated for both bug reports and feature development on the bug tracker. scrub participants keep an eye out for regressions that should be moved to the 6.4.2 milestone, to get fixes delivered to users more quickly.
@webcommsat shared a link to the November 14 scrub for anyone looking at tickets async, and called on contributors to help with patches and writing of tests. 🙏🏻
@jeffpaul expressed worry about losing touch with GutenbergGutenbergThe 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/ development without regular meetings and sought alternative ways to stay updated. @jorbin suggested incorporating editor updates into existing meetings, particularly emphasizing involvement from major release editor leads.
@webcommsat highlighted the usefulness of core-editor summaries and proposed integrating regular updates into the dev chat agenda. @ironprogrammer raised the question of where the editor summary would originate if the meetings themselves were cancelled. @jeffpaul suggested obtaining editor updates during dev chat to ensure communication of updates and blockers across the project.
The idea of carving out an official “editor updates” section in dev chat was considered, and @jorbin suggested seeking volunteers from the #core-editor channel to participate in the chat. @annezazu volunteered to take on the responsibility and discussed potential ways to share editor updates, including during the meeting or through agenda posts. The need for asynchronous options, given different time zones, was acknowledged.
@webcommsat suggested having a dedicated section for editor updates on the dev chat agenda post, and plan for asynchronous sharing. @annezazu volunteered to make the meetings and incorporate asynchronous sharing, considering her near term availability across time zones. The importance of avoiding disruptions during meetings was discussed, as was the possibility of maintaining #core-editor office hours for specific questions related to the editor.
2024 Core Team Reps Nominations
@webcommsat gave a reminder for #core contributors to have a look at the draft post: Nominations for Core Team Reps: 2024 Edition. The dates/timing may need revising, and team reps are looking into the possibility of having the voting poll embedded into the post to make it easier to vote. Please share your feedback in #core and CC @webcommsat and @hellofromtonya.
WordPress 6.4 Retrospective
@cbringmann shared WordPress 6.4 Retrospective, and asked that anyone who has contributed to the release to reflect and share their thoughts on the release process (instructions in the post). A follow-up post will be published in December.
Writers are needed for the remainder of the items on the to-do list. Call to be shared in dev chat when possible. Wider calls to encourage people to add to the relevant GitHubGitHubGitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/ issue if they can assist with collaborating on these items.
At the moment, the queue for items for discussion or topics for approval is empty.
@greenshady to add some new topics for next month’s meeting.
@webcommsat: From early signs of what could be in 6.5, I think there will be quite a few use case blogs to come out of there in the future.
@milana_cap: to propose a few WP-CLIWP-CLIWP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is http://wp-cli.org/https://make.wordpress.org/cli/ topics.
@marybaum: potentially one on using the post-content blockBlockBlock 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. inside the Cover block, and a topic related to a block theme.
@ogleckler: proposed a topic on design in Figma for blocks. Discussion followed in the meeting: @webcomms suggested sharing the idea with the Design team and with the release contributors who worked with Figma for potential interest in scoping/ key inclusions, or to take it up to write. Strong interest in the editorial group about a post on designing a block theme in Figma. New issue created for the Dev Blogblog(versus network, site) to take this forward.
@webcommsat proposed that in general, adding ideas for topics to the board makes it:
easier to raise awareness and target potential contributors
adding a basic scope /inclusions from discussions in the editorial group
there have been a couple of discussions in coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. and documentation during the release journey about use case of features. Some of these would be potentially good dev blogs. Helping scope out some of these topics can help people commit to taking them on or to better understand the next steps. This has been seen with other new topic proposals
agreement from the group on this and promoting potential contributors to add ideas to the board
@webcommsat with @codente and @nalininonstopnewsuk have been marking items up from the 6.4 release documentation tracker where there has been some interest already in writing about particular items and will encourage these ideas for the Dev Blog board.
Open floor
1)@greenshady raised a conversation about resolving how writers upload images to their draft posts.
Issue: Slack convo. In this instance, the published post was missing two images. They later had to be pulled from the original Google Doc and the post updated. Two older posts needed the same solution too where an image URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org was added which was no longer valid.
Solution: make sure folks are uploading images to the Developer Blog WordPress install and not hotlinking from Google Docs or elsewhere. I updated two older posts in the past week where this was done and the image URL was no longer valid.
Further questions: any guidance needed on checking images uploaded have been checked for virus/malware? The system does not allow upload of svg files for this reason.
Actions:
add further instruction in the contributing guide for writers, the checklist on GitHub, and to prompt checks when they are ready for the post to be edited. @greenshady to add a ticketticketCreated for both bug reports and feature development on the bug tracker. for these additions.
@webcommsat requested to add to the checklist/ guide for images to be given a useful name and alt text to be added when uploaded. All agreed and a sub section on images suggested, and to include guidance on image sizes, image naming and alt attributes.
2) Discussion around using using the /blog URL instead of /news for the Dev Blog
Clarification shared that this would not change the URL, just add a redirect from /news to /blog.
@ndiego shared: The reasoning behind using /blog is to match the brand name, “WordPress Developer Blog”. This would be too build on the branding cultivated in the past year around this name.
Discussion points:
only news items on the blog are the round-ups
concern that ‘blog’ url might give an impression that it is personal opinion rather than posts from the project WordPress. Alternative suggestions for its name were suggested, including “guides”, “tutorials”, “guidelines”, “journal”, “writings”, “Developments”, but not felt to cover the breadth of content, would need a rebranding exercise, and would mean potential duplication/ overlap with Learn WP content. Suggested a way of addressing reservations about url ‘blog’ could be to add further clarification in the purpose and writing guidelines so that it was clear to potential writers that articles were not personal blogs.
@webcommsat highlighted that there is a wider discussion to be continued on overlap and working alongside Learn WordPress in both directions.
@ndiego clarified the specific aim of the redirect question is to help people find the Developer Blog not to change or widen its current scope. He confirmed it is about search and helping people find it. There are people typing in developer.wordpress.org/blog and wonder why it didn’t go to the WordPress Developer Blog.
@greenshady raised that /news was not the preferred option originally to match the scope, but there was an issue early on where there was a potential plan to reserve /blog . The option to use /blog is now possible from the information shared by Nick.
Solution proposed:
to go ahead with the redirect and there by keep both /news and /blog in use, subject to further discussion with @bph on her return
relook at the published purpose/ guidelines for writers to make sure there is no potential misunderstanding for submissions/ writing. This is turn would save time for this group, writers and reviewers. Add a list of the type of articles that appear on the blog to assist contributors to know how to target pitches, articles and language, as well as helping give some next steps for new writers.
3) Trying to avoid duplications of series names in the Developer Blog and other parts of the project, e.g. Learn WP @webcommsat highlighted this topic to avoid confusion from both audience and search engine perspectives, especially where items are not cross-linked.
For example, there is a “What’s New for Developers” series on the Blog, so it would be better to avoid having the exact replica title in other public-facing resources from the project. Where one communication is a follow-up to an existing one elsewhere in the project, it should reference it to help people find similar resources and help their learning journey. There may need to be some manual proactive cross-linking.
Solution proposed:
cross-linking to be encouraged, and this can help for search in terms of authenticity and credibility of information about WordPress, and in terms of readers’ journeys.
avoiding exact duplication or too similar naming of titles. Specific titles that cross link should be less likely to cause confusion, eg Hallway hangout – What’s New for Developers in 6.4 covered topics from the article series on the Blog, and cross-referenced in the event itself. Suggested that posts about a forthcoming event or write-ups would benefit the user / attendee with cross-referencing.
the discussion also highlighted how more synchronization between Learn WP and the Dev Blog might be helpful
a recommendation to add excerptExcerptAn 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. to posts, which makes it so much easier for users, and shorter search result descriptions in the P2P2A free theme for WordPress, known for front-end posting, used by WordPress for development updates and project management. See our main development blog and other workgroup blogs. and the internet too.
This is a summary of a Hallway Hangout that was wrangled in the #accessibility channel after a prior hallway hangout on improving accessibilityAccessibilityAccessibility (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) in the Site Editor and took the new form of a concrete working session to address a specific problem. It was first announced on October 1st and was open to all.
To kick off, Joe asked Alex to talk through the current pain points and differences between modes. As Alex said, navigation mode is a hackedhacked together feature. The biggest problem we have, the navigation mode is a dynamically updating button. Everytime you press your arrow key or tab key when you’re in navigation mode, it dynamically re-renders. This is a challenging problem to handle with screen readers because it’ll ignore this. For Windows, there’s also a longstanding issue where the arrow keys don’t actually send the keyboard events through the browser so tab is the only viable key. Conversely, List View is much simpler in the way you can navigate with keys and it’s wrapped in a navigation role. You are able to expand rows, have control over what you’re looking at, etc. Another current problem with navigation mode, it’s not entirely clear when there are inner blocks. Alex started to work on this but stopped to focus on list view.
What are the consequences if we stripped out navigation mode and used list view as the primary way of browsing through blocks?
To date, there has been no modal, tips, etc for keyboard users in the editor. People who are used to this would have no idea it has changed and we need a way to communicate that change, perhaps using a similar approach to the change in template parts to the patterns section.
Andrea, who helped implement navigation mode, offered some historical context. He shared that if we are going to use navigation mode, we’re going to reintroduce a major issue that existed before introducing the two modes. Imagine that a post contains dozens of blocks. If you want to navigate these blocks in the post content area with the tab key, you are going to have to go through all of the dozens of blocks including the interface of each blockBlockBlock 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. (dozens of tab stops). Nav mode was originally meant to reduce the number of tab stops when navigating through the blocks in a way that each block was only one tab stop rather than multiple then pressing enter gives the ability to switch the block to edit mode where you can navigate inside the block. This was the original implementation and it made sense when there were no inner blocks.
Joe noted that List View works the same way where you can go block to block. When you use the tab key you are going through all of these elements. However, there are still a lot fewer elements than going through the blocks themselves. We should be willing to compromise to some degree. Arrow key navigation in List View also does work. It’s 100% accessibility and there are a total of three tabbable elements in list view: tab panel, close button, and list view area itself.
Alex would like to find a better way to manage focus between block editor and block sidebarSidebarA 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. but that’s a broader discussion. Jerry and Alex have worked on this but it’s a long battle.
Trying List View + Focus Mode for container blocks as an experiment
Anne pitched trying getting rid of navigation mode and use list view + focus mode as an experiment in GutenbergGutenbergThe 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/. We could then do a call for testing and get a sense of what the experience might be like more practically. Folks were very much onboard with trying this out, especially since in the long run this would reduce the number of mechanisms to maintain.
The question of how many people are used to using navigation mode came up though, especially since the feedback folks are worried about is more about non screen reader users. Anne is going to try to get some initial data from WordPress.comWordPress.comAn online implementation of WordPress code that lets you immediately access a new WordPress environment to publish your content. WordPress.com is a private company owned by Automattic that hosts the largest multisite in the world. This is arguably the best place to start blogging if you have never touched WordPress before. https://wordpress.com/.
Mobile concerns
Rich chimed in that the current primary use for that view is on mobile devices as this makes it easier to select child first nested blocks so it’s easy to tap onto. We never really got to the bottom of this on the call as we all pulled out our phones to investigate and couldn’t figure out how to even evoke the mode.
Locked blocks and inert
We discussed how to explain disabled blocks in List View which relates to a broader discussion on alternatives to inert. There’s no good way to explain to a blind user what a template looks like when editing a smaller portion like a page. Anne showed an option to toggle on/off a template preview when editing a page in the Site Editor and we discussed a few ways we could enhance that feature to save it as a preference/have it be persistent in some way.
Focus mode concerns
We discussed Focus Mode and adding it to Container Blocks. A big piece to figure out is how the back button works and ensuring it returns you to where you’d expect in the Site Editor experience.
Gutenberg as a framework concerns
Alex brought up an excellent point around Gutenberg being used as a framework, like with Blocks Everywhere, and how navigation mode is built into it as a package. We need to consider this in removing the navigation mode and it might be that it remains for third party usage.
You must be logged in to post a comment.