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.
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.
Deleted “Learning” isn’t every article a learning experience?
Since the beginning in 2022, we keep categories very high level, and become more specific with Tags.
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/ Action: label notifier
For the roundup posts, people can get notified when the next issue is available to share their team’s notes with the writer to be included in the next What’s new for developers post. If people want to get GitHub notification, please let me know and I’ll update the GitHub Notifier Action.
Author Profile links
With the redesign, author links now go to the WordPress.orgWordPress.orgThe 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/ profiles.
If you are interested in taking on a topic from this list or know someone who would be a good person to writer about them, comment on the Issue or 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.”@bph in slack either in the #core-dev-blog channel or in a DM.
@webcommsat brought to the meeting, the discussion from last night’s dev chat meeting about the Proposal to improve the FieldguideField 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. of the WordPress release, to see “what role the dev blog could possibly have in this as well as identifying what the blog already does and could do.
There is a wider discussion needed on communication and education of release features, but it would be good to start a more detailed discussion on potential and what is already aiding these areas within the dev blog. This can then feed into the wider considerations with other teams.”
@webcommsat: “The proposal now is not so much about a new version of a 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. appearing in dev blog, but looking at where and how we communicate and educate on a release, and what is needed. With the increased ability to segment to different audiences across the project, this could be a great opportunity. Hence, the wider input from marketing, docs, training, community, and the dev blog.
Being clear what happens in the dev blog already, giving tangible live examples to help those less familiar with the blog materials, and what could be potentially done would be a real cake yo the discussion. With the segmentation, we have just in levels of developer knowledge, we can add a valuable insight too.”
@greenshady, @webcommsat also brought up concerns on ownership, availability of people during release time and bandwidth of contributors.
Next steps: @webcommsat suggested: a mapping exercise would help, and happy to try to start one we can add to with ideas. We can then add links to examples of what we have already published.
Action: After WordCampWordCampWordCamps 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, schedule a Hallway Hangout with contributors from the editorial group and other teams to kick off work on a basic content map for a release and 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 existing efforts and identify gaps.
Next meeting: March 7, 2024, at 13:00 UTC in the #core-dev-blog channel
Note: This post was updated to correct the format used in one example and remove references to the wapuu w.org username (not officially associated with the project). A note was also added under a list saved as a synced pattern to indicate the contents of the list may change over time. 2/2/2024 – @desrosj
In January 2022, a proposal was published on this blog to implement a new process within any 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/ repository under the WordPress organization to ensure anyone and everyone contributing to the project receives due thanks in the form of “props.” The post is still almost entirely accurate and it’s recommended you read that in full. Here are some highlights.
One of the greatest things about open sourceOpen SourceOpen 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. is that contributions come in many shapes and sizes. Anyone can contribute regardless of skill set, experience, time zone, or background. There are countless ways for someone to get involved with open source projects.
WordPress is no different. Contributors submitting code modifications are only a small subset of the larger community. Recognizing all types of contributions is essential to establishing a healthy contributor base, and the responsibility falls on the project’s maintainers. Contributors who feel recognized and valued are more likely to continue contributing.
There is an established and documented policy on the TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress./SVNSVNSubversion, the popular version control system (VCS) by the Apache project, used by WordPress to manage changes to its codebase. side of the project to ensure that everyone contributing to a changeset receives credit (or “props”). This method has been in place for over 12 years, making generating the list of props for each release scriptable and straightforward. The process is unique to the project but frequently receives positive feedback from others in open source.
Since being merged into WordPress CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. in version 5.0, there has yet to be an equivalent process for the contributions on GitHub. The process is manual, does not account for non-code contributions, and often results in contributors not receiving credit for their work.
The post documents the state of props practices and related processes in detail for both Trac/SVN and GitHub. No major changes have been made to these practices since the publish date of that post.
After taking into account all of the feedback received from that proposal, a new policy is now in place for maintainers.
New requirement for 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/ GitHub merge commit messages
Starting today, it is required that GitHub merge commit messages for Gutenberg include credits for all contributors following the same guidance as Core SVN commits:
Props should be given to all those who contributed to the final commit, whether through patches, refreshed patches, code suggested otherwise, design, writing, user testing, or other significant investments of time and effort.
In Core SVN, this is done as Props x, y, z. In GitHub, this will be done using Co-authored-by trailers. To avoid having personal emails in the commit log of the project (or having to know which personal email someone has associated with their GitHub account at a given time), a contributor’s GitHub and WordPress.orgWordPress.orgThe 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/ usernames should be used in the following format:
This practice defines a consistent expected pattern that can be reliably parsed by a script to collect contributions for a repository from a GitGitGit is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning fast performance. Most modern plugin and theme development is being done with this version control system. https://git-scm.com/. log in the same fashion as the Core SVN repository.
In order to make this new practice easier for committers and maintainers, a new tool has been merged into the code bases.
Introducing Props Bot
Props Bot is a new GitHub Action that will compile a list of contributors for a given pull request. The bot will leave a comment with a list of contributors formatted for use in both Trac SVN and GitHub.
The comment will be continuously updated as new activity occurs. Additionally, the bot can be manually run by adding the props-bot label to the pull request.
Types of activity included:
Anyone who publishes commits to the PR’s 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"..
Anyone who left a review or responded to a review on the PR.
Anyone who commented on the PR.
Anyone who created an issue that is attached to the PR.
Anyone who commented on issues attached to the PR.
As of [57517] in wordpress-develop, and 91450bd in WordPress/gutenberg, Props Bot is now available. 🎉
An example comment by Props Bot on a pull request.
The bot relies on an active connection between a WordPress.org and GitHub account. For a step-by-step guide on connecting these accounts, please check out the new page in the Core Handbook.
The bot can be used in any GitHub repository, not just ones under the WordPress organization. However, it’s required for the Gutenberg repository, and official WordPress repositories are strongly encouraged to use it since it will allow the project to appropriately credit contributors in WordPress releases more easily.
What doesn’t Props Bot do?
While the basics of collecting contributors is handled by Props Bot, there are still some things not yet handled by Props Bot:
Manually include someone who has not directly interacted with the PR or linked issues.
Contributors who only interact on Trac tickets relevant to the PR need to be manually included.
Only the first 100 comments are currently checked (see props-bot-action 41).
The easiest way to confirm your accounts are connected is by viewing your w.org profile.
There is one additional step that all contributors should take, even if you have previously connected your accounts.
An added benefit of this new practice is that all props given using this new format will be shown on your GitHub profile’s activity graph. However, this depends on your w.org Git email being added as an alias to your GitHub account (example: desrosj@git.wordpress.org). This can be done by visiting the Settings > Emails page on GitHub.
Note: You’ll see an orange “unverified” notice next to your @git.wordpress.org email after adding it as an alias in GitHub. In the future, email forwarding may be configured to allow these emails to be verified. See this Making Systems request for more information.
How are unlinked contributors handled?
When unlinked contributors are detected, Props Bot will 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.” them in the comment, requesting they establish a connection and link to the handbook page.
Any unlinked contributors are noted in the message provided by Props Bot as a way to associate the person’s contributions with their w.org account should they connect their accounts after the PR is merged. This should be included in the merge commit message.
Contributors without a connected w.org account can not be credited in the w.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. and will not have their contributions show up on their GitHub profile.
As a Core CommittercommitterA 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. or repository maintainer, what do I need to do?
The list of Co-authored-by trailers must be preceded by a blank line.
Co-authored-by trailers should be the last thing in a commit message.
The unlinked contributors must come before the Co-authored-by trailers.
Unlinked contributors should be entered in one line preceded by Unlinked contributors:, each one separated by a comma and a space (, ), and a period after the last one. Example: Unlinked contributors: nacin, matt.
Usernames must not start with an @ (at) sign.
When manually adding someone, please only use their GitHub and WordPress.org usernames in the following format: Co-authored-by: githubusername <dotorgusername@git.wordpress.org>.
The only accounts that are allowed to be noted with a non-w.org email are bot accounts (dependabot or github-actions). It’s important to leave these bots as listed by the GitHub generated Co-authored-by trailer so future contributors know which bots were involved in the changes.
If there are contributors already noted with Co-authored-by in the suggested commit message, verify they are also included in the list provided by Props Bot before removing. These will be in GitHub format and should be converted to the above w.org format. Deleting the GitHub formatted ones will ensure an accurate contributor count for each commit, but it’s not required. Non w.org emails will be ignored by the props parsing scripts.
If a contributor’s w.org username is unknown, add their GitHub username to the “Unlinked contributors” list.
If there are Signed-off-by trailers in the suggested commit message, leave them in place above Co-authored-by trailers. These serve a different purpose and are ignored in the context of collecting props.
Note: The above list is a synced pattern. As it’s improved over time, the changes will be reflected in this post. The above list may be different than what was originally published.
If you don’t see a Props Bot comment on your PR, you may need to pull in the latest changed in trunk.
The action does not currently support using the @v1 notation in the value of uses for a step. For now, using trunk is recommended to help test Props Bot.
The Action has no tests. Contributions are more than welcome!
Because this practice was not in place during the 6.5 release cycle, the previously documented process will be used one more time. The timing of this change is such that the work for 6.6 in the Gutenberg release is about to begin, giving us an entire release cycle using this process and allowing the 6.6 release to switch to automating props collection from the Gutenberg repository.
Summary
While these changes do not solve contribution tracking for every team, every workflow, and every tool that’s to make WordPress, this new practice, combined with the Props Bot action, will bring a consistent standard and level of attribution that can be parsed more easily across more areas of the project.
This is version 1 of this change. All feedback and testing is welcome. There will likely be some refinements required after wider testing!
A WordPress release is a sum of all the contributions made during each release cycle, and use of this Props Bot will help us more accurately thank every contributor. ❤️
Props for Props Bot Contributions
A post about props would not be complete without some props! Big props go out to @dharm1025 for helping to get the initial code converted from a generic 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/. file to a GitHub Action. Thank you to @jeffpaul and @jorbin for working closely to refine the action, create the new handbook pages, modify existing ones as needed, and test the bot. And thanks to @dd32 for creating the underlying w.org API endpoint to return w.org profiles for GitHub usernames making this possible.
8 years ago, a ticket was created in WordPress, suggesting a PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher autoloader for WordPress CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. classes. In that ticketticketCreated for both bug reports and feature development on the bug tracker., many things were discussed regarding the concept of adding a PHP autoloader in WordPress. That ticket discusses adding an 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. to allow 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 developers to register their own classes, it discusses using Composer, as well as other more nuanced topics of implementing an autoloader in WP.
It is a long thread, but a recommended read for anyone wanting to get some more context and historical data. That initial discussion was derailed several times, so for the purposes of this proposal, a new ticket was created on #60414
Since then, a lot of things have changed – both in PHP and in WordPress. Despite all these changes, WordPress Core still loads most of its codebase on each page load – regardless of whether a file is used or not. That means that WordPress takes more time to load, and at the same time consumes more memory than it should.
The time cost of including these extra files is pretty small (almost negligible), but the memory cost is not – especially for small sites running on shared hosting. By including files that are never used on a page load, we’re forcing servers to keep them in-memory, which is obviously sub-optimal.
Current work
In 2022, work started in a pull request to implement a PHP autoloader for Core classes. In the 20 months since the PR was initially created, it has received feedback, has been polished, and has been tested thoroughly. It has been kept up-to-date with the 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. version of WordPress and is ready for production.
Initial tests show an improvement in loading time, CPU resources and memory consumption. On average, the improvements server-side for a new WP site with no plugins installed and using the default theme, are approximately 2-3ms for load-time, 0.5-1.5% for CPU time and 5-7% for memory consumption.
What the proposed implementation does
The implementation in that pull-request was kept simple and minimal:
Introduced a WP_Autoload class.
Added a CONST in the object, containing the classMap for classes & their filenames. A hardcoded classMap was deemed preferable because of legacy reasons. WordPress classes don’t (currently) have namespaces or standardized mapping. By using a hardcoded classMap we can introduce an autoloader, and facilitate future implementations & standardization.
Removed the include/require/include_once/require_once calls for files containing classes throughout the WP codebase
Included external libraries and their respective autoloaders in the Core autoloader.
What the proposed implementation does not do:
It does not introduce an API for plugins
The implementation does not introduce an API to allow plugins/themes to add their own classes to the autoloader. Instead, it only focuses on Core classes, keeping things minimal.
Though adding an API and/or method to allow plugins to add their classes to a centralized autoloader is something we can consider for the future, it is not a requirement for this initial implementation, and it would overcomplicate the initial steps of autoloading Core.
It does not use Composer
Since the Composer vs non-composer autoloader was one of the main points of discussion in the 8-year-old ticket, it’s worth mentioning here, and clarify some points:
Composer is a very mature and safe way to autoload classes. However, this initial implementation does not use it.
This proposal is for a minimally invasive, performance-optimized change. It implements autoloading using a hardcoded classMap. Still, It does take care of all the preliminary work so if it is decided that a Composer autoloader is what we want to do, then switching to that will be a relatively easy task. The current PR has a very narrow focus and serves as the first step towards modernizing the WP codebase.
Composer would allow us to automate generating the autoloader, so if deemed appropriate, we could modify the current proposal to implement that.
Adding an initial, minimal autoloader will not 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. a future Composer implementation. It is easier to start without it, and then add it if we find that we need it. Doing the reverse could prove more difficult, so this path was deemed safer as a first step.
Benefits
The result of that PR is a cleaner and faster codebase. But this change is not only beneficial to Core developers, it will also benefit the ecosystem as a whole:
Reduce friction for plugin developers: Right now, plugin developers usually need to check if a class exists, if it doesn’t then look up its location in Core files, include the file etc. Then and only then can they safely use what WP has to offer. Adding an autoloader makes things easier and removes a friction point for plugin developers who will now be able to directly use a WP class.
Improved performance: – no matter how small the improvement is, it can make a big difference for hosts and larger sites.
This is the first step towards modernizing the WP codebase. Though in itself it may appear like a marginal (but still very worthy) performance improvement, it opens the door to more improvements in the future of WordPress without any backwards-compatibility concerns.
A word about overriding Core classes
One concern has already been raised, and I want to immediately tackle it: adding an autoloader for WordPress Core classes would mean that it will be possible to override these classes by loading another file early enough. We should not base code decisions in Core on how developers might misuse it… There are always ways that someone can mess up WordPress by doing the wrong thing. Being able to override Core classes can be seen both a pro and a con, depending on our point of view – but should not be a deciding factor.
It can benefit hosts who need to override things because of idiosyncracies in their hosting environment.
It can benefit site-builders who don’t know any better and are currently “hacking” Core files, making it impossible to later apply security updates. As WP purists, we know not to ever do that, but we can’t assume that everyone else is as mindful as we are.
It is a shift in the way we think about WP classes, and change is not easy. Autoloading classes is a battle-tested and established good practice in all modern applications.
When adding a new class file to WP-Core, we’ll need to update the classMap accordingly. This is not a big issue however, since we won’t have to include the files we add – just add them to the class-map.
Adding a PHP autoloader to WordPress is a relatively trivial change as the PR demonstrates. It comes with nice benefits and modernizes the way we handle class loading. Because it also represents a fundamental change in the way we include files and classes in the future, your feedback would be greatly appreciated.
Greetings from your friendly neighborhood 6.5 release coordinators—@priethor, @akshayar, and @marybaum! Below you will find the same calendar @francina built and used for 6.4, only updated with dates and other details for 6.5.
As we saw with several recent releases, things can change at the last minute. Still, the coordinators are starting to anticipate what could happen; work hard to respect the calendar—what is supposed to happen; and address what will happen in real time going forward, by letting you know of any change promptly.
If you can fill any of those roles, please add your name in the comments, with the date and role, so the three of us can finalize the calendar. It would be great to heave two people with the same access level for each party—then we can help each other if a party takes longer than expected.
Over the last three years or so, squads have aimed to start parties at 16:00 UTC because it does cover a range of time zones. We do have squad members in APAC, so it would be nice to start a little earlier — maybe 14:00 UTC, particularly once daylight time starts to kick in across the world.
For now, let’s think about 14:00 UTC and adjust as needed going forward.
Please check the Hosting Release Page in the Handbook to read about the different roles.
Thank you for the team effort!
Date/Time
Milestone
Host
CommittercommitterA 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.
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
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
This Dev Chat continues the experiment to focus chat time on discussions related to open CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. proposals and release issues, rather than repeating links already highlighted in the curated agendas.
Following announcement of yesterday’s 6.4.3 release, @jorbin noted that there was one issue of note, but that there were workarounds available at this time. @jorbin further gave props to those who helped facilitate the release.
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. Publish Date
@jorbin was under the impression that neither the dev blogblog(versus network, site) team nor 6.4 release leads were interested in moving forward with the proposal. @webcommsat shared that 6.4 docs release leads didn’t see 6.4 as the deadline, and discussions were continuing. @joemcgill agreed that the proposal wasn’t release specific, but rather an adjustment to timing of when field guide information is released. @hellofromtonya also added that the dev blog team has opened a discussion to track the second part of the proposal.
@jeffpaulreferred to @chanthaboune‘s comment of where best to separate field guide content based on audiences, suggesting the proposal could be adjusted accordingly. @jeffpaul added that some folks have difficulty processing field guide information to determine what is relevant and actionable, which @hellofromtonya agreed should be explored. @webcommsat agreed with the notion to target field guide content to particular audiences, but also to look at how it relates to other new content produced for the release.
@ironprogrammer asked if the field guide info would be more easily consumable if it was split into a canonical structure, such as wordpress.org/6-5/field-guide/, with subpages that match particular areas or audiences.
@webcommsat noted that segmentation between audiences has grown, and suggested it’s a good time to use teams’ audience-specific insights to improve the field guide format. She added that exploring how best to utilize the limited people and time for the Docs team would be an important factor in implementing improvements. @jeffpaul agreed with concerns around challenges in gathering/publishing content, but noted that the issue should be considered as separate from the proposal.
@jorbinshared that the original published field guide was the result of an overly long email sent to 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 developers.
First-time Docs Co-Lead@estelaris 🎉 asked about adding additional comments to the proposal. @jorbin noted that Make/Core comments close automatically after 180 days (~6 months). @costdev shared that adding the #keep-comments-opentagtagA 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.) would reenable them, but recommended removing the tag once an updated timeframe for feedback has been reached. @jorbinupdated the Core handbook to reflect this info.
@joemcgill pointed out that the team should review all current channels where field guide-related content is published, to check whether only updating the field guide [in one place] would sufficiently improve the broader sharing of release updates to the community. He suggested engaging with the Docs and Marketing teams to move forward, and @estelaris noted she would begin by sharing with Docs. @webcommsat suggested looping in Training as well. @laurlittle noted that the Marketing team could brainstorm on the proposal for future releases, if not 6.5.
In response to @joemcgill, @webcommsat noted that there have been past lists of channels and audiences, and suspects more current info should be available. She also suggested it might be helpful to have a single post that links out to the various user groups identified earlier, and to link to that post from the About page.
@jorbin referred back to @jeffpaul‘s input and asserted that the dev blog and other team areas might be better places to communicate field guide information, as opposed to Make/Core. @hellofromtonya asked if, considering this perspective, the proposal was actionable by the Core team, or if the proposal should be re-worked as a cross-team collaboration. @jorbin suggested that the teams publishing the field guide info would take on the proposal.
@joemcgill noted that it can be difficult to know the status of a proposal, suggesting some way of flagging these posts. @marybaum suggested a visual system to convey “stalled”, “live”, etc, and @joemcgill raised the idea of a 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. pattern. @desrosj shared that in past proposals (example) he has added status info to the top of the post, assuming the status was clear.
@hellofromtonya wrapped up the discussion based on the chat, concluding that the proposal be marked closed (“not accepted”), or must be picked up by another team(s).
Actions:
Part 1: Move Make/Core field guide publication ahead one week, aligning with last scheduled 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., rather than RC1. Not accepted ❌
Part 2: Start publishing a simplified field guide to the WordPress Developer Blog. Not accepted ❌
Other teams to explore revising and adopting this proposal:
@laurlittle to raise the proposal to Marketing for possible brainstorm.
@webcommsat to 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. in Training to gauge their interest in furthering the proposal.
To highlight in dev blog.
Open Floor
@hellofromtonya reminded everyone that 6.5 Beta 1 is approaching fast: February 13 (less than two weeks).
“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).
This release, which includes 264 pull requests (that’s a lot of work!), can be labeled mainly as a ‘code quality’ one, as it includes two important refactors in both Fonts and Interactivity APIs.
It also includes some improvements in the new “Data Views” experiment, 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.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. improvements, and finally, a feature that all developers have been waiting for: the ability to extend allowed blocks within a parent block.
New Block 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. allowed Blocks
Until now, there has been no way to 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. the allowed blocks in an inner block area. This means that developers could not specify which blocks could be inside a parent block without editing the parent block’s edit file. Imagine you’ve just created an amazing icon block to include in the navigation block; now, you can whitelist it using a filter.
Several smaller edit actions are available in the post editor but not the site editor. The misalignment means users sometimes need to hop between editors, which can be frustrating. This Gutenberg version includes all page edit features in both editors.
Also, the 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. and the Fonts Library API have received a big refactor. These APIs are getting close to the 6.5 release, so it’s a great time to test them.
Other Notable Highlights
New Interactivity API directives
The Interactivity API now includes several new directives that will be incredibly helpful when creating interactive blocks.
data-wp-on-window and data-wp-on-document to handle global events like scroll, keypress, load, ready, etc.
data-wp-each to render lists.
data-wp-run to execute custom logic while rendering an element with directives.
Footnotes available for custom post types
Footnotes are available for all post types that
Are public and appear in the REST APIREST APIThe 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/..
Supports all of the following: editor, custom fields, and 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..
Changelog
Features
Interactivity API
Add wp-data-on-window and wp-data-on-document directives. (57931)
Keep Link UI open upon initial link creation when used in RichText. (57726)
List View: Displace list view items when dragging (a bit more WYSIWYGWhat You See Is What You GetWhat You See Is What You Get. Most commonly used in relation to editors, where changes made in edit mode reflect exactly as they will translate to the published page.). (56625)
Show initial suggestions in rich text Link UI. (57743)
Disable lock button if user cannot control lock state. (57274)
Use ClipboardJS latest version and clean up focus loss workaround. (57156)
Dimensions: Add Aspect Ratio block support. (56897)
Block Library
Add more 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. options to the post navigation link. (48912)
Better navigation link variations for post types / taxonomies. (56100)
Remove “blocks” from copy and delete labels. (57769)
Pullquote Block: Add padding and margin support. (45731)
Video Block: Add raw transformation from videohtmlHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.. (47159)
Aspect ratio: Remove support on the Group block for now. (58414)
Image block: Move UI for lightbox from 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. to the content toolbar alongside link settings. (57608)
Data Views
DataViews: Enable grid layout for templates & parts by default. (58137)
DataViews: Make dataviews powered page patterns stable. (58139)
DataViews: Make the “Manage Pages” stable. (58166)
Use a patchpatchA special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. format and support linkTarget of core/button for Pattern Overrides. (58165)
Patterns
Add image block support for pattern overrides. (57909)
Outline editable blocks that are within a content-locked container. (57901)
Add description to the save panel 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. when nothing is checked. (57716)
Font Library
Update the default collection data URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org to the wordpress.orgWordPress.orgThe 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/ cdn. (58186)
Font Library: Refactor stylesheet using CSSCSSCascading Style Sheets. variables (58237)
Font Library Modal: Reset the selected font when installing a new font. (57817)
Font Library: Disable font library UI using a PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher filter. (57818)
Font Library: Filter fonts upload directory. (57697)
Font Library: Use data or src file to define font collection data. (57734)
Update Navigation block to render hooked inner blocks. (57754)
Add gettext content when translating ‘Header’. (51066)
Template Editor
Remove template-only mode from editor and edit-post packages. (57700)
New APIs
Block API
Block Bindings API: Add block bindings PHP registration mechanisms and “Post 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.” source under the experimental flag. (57249)
Block Bindings API: Refactor logic into Block Bindings class and singleton pattern. (57742)
Bug Fixes
Block Library
AvatarAvatarAn avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name. block: Fix broken aligments in the editor. (58114)
Embed Block: Fix retry processing when embedding with trailing slash fails. (58007)
Lightbox: Fix “Expand on click” control being disabled unintentionally. (56053)
Modified Date Block: Don’t render change date tool. (57914)
Only prioritise Quote transform where relevant. (57749)
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.: Fix posts list variation detection. (58194)
#56734 When there is no font, the border should not appear. Display further guidance text. (56825)
Fluid typography: Do not calculate fluid font size when min and max viewport widths are equal. (57866)
Block Editor
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.: Content locking does not stops when an outside block is selected. (57737)
LinkControl: Remove unnecessary right padding of input fields. (57784)
Custom Fields
Block Bindings: Fix button popover not showing in patterns. (58219)
Interactivity API: Fix flaky test on-window. (58134)
Fix flaky test on-window, remove duplicate expect on-document. (58181)
Interactivity: Fix broken reactReactReact is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. usage in published package. (58258)
Fix visual indication of switch to default template in the post editor. (57718)
Site Editor
(editor)(fix) Append the edit-post-header-toolbar class in NavigableToolbar for backward compatibility with 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 GUI injections. (58154)
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)
Site Editor
Fix font variants count color contrast ratio and l10nL10nLocalization, or the act of translating code into one's own language. Also see internationalization. Often written with an uppercase L so it is not confused with the capital letter i or the numeral 1. WordPress has a capable and dynamic group of polyglots who take WordPress to more than 70 different locales.. (58117)
Make the site hub View Site link always visible. (57423)
Block Editor
Fix parent selector button focus style and metrics. (57728)
Restore visual separator between mover buttons when show button label is on. (57640)
Widgets Editor
Fix Widgets page Undo and Redo accessibility and keyboard interaction. (57677)
Block editor: Avoid list re-rendering on select. (57188)
Block editor: Don’t register shortcuts for preview editors. (57984)
Block editor: Fix performance regression after #57950. (57971)
Block editor: Use context for useBlockEditingMode. (57950)
BlockSwitcher: Defer transform calculations until the Dropdown is open. (57892)
Call variation through callback so it’s only loaded when needed – in support of tracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. 59969. (56952)
Footnotes: Combine format store subscription. (58129)
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.: Calc compat styles once per page load. (57798)
Measure typing with the top toolbar enabled. (57709)
Meta boxes: Don’t initialise if there are none. (57182)
Components: Move CHANGELOG entries under the correct release. (57885)
Docs: Fix typo in “The block wrapper” document. (58106)
Docs: Use ‘key’ in ‘editor.BlockEdit’ filter code examples. (58119)
Document files/directories requiring backmerging to WP CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. for 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.. (58064)
Fix the iframe markup of the embed video in the Quick Start Guide. (57857)
Remove unused state and rename props to attributes in getElement(). (57974)
HTML API
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. updates from Core. (57022)
Update the cherry pick script to work with the new version of gh. (57917)
Scripts: Remove unused variable in bin/list-experimental-api-matches.sh. (57771)
(chore) Revert bump to the v17.5.1 (draft) due to 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. in the release found by manual testing. (58027)
These will focus on open proposals in coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. and release items.
This week will provide a discussion opportunity during Dev Chat to explore this open core proposal relating to major release Field Guides.
This post recommends what could be next. One suggestion is to rename the channel as ‘outreach’ and use it in a wider way to reach site builders and extenders. Another use of this channel could be to assist several projects which could use SlackSlackSlack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/. support in the WordPress space for discussion, clarification, and overall ruminating on future features coming to WordPress.
Timescales:
Feedback deadline: February 12, 2024.
A Hallway Hangout is scheduled on February 20, 2024, at 15:00 UTC to further discuss this proposal, the comments, and the next steps.
Could you help curate a Call for Volunteers to review the open proposals on Make/Core and create a list of unresolved ones to discuss during Dev Chat meetings?
Changes on TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between January 22 and January 29, 2024:
48 commits
64 contributors
60 tickets created
4 tickets reopened
67 tickets closed
welcome to two new contributors to core this last week
Core-editor updates
Props to @annezazu for collating and sharing this list.
Pattern overrides: there are some current questions around how this features ties to 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. Renaming 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. and how the internal block ids are generated and used. Right now, we can find the block names through block ids, but we cannot do the same the other way around.
Block Bindings: the experimental flag was removed along with an outline of next steps for Gutenberg RC, Beta, and what’s out of scope for 6.5 (including when to 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.). For out of scope, this includes a UI for users to add bindings. A ~4 min video walks you through the current status 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.!
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
Any updates, 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. scrub list or updates on 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?
Beta 1 for WordPress 6.5 scheduled for February 13, 2024.
Also see the links under the Core-editor updates for 6.5 heading above.
Latest 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.: 6.4.3
@pbearne started the dev notesdev noteEach 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. to try and focus the changes for optimized autoloaded PR https://github.com/WordPress/wordpress-develop/pull/5671
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.
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.
@westonruter Regarding Interactivity API, I shared this a few days in brief, but excited to share a preemptive INP win for WordPress 6.5: I found an issue where there was a long task occurring during page load (or whenever interactive blocks are hydrated), especially when there is not a trivial number of interactive blocks on the page (e.g. 20). (Recall that any image 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. with lightbox behavior is an interactive block now.) When profiling with 6x CPU throttling the hydration was causing a 300+ ms long task. I opened a pull request to fix this by yielding to the main thread between hydration of each interactive block. It should be included in WP 6.5 with the initial public availability of the Interactivity API.
I have another pull request open which will defer hydration of interactive blocks until the node nears the viewport. This will require more iteration with 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/ team and won’t be part of WP 6.5, but it’s another promising performance improvement.
Land AVIF support in coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.
Client side image compression
Notes from today’s meeting:
@westonruter For Image Loading Optimization, @thelovekesh has been working on getting a Webpack build process in place to ensure there is a local copy of web-vitals.js. It is now merged. This is related to his work on Partytown
@westonruter Regarding sizes, I was doing some research yesterday on how well (or not) the sizes attribute is used in WordPress… The Web Almanac has a section on sizes from 2022 that shows it is a problem, but doesn’t single out WordPress specifically. I re-ran the query for determining problematic usage with sizes limited to WordPress, and compared December 2022 with December 2023, and the problem is getting worse. I’m hoping to share more specific numbers this week.
@adamsilverstein AVIF ticketticketCreated for both bug reports and feature development on the bug tracker. if anyone wants to test or review the PR – https://core.trac.wordpress.org/ticket/51228 with AVIF support now in Edge stable, I marked this for commit
@swissspidy Regarding stabilization it’s good to see that the screenshot above relating to Performant Translations merge proves that our current setup is stable enough to see these drops
Ecosystem Tools
Link to roadmap projects and link to the GitHub repo for 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 Checker
Working on test suite update so that cover plugins – POC PR 956
@mukesh27 for Plugin Check, nothing more, just been offering support by conducting code reviews for open PRs.
@swissspidy we should be able to release v1.0 of Plugin Check very soon. Just some outstanding questions about how to deployDeployLaunching code from a local development environment to the production web server, so that it's available to visitors., and whether/where to write a blogblog(versus network, site) post about it
@thelovekesh I will be opening an issue to discuss if we should continue using “wp-env” in CI for unit testing. It will also cover optimizing existing workflows. POC on optimizing workflows and reducing dependency from third-party actions – https://github.com/thelovekesh/performance/pull/2
Open Floor
@pbearne would like to invite you all to WordCampWordCampWordCamps 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. Canada July 11-13, 2024 https://canada.wordcamp.org/2024
Here is the agenda for this week’s performance team meeting scheduled for Jan 30, 2024 at 16:00 UTC. If you have any topics you’d like to add to this agenda, please add them in the comments below.
You must be logged in to post a comment.