Dev Chat Agenda โ€“ April 22, 2026

The next WordPress Developers Chat will take place on Wednesday, April 22, 2026, at 15:00 UTC in theย coreย channel onย Make WordPress Slack.

The live meeting will focus on the discussion for upcoming releases, and have an open floor section.

The various curated agenda sections below refer to additional items. If you haveย ticketticket Created 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 or bring them up during the dev chat.

Announcements ๐Ÿ“ข

WordPress 7.0 Updates

General announcements

Discussions ๐Ÿ’ฌ

The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the CoreCore Core 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.

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 indicate whether you intend to be available during the meeting for discussion or will be async.

#7-0, #agenda, #core, #dev-chat

Dev Chat summary: April 15, 2026

Startย of the meeting inย SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/, facilitated by @amykamala ๐Ÿ”— Agenda post.

Announcements ๐Ÿ“ข

WordPress 7.0 Updates

  • The Path Forward for WordPress 7.0. The 7.0 release is still on pause for the time being. A new schedule is being worked out and will be announced by the 22nd. There will be another Release Candidaterelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). in name, but in practice the next release will be treated as a betaBeta A 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., specifically to test architectural improvements to Real Time Collaboration. Thank you in advance to everyone who helps test!

General

Discussion ๐Ÿ’ฌ

@annezazu has published Defining expectations for Iteration issues announcing some adjustments to iteration issue handling in the GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ repo.

From @amykamala: โ€œFinding the most current PRs and discussions can be a bit of a wild goose chase because while PRs mention tickets in their content, the fields/relationships on the right that would link PRs to a ticketticket Created for both bug reports and feature development on the bug tracker., project, status, etc are not actively being used. For 7.0 theres a kan ban board but nothing in it because tickets and PRs are not being tagged. So the only way to find this info is to scroll endlessly on tickets and click on all the links in the notifications. Some of you may remember a while back I asked devs in here to please start tagging their PRs in the fields on the right.โ€

  • @jeffpaul noted that the #core-program channel may be a good place to iterate on this topic.

Matt is requesting community reps and organizers increase emphasis on Elevating Individuals in the contributor space to to celebrate volunteers and folks who contribute in their own spare time.

From @miroku: โ€œI can only report problems; can that be considered a contribution? Iโ€™m always struggling to figure out how to volunteer effectivelyโ€. @jorbin answered that testing and finding bugs is absolutely a contribution!

@westonruter wanted to draw attention to this issue with @wordpress/core-abilities which makes it difficult to use outside of a React context. A PR is available to fix the issue.

#7-0, #core, #core-editor, #dev-chat

Dev Chat Agenda โ€“ April 15, 2026

The next WordPress Developers Chat will take place on Wednesday, April 15, 2026, at 15:00 UTC in theย coreย channel onย Make WordPress Slack.

The live meeting will focus on the discussion for upcoming releases, and have an open floor section.

The various curated agenda sections below refer to additional items. If you haveย ticketticket Created 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 or bring them up during the dev chat.

Announcements ๐Ÿ“ข

WordPress 7.0 Updates

The release schedule is currently still on hold, pending further validation of a new release candidaterelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta)..

General announcements

Discussions ๐Ÿ’ฌ

The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the CoreCore Core 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.

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 indicate whether you intend to be available during the meeting for discussion or will be async.

#7-0, #agenda, #core, #dev-chat

Dev Chat summary: April 8, 2026

Startย of the meeting inย SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/, facilitated by @audrasjb ๐Ÿ”— Agenda post.

Announcements ๐Ÿ“ข

WordPress 7.0 Updates

  • The Path Forward for WordPress 7.0. Quick summary:
    • trunk is closed to commits for the 7.1 release until further notice
    • Backporting to 7.0 still requires double committercommitter A developer with commit access. WordPress has five lead developers and four permanent core developers with commit access. Additionally, the project usually has a few guest or component committers - a developer receiving commit access, generally for a single release cycle (sometimes renewed) and/or for a specific component. sign off
    • Pre-releases are paused
    • The next release will be a RCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta).
    • Weโ€™re currently in string freeze
  • Newย Dev Notesdev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase.:

Discussion ๐Ÿ’ฌ

From @desrosj: contributors who have a list of notes for tickets to create are encouraged to create them before the WordCampWordCamp WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what theyโ€™ve learned throughout the year and share the joy. Learn more. Asia Contributor DayContributor Day Contributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of https://make.wordpress.org/ There are many teams that people can participate in, each with a different focus. https://2017.us.wordcamp.org/contributor-day/ https://make.wordpress.org/support/handbook/getting-started/getting-started-at-a-contributor-day/. Especially if they are good-first-bugs!ย 

@desrosj added: โ€œIf someone has some time, triaging the good-first-bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. list could also be helpful. Sometimes that list is intimidating because it seems like everything is attended to. But often times the patches need to be refreshed or the approaches so far are not fully solving the issue at hand. If we could note that on the tickets, it may make them more easily actionable.โ€

@audrasjb noted that the 8 tickets in the i18n component for 7.0 are easy tickets that would be nice to address during the contributor day. They are also Polyglots, CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., and Core Editor cross-team tickets.

@desrosj will encourage our Polyglots contributors to open tickets for strings that need refinement and additional context as it is a great way to contribute to the upcoming release.

#7-0, #core, #core-editor, #dev-chat

Dev Chat Agenda โ€“ April 8, 2026

The next WordPress Developers Chat will take place on Wednesday, April 8, 2026, at 15:00 UTC in theย coreย channel onย Make WordPress Slack.

The live meeting will focus on the discussion for upcoming releases, and have an open floor section.

The various curated agenda sections below refer to additional items. If you haveย ticketticket Created 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 or bring them up during the dev chat.

Announcements ๐Ÿ“ข

WordPress 7.0 Updates

  • The Path Forward for WordPress 7.0
  • New Dev Notesdev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase.:

Discussions ๐Ÿ’ฌ

The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the CoreCore Core 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.

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 indicate whether you intend to be available during the meeting for discussion or will be async.

#7-0, #agenda, #core, #dev-chat

Dev Chat summary: April 1, 2026

Startย of the meeting inย SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/, facilitated by @audrasjb ๐Ÿ”— Agenda post.

Announcements ๐Ÿ“ข

Editor

General

WordPress 7.0 Updates

Discussion ๐Ÿ’ฌ

From Matt: Rethinking Left Navigation

  • @audrasjb: โ€œOrdering plugins in a menu is a pretty sensible [but] it would be great if users could order them themselvesโ€
  • @jorbin recommended to make it a Feature PluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins project
  • @joedolson wanted to note that maintaining consistent navigation order is an explicit accessibility requirement

From @joefusco: โ€œFollowing the awareness/presence discussion in #64696, I built a feature plugin to test the workload independently from RTC feature.โ€

  • @desrosj proposed to make it a Feature Plugin hosted on the WordPress GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the โ€˜pull requestโ€™ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/ repository andโ€ฆ tada! Itโ€™s live.

From @wildworks: โ€œI am proposing to remove the ability to embed YouTube videos in the cover blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.. I would appreciate your thoughts on this. In my opinion, this violates the terms of service and also presents accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) issues.โ€ See this PR comment.

  • @jorbin pointed out that WordPress has shipped with header video support for almost a decade with no complaints, so removing this from the cover block should not be rushed.
  • @joedolson added that the accessibility issue is technically a content control issue; it doesnโ€™t directly create an issue, but opens a door for significant issues that were previously easily prevented.
  • @wildworks shared this Slack thread, where comments are welcome about this topic.

#7-0, #core, #core-editor, #dev-chat

Building a custom sync provider for real-time collaboration

WordPress 7.0 will introduce real-time collaboration in the blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor. Out of the box, the editor syncs changes between peers using an HTTPHTTP HTTP 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. polling provider. However, an HTTP polling transport isnโ€™t the only option and it may not be the best fit for your infrastructure, especially if you are a WordPress hosting provider.

The sync.providers client-side filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. proposed for WordPress 7.0 lets you replace the default transport with your own. This post walks through why youโ€™d want to use one, what a provider does, and how to build one.

Why build a custom provider?

The default HTTP polling provider is designed to work on any WordPress installation. It batches document and awareness updates into periodic HTTP requests: every four seconds when editing alone, every second when collaborators are present. (These values are filterable.)

It works reliably, but there can be good reasons to swap it out:

  • Lower latency. Transports such as WebSockets deliver updates as they happen, not on a polling interval. For sites doing heavy collaborative editing, the difference can be noticeable.
  • Reduced server load. Polling generates requests even when nothing has changed. A push-based transport only sends data when needed.
  • Infrastructure alignment. If you already run WebSocket servers or other real-time transport, you can benefit from using familiar infrastructure with WordPress.

These benefits come with a substantial overhead. Building a custom provider is not trivial. It will require custom code. Most likely, it will also involve deployingDeploy Launching code from a local development environment to the production web server, so that it's available to visitors. and maintaining server resources.

What a sync provider does

Real-time collaboration in WordPress is powered by Yjs, a Conflictconflict A 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.-free Replicated Data Type (CRDT) library. WordPress content is represented by Yjs documents; syncing happens by exchanging updates to those documents.

The sync provider is the transport layer. It facilitates the exchange of Yjs document updates between peers.

Concretely, a provider needs to:

  1. Receive local Yjs document updates and send them to remote peers.
  2. Receive remote updates and apply them to the local Yjs document.
  3. Report connection status so the editor UIUI User interface can show whether the user is connected.

GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/โ€™s sync manager orchestrates the syncing process. It creates a sync provider for each Yjs document that will be synced. Therefore, supplying a custom sync provider means supplying a provider creator function. A provider creator is an async function following this example:

async function myProviderCreator( options ) {
ย ย ย ย const objectType = options.objectType; // e.g., "postType/post"
ย ย ย ย const objectId ย  = options.objectId; ย  // e.g., "123"
ย ย ย ย const ydoc ย  ย  ย  = options.ydoc; ย  ย  ย  // Yjs document
ย ย ย ย const awarenessย  = options.awareness;ย  // Yjs awareness

ย ย ย ย // Create provider.
ย ย ย ย const room ย  ย  = `${ objectType }:${ objectId }`;
ย ย ย ย const provider = new MyYjsProvider( ydoc, awareness, room );

ย ย ย ย // Connect.
ย ย ย ย provider.connect();

ย ย ย ย return {
ย ย ย ย ย ย ย ย destroy: () => provider.destroy(),
ย ย ย ย ย ย ย ย on: ( event, callback ) => provider.on( event, callback ),
ย ย ย ย ย };
}

Note that the returned object has two function properties that the provider must implement:

  • destroy(): The sync manager will call this function when it is time to close connections, remove listeners, and free resources.
  • on(): This function allows the sync manager to subscribe to connection state changes. Emit { status: 'connecting' }, { status: 'connected' }, or { status: 'disconnected', error?: ConnectionError } as appropriate.
    • A disconnected event can be accompanied by an error. Using specific error codes allows the editor to give specific feedback to the user. See the list of error codes and resulting messaging.

Existing Yjs providers

You donโ€™t have to build a sync provider from scratch. Yjs has a provider ecosystem and several existing libraries can handle the heavy lifting.ย 

y-websocket is the most widely used Yjs provider and has been deployedDeploy Launching code from a local development environment to the production web server, so that it's available to visitors. by WordPress VIP and other WordPress hosts. It includes both a client and a simple Node.js server.

Note: y-webrtc is nominally a peer-to-peer provider that syncs via WebRTC, but in practice it requires centralized servers to reliably connect peers with each other. It is not recommended unless you are willing to invest in those servers.ย 

Minimal client example with y-websocket

Wrapping a Yjs provider in a ProviderCreator function is straightforward, as seen in the following example. However, note that this example is missing essential authorization checks (discussed in the next section):

import { addFilter } from '@wordpress/hooks';
import { WebsocketProvider } from 'y-websocket';

addFilter( 'sync.providers', 'my-plugin/websocket', () => {
    return [
        async ( { objectType, objectId, ydoc, awareness } ) => {
            const roomName = `${ objectType }-${ objectId ?? 'collection' }`;
            const provider = new WebsocketProvider(
                'wss://my-sync-server.example.com',
                roomName,
                ydoc,
                { awareness }
            );

            return {
                destroy: () => provider.destroy(),
                on: ( event, callback ) => provider.on( event, callback ),
            };
        },
    ];
} );

This code replaces the default HTTP polling provider entirely. The filter callback ignores the incoming providerCreators array and returns a new array containing a single WebSocket-based provider creator.

The WebSocket server (wss://my-sync-server.example.com in the example above) must be configured and deployed separately. The y-websocket-server library is the server companion to y-websocket.

Authorization and security

A custom sync provider connects to infrastructure that you own and operate, e.g., a WebSocket server. Because that infrastructure lives outside of WordPress, WordPress canโ€™t authorize requests to it on your behalf.

Securing the connection between the editor and your sync server is your responsibilityโ€”a critical one. Without authorization checks, any user could connect to your WebSocket server and participate in a collaborative session with your WordPress users.ย 

Token-based auth

A common pattern is to issue short-lived tokens via a WordPress REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think โ€œphone appโ€ or โ€œwebsiteโ€) can communicate with the data store (think โ€œdatabaseโ€ or โ€œfile systemโ€) https://developer.wordpress.org/rest-api/ endpoint, then pass the token when opening the WebSocket connection. The tokens assert that the user has permission to collaborate on a specific entity.

Hereโ€™s a simplified example of how the WPVIP Real-Time Collaboration plugin handles it:

// Fetch a short-lived token from a WordPress REST endpoint.
// This endpoint is provided by your plugin. Tokens encode the
// type and ID of the entity being edited, as well as the current
// WordPress user ID.
const data = await apiFetch( {
ย ย ย ย path: '/my-plugin/v1/sync/auth',
ย ย ย ย method: 'GET',
ย ย ย ย data: { objectType, objectId },
} );

// Pass the token as a query parameter when connecting.
provider.params = { auth: data.token };
provider.connect();

Key considerations

  • Validate on the server. Never trust the client. The sync server should verify the token on every connection request. The token should encode information about the user, the entity being edited, and which actions are authorized. The sync server should validate each assertion and reject unauthorized connections before applying any document updates.
  • Authorize per-document. Itโ€™s worth restating: Donโ€™t just authenticate the user, additionally verify they have permission to edit the specific post or entity being synced. Your WebSocket server should validate this on every connection.
  • Rotate tokens. WebSocket connections are long-lived. Use short-lived tokens and re-authenticate on reconnect so that revoked permissions take effect promptly.
  • Handle disconnects gracefully. When authorization fails or a token is invalidinvalid A 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., emit a { status: 'disconnected', error } event so the editor can inform the user. The WPVIP pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. maps WebSocket close codes to specific error types to give users actionable feedback.

The WPVIP Real-Time Collaboration plugin is a functional and secure example using WebSockets. Itโ€™s open sourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL. and contributions are welcome.

Feedback

If you have questions or feedback about building a custom sync provider, please share them in a comment on this post or in the #hosting channel of Make WordPress Slack.

Props to @jorbin and @westonruter for feedback and contributions.

#7-0, #dev-notes, #dev-notes-7-0, #feature-real-time-collaboration

Dev Chat Agenda โ€“ April 1, 2026

The next WordPress Developers Chat will take place on Wednesday, April 1, 2026, at 15:00 UTC in theย coreย channel onย Make WordPress Slack.

The live meeting will focus on the discussion for upcoming releases, and have an open floor section.

The various curated agenda sections below refer to additional items. If you haveย ticketticket Created 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 or bring them up during the dev chat.

Announcements ๐Ÿ“ข

Editor

General

WordPress 7.0 Updates

  • Extending the 7.0 Cycle
  • New Dev Notesdev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase.:

Discussions ๐Ÿ’ฌ

The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the CoreCore Core 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.

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 indicate whether you intend to be available during the meeting for discussion or will be async.

#7-0, #agenda, #core, #dev-chat

Extending the 7.0 Cycle

After discussions with project leadership, the decision has been made to delay the 7.0 release by a few weeks to finalize key architectural details.

WordPress 7.0 is shaping up to be a big release, with some great highlight features and a long list of improvements. Iโ€™m excited to get this in the hands of users. Within that context, contributors have been hard at work discussing, iterating, and polishing every detail.

One of the larger items for this release is the introduction of real-time collaboration primitives, which includes built-in support for HTTPHTTP HTTP 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. polling to ensure the widest possible reach and access to this capabilitycapability Aย capabilityย is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on theirย role. For example, users who have the Author role usually have permission to edit their own posts (the โ€œedit_postsโ€ capability), but not permission to edit other usersโ€™ posts (the โ€œedit_others_postsโ€ capability).. To support this system in coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., a new custom table was proposed. While there was general agreement that it would be nice to have for collaborative editing and sync coordination, it was paused due to time and design uncertainties.

Due to a combination of rapid iteration around data storage solutions and cache invalidation strategies, discussions were held before RC2. This led to a path forward that addresses the outstanding concerns by continuing to store content changes in postmeta while moving awareness/presence information about users in session to transients. This approach avoids rapid and frequent cache invalidation issues with special handling for collaborative editing metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. fields. Since then, Matt has expressed a preference to revisit the custom table and ensure adequate time is given to come up with the best design possible from the start. To support this, more time is being added to the 7.0 cycle to ensure the best solution for the overwhelming majority of users is included.

Additionally, there was one extra consideration raised about use cases beyond the real time support (like accommodating broader sync use cases) that should also be discussed to ensure we design the right primitives in the broadest possible sense. After getting more clarity on how a new table will look and function, a new final timeline for 7.0 will be announced. This will likely be a delay of a few weeks, as there are many features that will benefit users, and it would be counterproductive to hold them back for too long. The extra time will help ensure we can process all the feedback given so far and ensure the design can stand the test of time. New features and enhancements not already in core will not be considered for inclusion.

Overall, the intention in shipping collaborative editing in 7.0 as an opt-in is to give the WordPress ecosystem time to adapt to a major change. For hosts, this can have an impact in WordPress resource usage and database interactions. WordPress sites are generally very read-heavy, but collaborative features inherently involve a writing state that is then rebroadcast to other users. The HTTP polling mechanism as designed is a lowest-common-denominator approach, but its broad compatibility comes at the cost of relative inefficiency compared to more specialized solutions like WebSockets. Itโ€™s important to empower site owners and hosts to have full control during this process. So, rather than enabling the feature for 100% of users on day one, the opt-in approach allows usage to ramp up organically. Hosts can monitor requests to the sync endpoints, perform profiling to ensure their particular caching and request management approaches are appropriate, etc.

Thus far, for example, WordPress.com has done extensive testing on this feature and has demonstrated that the conservative defaults, the limit on the number of collaborators, and the number of active editor sessions in the shared environment make HTTP polling a viable transport that can work on essentially any WordPress host without additional dependencies. Other hosts are encouraged to test this as well, and a call for testing will be coming to make.wordpress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org//hosting after the final architecture has been committed.

For pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. developers, many popular plugins still rely on metaboxes for their UIUI User interface. These plugins submit their inputs when a post is saved in the editor via GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/โ€™s compatibility mode. This approach, on its own, is not compatible with collaborative editing, which builds on the wordpress/data package used by the blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor to detect and sync changes across all users in a session, gracefully handling common types of conflicts. As a result, real-time collaboration is disabled when metaboxes are present. The 7.0 cycle will be a window in which these plugin developers can implement a bridge to make their metaboxes compatible or adopt more modern Gutenberg APIs that will instead render their UI in a way that more seamlessly integrates with the editor. Learn more in the official dev note for the feature and, for more details on migrating from metaboxes, see the Meta Boxes guide in the Block Editor Handbook.

Thank you to everyoneโ€™s continued commitment to ensuring 7.0 is an outstanding release, both from a features and stability perspective.

Props to @jorbin @desrosj @annezazu @griffbrad @4thhubbard for helping review this post.ย 

#7-0

WordPress 7.0 Release Candidate Phase, Pt. 2

This updates the expectations and policies that should be followed through the final release of WordPress 7.0 following the previous post and the release of RC2 on 26 March.

These policies mainly cover how and when CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. committers can commit. For non-committing contributors, this post may help explain why Core committers make certain decisions.

Trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. is now WordPress 7.1-alpha

WordPress 7.0 has been copied to its own branch, trunk is now open for commits for the next version of the software.

Backporting to the 7.0 branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch".

Backporting commits of production code (that is, anything that ends up in the zip file) now requires double sign-off by two core committers. The dev-feedback keyword should be used to request a second committercommitter A developer with commit access. WordPress has five lead developers and four permanent core developers with commit access. Additionally, the project usually has a few guest or component committers - a developer receiving commit access, generally for a single release cycle (sometimes renewed) and/or for a specific component.โ€™s review, dev-reviewed should be added to indicate a second committer has reviewed and approved the commit to the 7.0 branch.

String Freeze

The RC1 release marked the hard string freeze point of the release cycle and that continues. Strings will be available for Polyglots contributors shortly. Please subscribe to the Make Polyglots blog for updates.

No new strings are permitted. Exceptions can be made for critical strings (the About page, for example) provided they are properly tagged with the i18n-change keyword in TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. and the Polyglot team is made aware. Existing strings can be removed and/or duplicated as necessary.

Seek guidance from the Polyglots team reps for any strings reported as buggy. A buggy string is one that can not be translated to all languages in its current form.ย 

Tickets on the WordPress 7.0 milestone

For the remainder of the cycle, only two types of tickets may be placed on/remain on the 7.0 milestone:

  • Regressions: bugs that have been introduced during the WordPress 7.0 development cycle, either to existing or new features.
  • Test suite expansion: tests can be committed at any time without regard to code or string freezes. This can cover either new or existing features.

Please make sure to observe all code freezes, which applies to changes of any kind. Coordinate with the release squad in the #7-0-release-leads channel in SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ if there is a change you feel should be committed during a freeze.

Props @jorbin, @audrasjb, @amykamala for peer review.

#7-0