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.
(Updated 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. dependencies feature discussion request)
The live meeting will focus on the discussion of proposals and releases, updates on 6.5, and have an open floor section. Additional items will be referred to in the various curated agenda sections. If you have ticketticketCreated for both bug reports and feature development on the bug tracker. requests for help, please do continue to post details in the comments section at the end of this post.
Quick links to agenda sections
Announcements
Welcome to the two team reps for the remainder of 2024: Joe McGill (@joemcgill) and Sarah Norris (@mikachan)! With the increasing collaborative approach between coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. and core-editor, it is wonderful to have reps from both parts of the team. A post formally introducing them will be published later this month.
@hellofromtonya and @webcommsat are doing a handover, and Abha (@abhanonstopnewsuk on SlackSlackSlack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ to tagtagA directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) with any updates) will continue to curate the agenda until Sarah is back on February 21.
This post recommends next steps, including a rename of the channel as โoutreachโ to use it more widely to reach site builders and extenders. It could also be used to assist several projects which could useย Slackย 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?
A Week in Core โ February 5, 2024 โ props to @audrasjb. Onย TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.,ย between January 29 and February 5, 2024, there were.
66 commits
117 contributors
79 tickets created
8 tickets reopened
56 tickets closed
welcome to 25 new core contributorsCore ContributorsCore contributors are those who have worked on a release of WordPress, by creating the functions or finding and patching bugs. These contributions are done through Trac.
https://core.trac.wordpress.org in core
Props to @annezazu for collating and sharing this list.
17.7 RC1 is set to be released this week, marking the last 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/ version to make it into 6.5.
Font Library: work continues to merge the Font Library 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. redesign and a quick change was made to make the Font Library more discoverable, with the need for more feedback as 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 lands.
Pattern overrides: a PR is underway to add theย block name to the pattern content dataย to help support future features, like shuffling patterns that are within the same categoryCategoryThe 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. and a larger effort is underway toย tighten up the accessibility of these non-editable bound fields.
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. Bindings: afterย lots of discussions in slack, block bindings is moving forward to support custom fields and the ability to override blocks in synced patterns. The project as a whole is veryย open to feedback from extenders to see what can be added in the future.
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 in theย #core-dev-blogย channel.
Forthcoming release updates
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
Updates from the release squad can be shared in the Dev Chat. In addition, there are also the following updates identified and discussed in Slack.
For anyone following on in the 6.5 release leads channel, the latest async updates from the various areas starts at this Slack message.
This includes an update on the monitoring of a performance regression, which is being addressed.
A final decision is needed on a design concept for the feature tiles.
Discussion on Patterns in Classic Themes feature and reviews to help progress this area. Update 16:06 UTC, Feb 7: this is regarded as resolved. Thank you for all those who were involved.
Actions include: getting more general feedback from core devs. Updated: resolved, as above.
4. Call for Testers early draft for 6.5. Publication date is just before Beta 1. Discussion on Slack if you are able to help.
5. Next general bugbugA bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. scrubs for 6.5:
You can also view discussions taking place inย #core-upgrade-install channel on Slack. This has been highlighted as a potentially very valuable feature for 6.5 and was merged into โ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.โ on Tuesday. Note this is the last dev chat before Beta 1.
Also see the links under the Core-editor updates for 6.5 heading above.
Tickets to highlight for assistance
Tickets for 6.5 will be prioritized. Tickets can be referenced in the comments section of this agenda if you are unable to make the meeting and for asynchronous involvement.
Open floor
Raising awareness and amplifying the new core contributor sessions โ the ticket is on the Marketing Team GitHub. It picks up a discussion in the sessions and from recent contributor days.
Action: comment on the ticket for any support you may be able to offer or if you can identify opportunities to amplify awareness of the sessions.
The Phase 3 Media Meeting is scheduled for Thursday February 8, 2024 at 00:00 UTC in theย core-mediaย channel onย Make WordPress Slack. This is a follow up to the post announcing this meeting that can be found here. If you have any topics youโd like to add to this agenda, please add them in the comments below.
Meeting agenda:
Below is an outline to drive discussion for the meeting. We will approach these topics broadly and get a sense
Quick round of intros.
Overview of the objectives for Phase 3 Media
Discussion on alignment of CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. Media focus to help the process
Discuss communication channels and checkpoints to be used for regular updates
Media Library
At a high level letโs discuss what the future of the Media Library looks like.
More global insight into media usage at the attachment level
Where is a media being used if at all
What alt attributes are being defined for it in its usage
Duplicate detection
Discuss the BlockBlockBlock is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Editorโs role in editing media.
Back-compat relative to existing Media Library, Uploads, and Third party plugins
Discuss the transition process from the existing media library to the future media library. What does that look like?
What are the intermediary steps between where we are now and a new, fully integrated media library?
Will the new media library be available outside of the editor?
Update from William Bay on his Media Library experimentation, where Will can share some thoughts on sorting, filtering, and basic functionalities being tested in his experimental media library project.
Discuss the feasibility and desirability of using the Block Editor as the primary interface for media attachment editing.
Can we in a future state use the Block Editor as the attachment image editor using a Media Attachment Block that gives editing capabilitiescapabilityAย 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). of the image block but updating the source image or creating new attachments.
Opportunity for attendees to bring up topics not covered on the agenda, share updates, or ask questions.
This meeting happens in the #core-media channel. To join the meeting, youโll need an account on the Make WordPress Slack. Props @joedolson for helping prepare and proofread this post.
Reminder that 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 for WordPress 6.5 is scheduled for Tuesday February 13
@joemcgill My feeling is that this solves such a narrow problem, that the chance of 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. is not worth the benefit until there is consensus on the approach and there is some time for this to soak in coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.. Iโll leave feedback on the ticketticketCreated for both bug reports and feature development on the bug tracker..
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.
Speculative prerendering
Notes from todayโs meeting:
@westonruter For Interactivity API, Iโve continued providing feedback for theย pull request that adds server-side processing of directives. Itโs almost there! This will be great because it will mean that client-side JSJSJavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. will have to do less, resulting in better metrics likely for LCP, CLS, and INP.
@adamsilverstein I have been working on researching INP opportunities using httparchive queries in a colab which I plan to summarize in a doc to share with the team. I have made good progress and hope to have a summary to share next week.
@thelovekesh https://github.com/WordPress/performance/pull/556 is ready for final review. Also as mentioned by @joemcgill to release this module as standalone 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., @westonruter has made some changes to PR base.
@joemcgill Still tracking browser support for auto-sizes for lazy loaded images, which was shipped in Chrome 121 and quickly moved back behind an experimental flag due to issues discovered. Weโre tracking the issueย here, with links to upstream convos
@mukesh27 forย Plugin Check, nothing more, just been offering support by conducting code reviews for open PRs.
@swissspidy pingedย @bordoni earlier to ask about publishing v1.0 in the plugin repo. If anyone here has adminadmin(and super admin) access toย https://github.com/WordPress/plugin-check/ย I could at least add the svn credentials there already in the meantime
Here is the agenda for this weekโs performance team meeting scheduled for Feb 6, 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.
Welcome back to a new issue ofย Week inย CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.. Letโs take a look at what changed onย TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.ย between January 29 and February 5, 2024.
66 commits
117 contributors
79 tickets created
8 tickets reopened
56 tickets closed
TicketticketCreated for both bug reports and feature development on the bug tracker.ย numbers are based on theย Trac timeline for the period above. The following is a summary of commits, organized by component and/or focus.
Code changes
Administration
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): Use the default cursor style for labels and disabled form controls โ #59733
Mock 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.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. response in WP_REST_Plugins_Controller_Test โ #59647
Some improvements to the Props Bot workflow โ #60417
Test against MySQLMySQLMySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com 8.3 โ #59779
Update the codecov/codecov-action action โ #59658
Remove redundant unregister call in 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. bindings tear down โ #60282
Bundled Themes
Twenty Eleven: Fix typo in twentyeleven_widgets_init() description โ #60383
Twenty Fifteen: Fix typo in css/blocks.css โ #60383
Twenty Twenty-Three: Rename Comments template part โ #56999
Coding Standards
Remove unnecessary access and internal annotations from two functions in WP_REST_Templates_Controller โ #60358
Rename the $ID parameter to $post_id in trackback() โ #59650
Rename the $expires_offset variable in cache_javascript_headers() โ #59650
Add allowed_blocks field to block registration and 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/ โ #60403
Add viewStyle property to block.json for frontend-only block style โ #59673
Add deprecated functions from interactivity core blocks โ #60380
Fix PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher warning in Layout block support โ #60327
Fix Theme.jsonJSONJSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. font settings in unit testunit testCode written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see regression. โ #60341
Refactor the way block bindings sources are handled โ #60282
Remove shadow support via direct attribute โ #60377
Sanitize nested array in theme.json properly โ #60360
Update WordPress packages to 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/ 16.7 RC3 โ #60315
Update the WordPress packages to the Gutenberg 16.7 RC2 version โ #60315
Update the minimum compatible version of Gutenberg โ #60315
fix small typos in block bindings API docblocks โ #60282, #60386
introduce dimensions.aspectRatio block support โ #60365
reduce specificity of block style variation selector โ #60312
General
Add tests for array_is_list polyfill added in r57337 โ #55105
HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. API
Fix CDATA lookalike matching invalidinvalidA resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. CDATA โ #60406
Fix void tagtagA directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) nesting with next_token โ #60382
Reset parser state after seeking to bookmark โ #60428
HTTPHTTPHTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. API
Ensure cookie names are cast to strings โ #58566
I18Ni18nInternationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.
Add missing space after foreach keyword โ #59656
Add type declaration to new method missed in [57518] โ #59656
Delete .l10n.php files when deleting a theme โ #59656
Ensure .l10n.php files are deleted when upgrading language packs โ #59656
Fix plural forms parsing in WP_Translation_File โ #59656
Improve singular lookup of pluralized strings โ #59656
Improve singular lookup of pluralized strings โ #59656
Load new translationtranslationThe process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. library in wp_load_translations_early() โ #59656
Revert [57386] pending further investigation โ #59656
Support loading .l10n.php translation files on their own โ #59656
Upgrade/Install
When populating options, maybe_serialize instead of always serialize
Media
Prevent local edits during media upload โ #58783, #23374
Add route for single styles revisionsRevisionsThe WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision. โ #59810
Support assigning terms when creating attachments โ #57897
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 by 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 by 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 7.4 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.
Update February 13, 2024: The release party for 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. 2, on Tuesday, February 20, 2024, will start at 16:00 after a one-hour code freeze.
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.
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
You must be logged in to post a comment.