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.
Thank you to all who volunteered as interested in serving on the WordPress 6.8 release squad! After collecting all of the volunteers, reviewing active initiatives and tickets currently in the milestone, contributor availability in various areas, and planned events or holidays the following squad, timeline, and focus has been assembled.
Release Squad
Release LeadRelease LeadThe community member ultimately responsible for the Release. – Matt Mullenweg
This squad continues the experiment that started in 6.7 of merging the MarComms (Marketing and Communications) Lead with Release Coordination in order to gather more feedback on that experiment. This can change during the process for future releases if needed. The squad is also a bit smaller than usual because of this release being a polish and 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. fix release. Also of note, the CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. Tech Lead and Editor Tech Lead roles have been combined into a single “Tech Leads” role as part of the continued initiative to support a more closely coordinated effort across 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/ and Core.
Aaron Jorbin has volunteered to continue managing tickets and will organize minor releases as necessary for the remainder of the 6.8 release cycle.
Release Timeline
As a reminder, here are a few of the key milestones for the release:
BetaBetaA pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 1: March 4, 2025
Release Candidaterelease candidateOne of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). 1: March 25, 2025
After evaluating the current active initiatives, there will likely be fewer features ready to ship when compared to other recent major releases. As a result, 6.8 will focus primarily on being a polish and bug fix release. New features will be considered if deemed reasonably ready.
A WordPress release is put together by the entire community and the release squad only represents a fraction of the contributors to a release. If you are looking to get involved, please join the #core channel in SlackSlackSlack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/. where there are weekly chats on Wednesday at 20:00 UTC and bi-weekly new contributor onboarding meetings on the 2nd and 4th Wednesday of each month at 19:00 UTC.
Summary of the WordPress Developer Blogblog(versus network, site) meeting, which took place in the #core-dev-blog channel on the Make WordPress SlackSlackSlack 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.
We started implementing a suggestion we received over the last few months for two more content post types: Snippets and Videos. You can see a list of available snippets here. They are shorter posts and solve one particular task/problem. There is also a separate async meeting format for Snippet approval between the monthly meeting
Video CPT only has one post for now: the recording of Developer Hours: Improve your workflows with WordPress development tools. There is the hope that over the following months, we can start a design process to integrate those two additional custom post types more prominently on the developer blog.
The project board for Developer Blog content is on 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/.
How to build a theme demo with WP Playground blueprints (blocked by 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.)
@bph “After two years of leading the WordPress Developer Blog, it’s time for me to step back and let others take the reins! I’ve enjoyed creating and managing processes, running meetings, and working with all of you. However, due to other commitments, I need to pass the torch.
This is a fantastic opportunity for someone (or a few someones!) to take on a leadership role within the WordPress open-source project. Here are some of the responsibilities involved:
Facilitate monthly meetings (tentatively shifting to 15:00 UTC).
Manage the editorial calendar and content pipeline.
Onboard and support new contributors.
Guide reviewers and writers through the review process.
Oversee content publishing, ensuring quality and adherence to standards.
By taking on this role, you’ll gain valuable leadership experience, contribute to a vital resource for WordPress developers, and expand your networknetwork(versus site, blog) within the community.
I am happy to announce that @marybaum has agreed to take on the project WordPress Developer blog. She is a long-time WordPress contributor on the coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. team and a brilliant editor. I am very grateful to see the project in such good hands. Please support her as enthusiastically as you supported me in the project.
But, ideally, we’d have a few people sharing the responsibilities. If you’re interested, please contact me on WPSlack by January 23rd or leave a comment on the summary post of this meeting with a brief explanation of your relevant experience and why you’d be a good fit. (edited)
“In other news, I’d love to have someone (or multiple someones) to volunteer for the What’s new for developers? monthly roundup.
The goal was to always rotate this through various writers so that it would be written from different viewpoints. I’m writing the January 2025 edition, and I’m happy to onboard anyone for February 2025 and set up the doc (we have a reasonably standard formula for it at this point). I won’t be able to write this for February for sure and possibly afterward for a couple of months at least. Feel free to DM me, pingPingThe 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.” me here, or reply to the meeting summary post when it’s published if you’re interested in pitching in here
Upcoming meetings
Next Editorial Group meeting February 6th, 2025, at 15:00 UTC (!)📣
Next Async Snippet Approval meeting on January 22/23, 2025
This is 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/ 20.0, which means it’s the 200th release of the 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.
It’s been almost exactly eight years since the initial commit to the Gutenberg repository and about four years since we celebrated the 100th release.
There is a lot happening in the WordPress world these days. But I want to use this moment to take a step back and just say thank you! Thank you to all the individual contributors that have spent countless hours over the past eight years steadily moving this project along. Whether you are still an active contributor, or you have long moved on to work on something else, thank you for all your work. ❤️
Even though this is the 200th release of the Gutenberg plugin, the actual release itself is the same as any other release in the past eight years. It includes new features, enhancements, and bugfixes. The remainder of this “What’s new in Gutenberg” post will follow the regular format.
The “What’s new in Gutenberg” posts (#gutenberg-new) appear on a biweekly basis after every Gutenberg release, and showcase the latest features and improvements.
Interested in learning more? Here’s an overview of how you can keep up with news and events related to Gutenberg and 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. Editor.
The last first of 2025 introduces improvements to the Style Book, a new starter pattern ui, a swathe of component library enhancements, and code quality improvements.
The Style Book got a few improvements in this release. It now features different sections for typography, colors, and individual blocks that all activate when the user navigates to those menu items. Additionally, the Style Book now its own URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org (#67811), so you can access it directly.
Starter Patterns get a new UIUIUser interface
We’ve received a lot of feedback that the old Modal based approach for starter patterns caused more annoyance than it helped. So, in an effort to improve the experience, the modal has been removed, and instead, if starter patterns exist, the page will load in the zoomed-out mode with the pattern inserter already opened.
Easily set a Page to become the Posts Page
Similar to the “Set Homepage” action that was added in a recent release, it is now possible to easily set a page to become the posts page using a post action in the dataviews for pages.
Display Block Type Badge for renamed blocks
To clarify what block you are currently editing, the block type is displayed as a badge next to the custom name when a block is renamed.
More Highlights
wp-env now supports multisitemultisiteUsed 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 allowing developers to easily bootstrap multisite environments, especially for ease of feature testing and quality control. (67845)
Block 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. get a major boost by now allowing developers to apply hooks to post content and synced patterns. This has been a highly requested feature of block hooks since day one. (67272 & 68058)
Changelog
Enhancements
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.
iAPI Router: Handle styles assets on region-based navigation. (67826)
Prevent each directive errors and allow any iterable. (67798)
Introduce new 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. “render_block_core_navigation_link_allowed_post_status”. (63181)
Query Pagination: Update ‘showLabel’ help text. (68105)
Query Total block: Reduce concatenation in the output text. (68150)
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.: Use the ‘ResolutionTool’ component. (68294)
Add Tools Panel dropdown menu props to More block. (68039)
Archive: Add dropdown menu props to ToolsPanel component. (68010)
Date Block: Add dropdown menu props to ToolsPanel component. (68018)
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. Block: Refactor settings panel to use ToolsPanel. (67908)
Featured Image Block: Refactor setting panel. (67456)
Login/Logout: Add dropdown menu props to ToolsPanel component. (68009)
Login/Logout: Refactor settings panel to use ToolsPanel. (67909)
More Block: Refactor settings panel to use ToolsPanel. (67905)
Navigation Submenu Block: Refactor settings panel to use ToolsPanel. (67969)
Page List Block: Add dropdown menu props to ToolsPanel component. (68012)
Page List Block: Refactor settings panel to use ToolsPanel. (67903)
Query Page Numbers Block: Refactor settings panel to use ToolsPanel. (67958)
Query Page Numbers: Add dropdown menu props to ToolsPanel component. (68013)
Query Pagination: Refactor settings panel to use ToolsPanel. (67914)
Refactor “Settings” panel of Navigation Item block to use ToolsPanel instead of PanelBody. (67973)
Replace PanelBody with ToolsPanel and ToolsPanelItem in column block. (67913)
Replace PanelBody with ToolsPanel and ToolsPanelItem in spacer block. (67981)
Replace PanelBody with ToolsPanel in columns block. (67910)
Site Title Block: Add dropdown menu props to ToolsPanel component. (68017)
Site Title Block: Refactor settings panel to use ToolsPanel. (67898)
Add reset button to ColorGradientSettingsDropdown. (67800)
ChildLayoutControl: Use units defined in 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.. (67784)
KeyboardShortcuts: Update delete shortcut to use shift + Backspace. (68164)
Use custom name in 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. if available (retaining block type information). (65641)
Block hooks
Apply to Post Content (on frontend and in editor). (67272)
Allow template part editing in write mode. (67372)
Remove placeholder of default paragraph when it’s the only block and canvas is zoomed out. (68106)
Patterns
Replace Starter Content modal with inserter panel. (66836)
Build Tools
Create Block: Allow external templates to customize more fields. (68193)
Create Block: Optimize the default template for multiple blocks case. (68175)
Scripts: Recommend passing JSJSJavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. entry points with paths. (68251)
Add a Playground blueprint json to the /assets/blueprints folder of Plugin Repo. (67742)
Bug Fixes
Add duotone and dimensions to the block level for translationtranslationThe process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization.. (68243)
Add text domain option while scaffolding the block in create-block. (57197)
Added is-focus-mode class on all viewports. (67377)
Editor: Fix initial edits applied again after saving the post. (68273)
Get active element within the 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. when restoring focus. (68060)
Enhance: Improve pagination logic in coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress./query-pagination-previous block. (68070)
Fix author information leakage by author blocks for Custom Post Types without author support & display notice to user. (67136)
Media & Text: Correctly reset the ‘useFeaturedImage’ attribute. (68247)
Navigation Submenu Block: Add dropdown menu props to ToolsPanel component. (68015)
Page List Block: Fix critical error when converting to link. (68076)
Page List block: Don’t wrap Edit button with ToolsPanelItem component. (68248)
Table Block: Fix margin/padding to include caption in spacing. (68281)
Update SiteTitle block to Fix isLink Toggle Behavior. (68295)
i18ni18nInternationalization, 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 example and variations translatable in post-navigation-link. (68375)
i18n: Make example translatable in query-no-results. (68376)
i18n: Make example translatable in table-of-contents. (68377)
Button Block: Set proper typography for inner elements. (68023)
Components
Block Editor: Fix the ‘Reset all’ 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. for the ‘ResolutionTool’ component. (68296)
Image: Avoid link class loss when pasting for raw transformation. (67803)
Make Block Bindings work with editor.BlockEdit hook. (67523)
Post Editor
DataViews: Fix text in action for setting site home page. (67787)
Edit post: Fix 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. box pane’s pointer capture. (68252)
Editor: Remove HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. from the post title in the document bar. (68358)
Block supports: Show selected item in font family select control. (68254)
Fix: Ensure consistency in editor tools for navigation buttons and delete options. (67253)
Template Editor
Fix: Editing “Page” is broken for low capability users. (68110)
Plugin: Fix eligibility check for post types’ default rendering mode. (67879)
Widgets Editor
CustomizerCustomizerTool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings. Widgets: Fix inserter button size and animation. (67880)
WidgetWidgetA WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user. Editor: Fix: Close button is not working. (65443)
Various
Show metaboxMetaboxA post metabox is a draggable box shown on the post editing screen. Its purpose is to allow the user to select or enter information in addition to the main post content. This information should be related to the post in some way. when pattern is accessed directly. (68255)
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)
Dataviews List layout: Do not use grid role on a ul element. (67849)
Fix: Templates and patterns are nesting two elements with the button role. (67801)
[Dataviews] Fix: Media item focus style is not visible on Grid. (67789)
Block Editor
Fix: Inserter categoryCategoryThe 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. tabs: Avoid unnecessary aria-label. (68160)
Improve accessibility of the Warning component in the block editor. (67433)
Global Styles
Shadows: Always show reset button if hover is not supported. (68122)
Visual Refactor: Add Chevron Icon for Shadows in Global Styles. (67720)
Block Library
Button: Replace ButtonGroup usage with ToggleGroupControl. (65346)
Fix Choose menu label when a menu has been deleted. (67009)
Site Editor
Make sure the sidebar navigation item focus style is fully visible. (67817)
Components
CustomSelectControl: Refactor to use Ariakit store state for current value. (67815)
Performance
Block Library
Don’t fetch media details if the block doesn’t use a featured image. (68299)
Media & Text: Optimize block editor store subscriptions. (68290)
Update the copyright licensecopyright licenseCopyright holders may grant a license with various allowances including the ability to modify or distribute the copyrighted material. Also see GPL. to 2025. (68440)
Updated since Doc Order in Inline documentation. (68003)
Create Block: Migrate Inquirer.js dependency to the new API. (67877)
Fix indentation in the upload-media tsconfig. (68083)
Fix indentation in upload-media package.json. (68037)
Fix: 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. JSDoc syntax for optional object. (68061)
Remove some obsolete stylelint at-rule-no-unknown disable rules. (68087)
Components
DatePicker: Prepare day buttons for 40px default size. (68156)
DropZone: Make the drop zone in Storybook the same size as the item. (68231)
Fix Button size violations in misc. unit tests. (68154)
Fix: Add soft deperecation notice for the ButtonGroup component. (65429)
Workflows: Sync assets to plugin repo upon change in trunktrunkA directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision.. (68052)
First-time contributors
The following PRs were merged by first-time contributors:
@benazeer-ben: Add command to navigate to site editor. (66722)
@dhruvikpatel18: Fixed typo in README of TextTransformControl. (68443)
@fushar: Stylebook: Add the Appearance -> Design submenu through admin_menu action. (68174)
The Nominations for 2025’s Core Team Reps are now open! Please nominate people in the comments of that post. Self-nominations are welcome. The deadline is January 31, 2025.
Forthcoming releases
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.8
The WordPress 6.8 call for volunteers closed on Dec 6. There will be more information about the release squad to follow soon based on these volunteers.
Next maintenance release: 6.7.2
There is currently no release date planned for WordPress 6.7.2 but @desrosj is planning to review the state of the release this week. You can review the next minor release milestone.
Next 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/ release: 20.1 20.0
The agenda post incorrectly identified the next release as 20.1 with a release date of January 15 due to a shift in the schedule for the holidays. Instead, Gutenberg 20.0 was released on January 9 and Gutenberg 20.1 is expected on January 22.
Discussion
Update on the formation of the 6.8 release squad
The call for volunteers date is closed and @priethor had previously been working on providing an announcement. Following the meeting, he shared that he had handed over responsibility to @jeffpaul and @desrosj, who are working to finalize the squad for the 6.8 release.
To prepare for the release, anyone can volunteer to lead a bug scrub of the 6.8 milestone. Looking at tickets marked early would be a good place to start.
@joemcgill highlighted out this initiative to improve CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.’s end-to-end (E2E) tests that is looking for support. @jorbin agreed do an initial review.
Open floor discussion around this meeting format and changes in 2025
Agreed to move to a fortnightly performance meeting in a more “office hours” format from January 14 onwards
No agenda will be posted ahead of each meeting, instead the meeting host will follow the format suggested in this document, which is open for comments please
Bug scrub cadence was also discussed, but no conclusion reached – we will continue the discussion on the next meeting January 14
WordPress Performance TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. Tickets
@joemcgill is planning to commit the fix for #62692 soon. His concern is that anyone on an older version of WP will still be affected by this 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.. Joe has reached out to all the affected caching plugins identified on the ticketticketCreated for both bug reports and feature development on the bug tracker. and so far have seen mostly that those projects aren’t interested in supporting versions of WP that are impacted by the bug
The live meeting will focus on the discussion for upcoming releases, and have an open floor section.
Additional items will be referred to in the various curated agenda sections below. If you have ticketticketCreated for both bug reports and feature development on the bug tracker. requests for help, please continue to post details in the comments section at the end of this agenda.
Announcements
The Nominations for 2025’s Core Team Reps are now open! Please nominate people in the comments of that post. Self-nominations are welcome. The deadline is January 31, 2025.
Forthcoming releases
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.8
Next 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/ release: 20.1
The next Gutenberg release will be 20.1, scheduled for January 15. It will include the following issues.
Discussions
The discussion section of the agenda is to provide a place to discuss important topics affecting the upcoming release or larger initiatives that impact the CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. Team. To nominate a topic for discussion, please leave a comment on this agenda with a summary of the topic, any relevant links that will help people get context for the discussion, and what kind of feedback you are looking for from others participating in the discussion.
This will be the first Dev Chat of 2025, so we’ll use this time to discuss anything that needs to be addressed to prepare for the first releases of the year.
You can keep up to date with the major Editor features that are currently in progress by viewing these Iteration issues.
Open floor
Any topic can be raised for discussion in the comments, as well as requests for assistance on tickets. Tickets in the milestone for the next major or maintenance release will be prioritized.
Please include details of tickets / PRs and the links in the comments, and if you intend to be available during the meeting for discussion or if you will be async.
Notes are mainly powered by an AI note taker so please leave a comment if anything feels wildly off.
Overview
Kevin Jahns presented a demonstration on utilizing Yjs to enhance real-time editing capabilities in WordPress, addressing existing challenges such as content synchronization and potential conflicts during simultaneous edits. He introduced features like automatic conflictconflictA conflict occurs when a patch changes code that was modified after the patch was created. These patches are considered stale, and will require a refresh of the changes before it can be applied, or the conflicts will need to be resolved. resolution and a heartbeat 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. for near real-time updates, emphasizing that while the current implementation may not fully replicate the Google Docs experience, it significantly improves user trust and collaboration. Participants were encouraged to explore Yjs further and consider its applications in their projects.
Jahns discussed the technical obstacles in implementing collaborative editing, particularly the lack of WebSocket support across various PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher engines and the limitations of WebRTC, which requires multiple servers for reliable operation. He proposed using HTTPHTTPHTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. requests for syncing while allowing WebRTC as an optional enhancementenhancementEnhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature.. Additionally, he highlighted issues with 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. validation errors and synchronization challenges with custom block types in 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/ editor, suggesting the creation of a special editor binding for Yjs to improve synchronization. Security concerns regarding the WebRTC setup were also raised, with a focus on the need for role-based collaboration restrictions to prevent document manipulation.
The session also covered the storage and management of Yjs documents, with Jahns explaining that Yjs content is stored as comments in post content, facilitating straightforward revision creation. He acknowledged the challenges of managing real-time changes and the impact of Yjs documents on content size. Discussions included the limitations of WebRTC, particularly its reliance on costly TURN servers, and the need for ongoing testing to ensure the reliability of collaborative editing features. Jahns emphasized the importance of prioritizing collaborative editing to enhance the editor’s evolution and received appreciation for his transparency and commitment to the Gutenberg project.
Real-Time Editing Demo with Yjs Kevin Jahns presented a demo on real-time editing with Yjs, emphasizing its role in enhancing collaborative features in WordPress. He explained the limitations of the current WordPress editor regarding content synchronization and introduced new features like automatic conflict resolution and the heartbeat API for better real-time collaboration.
Collaborative Editing in WordPress Kevin Jahns addressed the difficulties of enabling collaborative editing in WordPress, noting that WebSockets are not universally supported across PHP engines. He explained that while WebRTC could be used as a fallback, it is not reliable enough for all users. Instead, he proposed using HTTP requests for syncing, with WebRTC as a progressive enhancement for those who can utilize it.
Block Synchronization and Customization Challenges Kevin Jahns addressed synchronization issues with block types (and ran into an error with block validation in the process!). He explained that while standard elements like text and images function properly, custom block types may encounter difficulties due to Gutenberg’s design, which does not fully accommodate changes from multiple peers. Jahns emphasized the need for a special editor binding for Yjs to enhance synchronization.
Discussion on Signaling Server and Security Concerns Kevin Jahns confirmed that Jorge’s signaling server implementation in WordPress remains unchanged. He raised security concerns regarding the WebRTC setup, highlighting that it permits document manipulation by anyone with read access. Jorge noted that to make the system production-ready, several security measures need to be implemented, particularly around user roles and collaboration.
Yjs Document Storage and Revision Management Kevin Jahns responded to Frank’s inquiry about the Yjs implementation and its impact on content 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.. He detailed that Yjs documents are stored as comments within the post content, which facilitates the creation of revisions upon saving. Additionally, he mentioned that future comparisons of revisions could be made using Yjs documents, similar to a git diff, and that attribution for content creation is also supported.
Discussion on Yjs Document Implementation and Security Concerns Kevin Jahns highlighted the downside of Yjs documents inflating content size but reassured that normal users wouldn’t see the comments. Aaron Jorbin pointed out the security implications of allowing users to input unfiltered HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.. Kevin also mentioned the potential for filtering user visibility of Yjs comments and the need to track edits made by users, which currently lacks a backend solution.
WebRTC vs. WebSocket for Collaborative Editing in WordPress Kevin Jahns explained that WebRTC is not a reliable option for collaborative editing in WordPress due to its dependency on multiple servers and potential blocking by companies. He suggested using HTTP requests as a baseline for collaboration, which provides a satisfactory experience for most users. For those needing more reliability, he mentioned the possibility of implementing WebSocket servers, which could also enhance security and authentication.
Discussion on WebRTC and TURN Servers Kevin Jahns highlighted the overhead of WebRTC and the expense of hosting TURN servers, indicating that they are not a viable option for everyone. Jorge shared his thoughts about the reliability of TURN servers from providers like Google and Twilio. They noted that while STUN servers are affordable and public, TURN servers are costly and can lead to misuse.
Collaborative Editing and Yjs Integration Kevin Jahns highlighted the challenges faced with collaborative editing in the current editor setup, particularly issues with image handling and the undo-redo functionality. He stressed the necessity of prioritizing collaborative editing and proposed using Yjs as a solution to enhance these features. Kevin also mentioned that recent updates to Gutenberg have caused disruptions, indicating a need for better testing and support.
Yjs Integration and Block Syncing Challenges Kevin Jahns explained the process of syncing textual content through 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., noting that changes in one block can overwrite changes in another. He acknowledged existing issues with tables and galleries, indicating that these would be addressed in future pull requests. Kevin also highlighted the importance of creating a robust integration with Yjs for better collaboration.
Open floor discussion around this meeting format and changes in 2025
Priority items
WordPress performance TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
Performance Lab 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 (and other performance plugins) including:
The Nominations for 2025’s Core Team Reps are now open! Please nominate people in the comments of that post. Self-nominations are welcome. The deadline is January 31, 2025.
Also, 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/ 19.9 was released prior to the start of the meeting. See, What’s new in Gutenberg 19.9?
Forthcoming releases
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.8
The WordPress 6.8 call for volunteers closed on Dec 6. There will be more information about the release squad to follow soon based on these volunteers.
Next maintenance release: 6.7.2
There is currently no release date planned for WordPress 6.7.2. You can review the next minor release milestone. The 6.7.2 milestone was scrubbed during the week and the Gutenberg board is scrubbed with only a few PRs that need to be merged.
how much work would it be to allow pseudo-styles on 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. style variations, for example on buttons? Talking about this issue: https://github.com/WordPress/gutenberg/issues/55359
For the past several years, WordPress has been using a consistent set of titles for release squad members. Going forward the Release Coordinator role will become Release Coordination as the latter easier to translate reliably and neutrally in languages with gendered nouns.
The “… Lead” roles will remain unchanged.
This change is a result of a discussion on ticketticketCreated for both bug reports and feature development on the bug tracker.#62386 to explore adding missing release squad titles to WordPress CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.. This will allow every release squad member to be celebrated accurately with their corresponding title on the credits page within the WordPress dashboard and through the WordPress.org Credits 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..
You must be logged in to post a comment.