Agenda for devchat, special #WCUS session, September 11, 2022

1. Welcome

Welcome to a very special WordCampWordCamp WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what they’ve learned throughout the year and share the joy. Learn more. US Contributor DayContributor Day Contributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of https://make.wordpress.org/ There are many teams that people can participate in, each with a different focus. https://2017.us.wordcamp.org/contributor-day/ https://make.wordpress.org/support/handbook/getting-started/getting-started-at-a-contributor-day/. edition of dev chat, which normally happens every Wednesday at 20:00 UTC.

If you are participating in Contributor Day, either on site or remotely, welcome! Please say hey when the chat starts, with an emoji wave or something that shows us who you are. @marybaum often uses a tennis ball when she’s not leading.

Also, if you’re physically at Contributor Day, Mary will do some live explaining at the table. But for the most part, this dev chat should give you a sense of what happens every week.

2. Announcements

Happy WordCamp US! If you’re here at the venue or across the planet, it’s great to see you!

GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ 14.1 RC1 will land September 13. 14.1 will be the last version that merges into WordPress 6.1. More details in this Editor chat summary.

3. Blogblog (versus network, site) posts of note

BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.-based template parts for Classic themes – highlighted in the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.-editor meeting
https://github.com/WordPress/gutenberg/pull/42729

Improving DevHub code references

A week in Core, September 5, 2022

Ending security updates for WordPress versions older than 4.0

Our dev chat cohost, @webcommsat, added these links to the post

Summary from last week’s dev chat
https://make.wordpress.org/core/2022/09/01/dev-chat-summary-august-31-2022/

WordPress 6.1 Release Product Walk-through, Thursday 13 September 2022, 16:00 UTC
https://make.wordpress.org/core/2022/09/05/6-1-product-walk-through/

Block-based template parts for Classic themes – highlighted in the core-editor meeting
https://github.com/WordPress/gutenberg/pull/42729

Add a dominant color proposal – shared in the Performance team last week.
https://make.wordpress.org/core/2022/07/21/proposal-add-a-dominant-color-background-to-images/

4. Upcoming releases

The next major is 6.1, and betaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 1 is September 20. A number of the release leads are in the house live!

The next minor, if tickets justify it, will be 6.0.3.

5. Components and tickets

@costdev has proposed an enhancement to the Trac ticket system.

(Ed. note: What a great ticketticket Created for both bug reports and feature development on the bug tracker. to tie all the moving parts together for Contributor Day!)

6. Open floor

Add your items to the comments!

#agenda, #core, #dev-chat, #week-in-core

A Week in Core – September 5, 2022

Welcome back to a new issue of Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Let’s take a look at what changed on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between August 29 and September 5, 2022.

  • 56 commits
  • 47 contributors
  • 64 tickets created
  • 5 tickets reopened
  • 40 tickets closed

The Core team is currently working on the next major releasemajor release A 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., WP 6.1 🛠

Ticketticket Created 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

Build/Test Tools

  • Correct the context variable being used when auto-retrying failed and cancelled workflows – #56407
  • Do not allow tests to fail for select PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher 8.1 test runs – #55656, #55652
  • Add @coversNothing tagtag A 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.) for PHP polyfill tests in phpunit/tests/compat/#39265, #55652
  • Consistently create a post fixture in old date or slug redirect tests – #55652
  • Consistently set the current user in the tests for retaining a sticky status – #55652
  • Correct some @covers tags in wp_html_split() and wptexturize() tests – #39265, #55652
  • Correct the @covers tag in a WP_REST_Posts_Controller test for unique post slugs – #52422, #55652
  • Correct the @covers tag in a WP_REST_URL_Details_Controller test for registered route – #55652
  • Correct the @covers tag in a WP_REST_URL_Details_Controller test for registered route – #55652
  • Correct the @covers tag in a test for strip_ws() utility function – #55652
  • Correct the @covers tag syntax in a taxonomy_exists() test with non-string taxonomyTaxonomy A 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.#56338, #55652
  • Correct the @covers tags in WP::send_headers() tests for feeds – #55652
  • Correct the cache invalidation tests for old date or slug redirect – #55652
  • Correct the tests for Site Health SQL versions matching readme.html#55791
  • Correctly back up and restore theme directories in Tests_Theme#55652
  • Explicitly mark empty REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think “phone app” or “website”) can communicate with the data store (think “database” or “file system”) https://developer.wordpress.org/rest-api/. tests as not performing any assertions – #40538, #41463, #55652
  • Increase coverage for translations applied to theme.jsonJSON JSON, 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.#54336
  • Increase the time difference for the expires headerHeader The 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. in Site Health page cache tests – #56041
  • Move Site Health unit testunit test Code 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. class to phpunit/tests/admin/#55652
  • Prevent an Ajax test for IMAGE_EDIT_OVERWRITE from being marked as risky – #55652
  • Remove @covers tags for native PHP functions in phpunit/tests/compat/#39265, #55652
  • Restore @covers tags for PHP polyfill tests in phpunit/tests/compat/#39265, #55652
  • Set the current user to Editor in test_utf8mb3_post_saves_with_emoji()#55652
  • Simplify and correct get_term_link() and get_edit_term_link()#55652
  • Temporarily skip the test for recommended PHP version in readme.html#55652
  • Use correct post_author value in WP_Test_REST_Attachments_Controller#55652

Bundled Themes

  • Twenty Twenty: Improve word wrap in comments required message – #56397

Code Modernization

  • Explicitly declare all properties in Gettext_Translations#56033
  • Explicitly declare all properties in Services_JSON#56033

Coding Standards

  • Use a consistent markup for line break tags across Core – #56457
  • Use more consistent formatting in wp-includes/class-json.php#55647
  • Use more meaningful variable names for output in the adminadmin (and super admin)#56448, #55647
  • Use more meaningful variable names in WP_Users_List_Table#56448, #55647

Docs

  • Add a @since note for the update_network_meta_cache parameter of WP_Network_Query::__construct()#55646
  • Simplify a comment in WP_Network_Query::get_networks() and WP_Site_Query::get_sites()#55646
  • Use third-person singular verbs for various function descriptions, as per docblocks standards – #55646

Editor

  • Preload settings and templates permissions – #56467
  • Ensure that timezone.offset passed to @wordpress/date is a float – #56459

General

  • Ensure bookmark query limits are numeric

Media

  • Output WebP by default when uploading JPEGs – #55443
  • revert the multi-mime feature – #55443

Networks and Sites

  • Use metadata api in *_network_options functions – #37181

Plugins

  • Escape output in error messages

Posts, Post Types

  • Allow bypassing of term classes in get_post_class()#37114
  • Escape output within the_meta()

REST API

  • Add the missing site_icon_url to the index – #56467

Script Loader

  • Allow a priority to be passed to wp_enqueue_block_support_styles()#56467
  • Pass startOfWeek setting to wordpress/date – #56467

Site Health

  • Bump the recommended MySQLMySQL MySQL 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/. and MariaDB versions – #55791, #meta5999, #meta6322
  • Ensure persistent object cache check short-circuit filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. also short-circuits multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site#56040
  • Introduce page cache check – #56041
  • Minor i18ni18n Internationalization, 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. cleanup in page cache and persistent object cache tests – #56041
  • Refine persistent object cache check tests – #56040
  • Some documentation and test improvements for WP_Site_Health#56041
  • Update persistent object cache check documentation URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org#56040
  • Use $wpdb->db_server_info() to retrieve database server type – #56484

Props

Thanks to the 47 people who contributed to WordPress Core on Trac last week: @jrf (9), @costdev (8), @mukesh27 (6), @flixos90 (4), @swissspidy (4), @Clorith (3), @paulkevan (3), @bernhard-reiter (3), @desrosj (3), @SergeyBiryukov (3), @peterwilsoncc (3), @azaozz (2), @audrasjb (2), @johnbillion (2), @antonvlasenko (2), @tykoted (2), @xknown (2), @furi3r (2), @davidbaumwald (2), @dd32 (2), @Mamaduka (2), @TimothyBlynJacobs (2), @spacedmonkey (2), @burhandodhy (1), @ramonopoly (1), @timothyblynjacobs (1), @martinkrcho (1), @sc0ttkclark (1), @westonruter (1), @johnjamesjacoby (1), @nidhidhandhukiya (1), @sabernhardt (1), @jeremyfelt (1), @Presskopp (1), @haritpanchal (1), @pento (1), @hilayt24 (1), @xparham (1), @tlovett1 (1), @system909 (1), @steveo2000 (1), @sebastianpisula (1), @invelity (1), @andrewserong (1), @bordoni (1), @boonebgorges (1), and @talldanwp (1).

Congrats and welcome to our 3 new contributors of the week: @system909, @steveo2000, @invelity ♥️

Core committers: @sergeybiryukov (40), @flixos90 (4), @audrasjb (3), @adamsilverstein (2), @noisysocks (2), @desrosj (2), @spacedmonkey (1), @peterwilsoncc (1), and @gziolo (1).

#6-1, #core, #week-in-core

A Week in Core – August 29, 2022

Welcome back to a new issue of Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Let’s take a look at what changed on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between August 22 and August 29, 2022.

  • 33 commits
  • 99 contributors
  • 46 tickets created
  • 10 tickets reopened
  • 45 tickets closed

The Core team is currently working on the next major releasemajor release A 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., WP 6.1 🛠

The team has also started working on Twenty Twenty-Three, the next bundled theme that will be included with WP 6.1 🎨

Ticketticket Created 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

Build/Test Tools

  • Automatically rerun a workflow the first time it fails – #56407
  • Enable running the tests on PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher 8.2 – #56009

Cache APIAPI An 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.

  • Remove private delegation from cache priming functions – #56386

Code Modernization

  • Explicitly declare WP-specific property in WP_SimplePie_File#56033
  • Explicitly declare all properties created in set_up() methods of various test classes – #56033
  • Explicitly declare all properties in POMO_Reader et al – #56033
  • Explicitly declare all properties in WP_Ajax_Upgrader_Skin#56033
  • Explicitly declare all properties in WP_Test_Stream#56033
  • Explicitly declare all properties in various tests – #56033
  • Remove dynamic properties in Tests_Comment_Walker#56033
  • Remove dynamic properties in WP_Test_REST_Posts_Controller#56033
  • Remove dynamic properties in WP_Test_REST_Users_Controller#56033
  • Remove dynamic properties in WP_UnitTestCase_Base#56033
  • Remove unused dynamic property in WP_Test_REST_Pages_Controller#56033

Coding Standards

  • Use strict comparisons in path_is_absolute()#36308

Docs

  • Correct typo in wp_maybe_clean_new_site_cache_on_update() parameter description – #55646

Editor

  • BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Patterns: Add new Footers categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging.#56416
  • Backportbackport A 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. bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes from GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ into Core for WP 6.0.2 RCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta).#56414
  • Ensure get_block_templates() returns unique templates or template parts – #56271
  • Ensure that timezone.offset passed to @wordpress/date is a float – #56459

Help/About

  • Improve vertical alignment in the Additional Design Tools section – #56210

Media

  • Account for Windows when normalizing file paths – #36308

Query

  • Cache post ID database query within WP_Query#22176, #55652

Site Health

  • Don’t show issue groups unless there are items in them – #47222
  • Improve the fatal error handling text in multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site scenarios – #48929
  • Introduce persistent object cache check – #56040

Themes

  • Add support for Update URI headerHeader The 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.#14179, #23318, #32101

Props

Thanks to the 99 (!) people who contributed to WordPress Core on Trac last week: @jrf (14), @costdev (8), @SergeyBiryukov (7), @antonvlasenko (5), @desrosj (4), @johnbillion (4), @audrasjb (3), @peterwilsoncc (2), @markjaquith (2), @ironprogrammer (2), @mukesh27 (2), @DavidAnderson (2), @jorbin (2), @dd32 (2), @hellofromTonya (2), @Clorith (2), @spacedmonkey (2), @tillkruss (2), @chriscct7 (2), @knutsp (1), @mordauk (1), @talldanwp (1), @nvartolomei (1), @aspexi (1), @benoitchantre (1), @GaryJ (1), @Ipstenu (1), @TJNowell (1), @gMagicScott (1), @Otto42 (1), @mikejolley (1), @lev0 (1), @juliobox (1), @Rarst (1), @jb510 (1), @GeekStreetWP (1), @khromov (1), @ryno267 (1), @rudlinkon (1), @gregorlove (1), @marybaum (1), @JavierCasares (1), @ayeshrajans (1), @skithund (1), @zieladam (1), @tomepajk (1), @Mte90 (1), @oglekler (1), @webcommsat (1), @dougwollison (1), @weboccults (1), @sabernhardt (1), @joostdevalk (1), @swissspidy (1), @jonmackintosh (1), @uofaberdeendarren (1), @leemon (1), @georgestephanis (1), @williampatton (1), @damonganto (1), @ocean90 (1), @birgire (1), @stevenlinx (1), @Whissi (1), @kebbet (1), @sergeybiryukov (1), @scribu (1), @ryan (1), @nacin (1), @meloniq (1), @drewapicture (1), @batmoo (1), @aaroncampbell (1), @poena (1), @robinwpdeveloper (1), @palmiak (1), @rkaiser0324 (1), @davidbaumwald (1), @DrewAPicture (1), @jdgrimes (1), @furi3r (1), @crazycoders (1), @rmccue (1), @miqrogroove (1), @afragen (1), @apedog (1), @markparnell (1), @grapplerulrich (1), @earnjam (1), @mweichert (1), @joyously (1), @dingdang (1), @infolu (1), @JeroenReumkens (1), @nhuja (1), @sean212 (1), @filosofo (1), @design_dolphin (1), and @Synchro (1).

Congrats and welcome to our 4 new contributors of the week: @tillkruss, @tomepajk, @Whissi, @rkaiser0324 ♥️

Core committers: @sergeybiryukov (20), @desrosj (3), @clorith (2), @antpb (2), @peterwilsoncc (2), @noisysocks (1), @flixos90 (1), @mcsf (1), and @gziolo (1).

#6-1, #core, #week-in-core

Summary, Dev Chat, August 24, 2022

These are the notes from the weekly WordPress developers chat held on Wednesday August 24, 2022.

1. Welcome and introduction

2. Announcements

WordPress 6.0.2 RC 1 has landed! Please download and test.

3. Blogblog (versus network, site) posts

This is not all the posts published on the core blog during the last week, but major items highlighted for comment or queries.

A week in core (published August 25, 2022) – thank you @audrasjb

Feedback by September 9, 2022 is requested on a new system for updating HTML attributes.

The 16th Full Site Editing Call for Testing is still open. This features a simpler testing exercise. Deadline is September 2, 2022. Thanks @annezazu for the update.

4. Upcoming releases

a) The next major is 6.1.

@marybaum shared that @priethor has asked for green-yellow-red lights looking ahead to betaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. release and almost all green were reported in the #6-1-release-leads channel.
No other updates were received on the agenda or during the meeting from the squad.

b) The next minor is 6.0.2.
The Release Candidate (RC1) is out.

Update via @sergeybiryukov

5. Components and tickets

This section is for updates from component maintainer or anyone shepherding a ticketticket Created for both bug reports and feature development on the bug tracker.. Beta 1 is five weeks away, so the time is ripe!

Updates from @sergeybiryukov for Build/Test Tools, Database, General, Themes, Date/ Time components

Build/Test Tools

As of yesterday, PHPUnit test runs on GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/ Actions include PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher 8.2, though addressing compatibility issues is still a work in progress. PHP 8.2 is expected to be released at the end of November 2022. Thanks @jrf.

More details at: Ticket #56009 Prepare for PHP 8.2

Compatibility with the recent versions of MariaDB (10.6+) and MySQLMySQL MySQL 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.0+) was improved. With these and some other changes, specifically skipping tests for non-implemented REST API methods, most of the test runs from various hosting environments on the Host Test Results page successfully pass now, except for PHP 8.2.0alpha2 for now.

More details at: Tickets #51740 and #53623

Database

General: Code modernization efforts have continued on preparing WordPress core for PHP 8.2.

Thanks @jrf and @antonvlasenko.

More details at: Ticket #56033 PHP 8.2 explicitly declare all known properties

Themes

  • A BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Themes filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. is now available on the Add Themes screen, to match a similar filter in the WordPress.org Theme Directory. Thanks @luminuu and @audrasjb.
    Ticket #56283 Add “Block theme” filter under “Add themes” for more details.
  • The support for Update URI theme headerHeader The 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. was added to core. This allows third-party themes to avoid accidentally being overwritten with an update of a theme of a similar name from the WordPress.org Theme Directory. Thanks @dd32@meloniq, @costdev
  • Changeset [53933] and ticket #14179 for more details.

Thanks everyone who contributed to those tickets! 

Date/Time, I18Ni18n Internationalization, 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. components

Permalinks: No major news this week.

Site Health component

@clorith:

  • Tickets #54508 (add more information to site health message) & #54617 (add more details when site health checks fail) could benefit from copy review; @webcommsat and @marybaum will follow up.

Updates on Help/About and Bulk/ Quick Edit components

@marybaum: We moved one ticket on: #56210.

Thanks @webcommsat @ogleckler @nalininonstopnews and @sergeybiryukov for comments / discussion on components in these two components. Thanks for the commit @audrasjb.

@nalininonstopnewsuk:

Quick Edit/ Bulk edit – on the next few Mondays we will continue to look at some of the tickets and doing some triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors.. We did some exploration on one particular ticket this last week. We will bring it to a bigger scrub potentially after that depending on progress.

As Mary had lost her internet connection, @nalininonstopnewsuk added: Thank you everyone for sharing. Dev chat is a good place for component maintainers to be able to share progress on their tickets and highlight any issues. You can let the core team reps know if you need some assistance too. 

As a newer maintainer, I appreciate the outreach from the team reps and from documentation at releases time. Dev chat also helps get more people to look at a specific point in an issue if needed. Just putting in my thoughts. @marybaum: Very valuable! Thanks so much.

Upgrade/ Install component

@costdev: Upgrade/Install: While we’ve had reviews from individual committers who happen to be on the Security, Docs and Polyglots teams, we’d like to make an official request to these teams here in dev chat and in their respective channels to review the Rollback Update Failure feature plugin for any potential issues.

No further update from maintainers nor tickets. Thanks everyone who has added tickets above.

6. Open Floor

@marybaum: We are going to talk about dev chat at WordCampWordCamp WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what they’ve learned throughout the year and share the joy. Learn more. US Contributor DayContributor Day Contributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of https://make.wordpress.org/ There are many teams that people can participate in, each with a different focus. https://2017.us.wordcamp.org/contributor-day/ https://make.wordpress.org/support/handbook/getting-started/getting-started-at-a-contributor-day/..

There were no other items added to the agenda today apart from the links we have already shared. Nothing else was raised.

@marybaum: Also huge thanks, Nalini, for stepping in and helping lead this chat today! Thanks and for the info you have sent across on some words for the glossary relating to the handbook Nalini. @nalininonstopnewsuk: Thank you for the handbook link about what dev chat does and its purpose. It is very interesting and useful.

Props to: @webcommsat for the dev chat summary, and @marybaum, @nalininonstopnewsuk, and @costdev for review.

#6-0, #6-1, #dev-chat, #summary

A Week in Core – August 22, 2022

Welcome back to a new issue of Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Let’s take a look at what changed on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between August 15 and August 22, 2022.

  • 28 commits
  • 92 contributors
  • 39 tickets created
  • 5 tickets reopened
  • 32 tickets closed

The Core team is currently working on the next major releasemajor release A 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., WP 6.1 🛠

The team has also started working on Twenty Twenty-Three, the next bundled theme that will be included with WP 6.1 🎨

Ticketticket Created 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

Build/Test Tools

  • Enable running the tests on PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher 8.2 – #56009
  • Increase the Dependabot pull request limit for GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/ Actions – #55652
  • Only define WP_PLUGIN_DIR when running core tests – #39210
  • Assign created fixtures to the dedicated class properties in some test classes – #54662
  • Clean up test image before performing assertions in image tests – #55652
  • Consistently skip tests for non-implemented methods in REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think “phone app” or “website”) can communicate with the data store (think “database” or “file system”) https://developer.wordpress.org/rest-api/. test classes – #40538, #41463, #55652
  • Correct MariaDB version check in database charset tests – #53623

Code Modernization

  • Remove dynamic properties in theme tests – #56033

Coding Standards

  • Check for deprecated options before wp_installing()#55647
  • Remove a one-time variable in themes.view.Installer.browse#56283
  • Simplify the logic in wp_not_installed()#55647

Database

  • Account for utf8 being renamed to utf8mb3 in newer MariaDB and MySQLMySQL MySQL 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/. versions – #53623

Docs

  • Remove incorrect default value for $path argument of admin_url()#55646
  • Use third-person singular verbs for function descriptions in WP_Tax_Query class, as per docblocks standards – #55646

Editor

  • Backportbackport A 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. bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes from GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ into Core for WP 6.0.2 RCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta).#56414
  • Ensure get_block_templates() returns unique templates or template parts – #56271

Embeds

  • Fix missing labels and duplicate IDs – #55664

External Libraries

  • Upgrade PHPMailer to version 6.6.4 – #56016

Help/About

  • Improve vertical alignment in the Additional Design Tools section – #56210

Mail

  • Prevent the last character of names in “From” headers from being trimmed – #19847

Permalinks

  • Fix aria-live text when removing custom structure – #56230

Query

  • Cast the metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. key to BINARY for case-sensitive key comparisons in WP_Meta_Query#51740

Script Loader

  • Remove default DNSDNS DNS is an acronym for Domain Name System - how you assign a human readable address to a website’s exact numeric coded location (ie. wordpress.org uses the actual IP address 198.143.164.252). prefetch entry for s.w.org – #40426, #37387

TaxonomyTaxonomy A 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.

  • Associate field descriptions with fields – #55651

Themes

  • Add a BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Themes filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. in Theme Install Screen – #56283, #meta6330
  • Add support for Update URI headerHeader The 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.#14179, #23318, #32101
  • Include a hyphen in the Block Themes tab key on Add Themes screen – #56283

Upgrade/Install

  • Make WP_Filesystem_FTPext::size() return false on failure – #51170

Props

Thanks to the 92 (!) people who contributed to WordPress Core on Trac last week: @SergeyBiryukov (8), @costdev (4), @jrf (3), @swissspidy (2), @joyously (2), @audrasjb (2), @desrosj (2), @afercia (2), @ironprogrammer (2), @johnbillion (2), @sabernhardt (2), @Mte90 (1), @oglekler (1), @marybaum (1), @webcommsat (1), @dd32 (1), @weboccults (1), @rudlinkon (1), @hellofromTonya (1), @jonmackintosh (1), @antonvlasenko (1), @uofaberdeendarren (1), @leemon (1), @dougwollison (1), @tomepajk (1), @ayeshrajans (1), @zieladam (1), @superpoincare (1), @mattyrob (1), @kovshenin (1), @mikehansenme (1), @hakanca (1), @flixos90 (1), @aaemnnosttv (1), @garrett-eclipse (1), @jhabdas (1), @joelhardi (1), @skithund (1), @rafiahmedd (1), @luminuu (1), @johnregan3 (1), @kebbet (1), @joedolson (1), @Synchro (1), @JavierCasares (1), @lev0 (1), @gregorlove (1), @benoitchantre (1), @ryno267 (1), @infolu (1), @miqrogroove (1), @afragen (1), @apedog (1), @markparnell (1), @grapplerulrich (1), @williampatton (1), @earnjam (1), @dingdang (1), @JeroenReumkens (1), @crazycoders (1), @nhuja (1), @sean212 (1), @filosofo (1), @design_dolphin (1), @mweichert (1), @DrewAPicture (1), @markjaquith (1), @DavidAnderson (1), @rmccue (1), @jdgrimes (1), @meloniq (1), @Otto42 (1), @chriscct7 (1), @aspexi (1), @nvartolomei (1), @mordauk (1), @knutsp (1), @GaryJ (1), @TJNowell (1), @gMagicScott (1), @mikejolley (1), @damonganto (1), @Ipstenu (1), @juliobox (1), @Rarst (1), @jb510 (1), @GeekStreetWP (1), @khromov (1), @georgestephanis (1), @jorbin (1), @joostdevalk (1), and @drewapicture (1).

Congrats and welcome to our 5 new contributors of the week: @jonmackintosh, @uofaberdeendarren, @tomepajk, @hakanca, @jhabdas ♥️

Core committers: @sergeybiryukov (18), @joedolson (3), @desrosj (3), @audrasjb (3), and @gziolo (1).

#6-1, #core, #week-in-core

Devchat agenda, August 24, 2022

1. Welcome

Feel like catching up ahead time? Here’s last week’s summary.

2. Announcements

WordPress 6.0.2 RCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). 1 has landed! Please download and test.

3. Blogblog (versus network, site) posts of note

@zieladam would like feedback by September 9 on a new system for updating HTML attributes.

Got a post to share? Add it to the comments.

4. Upcoming releases

The next major is 6.1.

If you have an update, plan to bring it up here.

The next minor is 6.0.2.

The RC is out! Look for the release next Tuesday at 16:00 UTC.

5. Components and tickets

Are you a component maintainer? Shepherding a ticketticket Created for both bug reports and feature development on the bug tracker.? BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 1 is five weeks away, so the time is ripe!

6. Open floor

Please add your item to the comments.

See you tomorrow at 20:00!

#agenda, #core, #dev-chat

A new system for simply and reliably updating HTML attributes

This call for feedback will be open until September 9th.

Let’s introduce a reliable tool WordPress could use to adjust the HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. markup. The current practice of using basic replacements seems fine at a first glance but is easy to break. The system proposed here will help avoid these common pitfalls.

Consider this example of adding a style HTML attribute in the cover block:

preg_replace( '/class=\".*?\"/', '${0} style="' . $styles . '"', $html );

It assumes a specific HTML structure:

  • There is a class attribute
  • The style attribute isn’t already defined, as browsers ignore the repeated attributes.
  • There is no other attribute ending with the string class="", such as data-replace-class="…" or title='how to set the class="" attribute'
  • The existing class attribute uses double quotes and no single quotes or no quotes.
  • Regular HTML does not contain the class="" substring, for example in a post describing how to use the class attribute in an HTML document.

These assumptions are typically true, but only until they’re not. For example, applying a padding produces a markup such as below where the browsers ignore the second style attribute:

<!-- Formatting applied for clarity -->
<div
    class="wp-block-cover"
    style="background-image:url(/img.png);"
    style="padding-top:4px">

The original preg_replace could be patched, but eventually another assumption would break. The deeper, fundamental problem is that string replacements are not the right tool for updating HTML. They’re used out of necessity as WordPress does not provide any better tools. Well, let’s change it!

Let’s introduce a dedicated tool for reliably updating the HTML markup. It’s called WP_HTML_Walker:

$w = new WP_HTML_Walker( '<div></div>' );
$w->next_tag();
$w->set_attribute( 'style', $styles );
$updated_html = (string) $w
// <div style="display: block"></div>

Simple string replacements don’t account for nuances in HTML

The problem of updating HTML attributes frequently appears in block-related work. Recently @dmsnell and I (@zieladam) investigated how HTML attributes are typically updated in the WordPress codebase while exploring adding a CSS class to all Gutenberg blocks. We found the typical approach is to use string replacements similar to the one covered above.

Here are a few examples already in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. where we run into these nuanced problems:

The Site Logo block attempts to remove the href attribute:

// Remove the link.
preg_replace( '#<a.*?>(.*?)</a>#i', '\1', $custom_logo );

However, it also unintentionally removes all the attributes, including class and style.

The gallery block adds a CSSCSS Cascading Style Sheets. class:

preg_replace('/' . preg_quote( 'class="', '/' ) . '/', 'class="' . $class . ' ', $content, 1);

However, if there’s no existing class attribute, it will skip over the tagtag A 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.) without adding the required class. The same technique is used in the duotone feature, and the block supports API.

As a side note, it’s easy to lean on the existing pattern of using more complicated functions such as preg_replace(). Calling preg_quote() in this example isn’t appropriate and the entire regular expression pattern does nothing more than a basic str_replace().

The block-supports APIAPI An 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. attempts to find the first HTML tag:

preg_match( '/<[^>]+>/', $block_content, $html_element_matches, PREG_OFFSET_CAPTURE );

However, it also matches non-tags like text hearts and mathematical expressions (<3, f(x) = {x, x<5; -1, x>=5}), DOCTYPE declarations, and HTML comments.

The media library adds the srcset attribute:

preg_replace( '/<img ([^>]+?)[\/ ]*>/', '<img $1' . $attr . ' />', $image );

However, a > character inside a tag attribute (e.g. title="why tacos > burritos")  would break the srcset functionality and potentially introduce a vector for injection attacks.

The list goes on, and it’s not just blocks.

Here’s an example from shortcodes:

if ( preg_match( '#((?:<a [^>]+>\s*)?<img [^>]+>(?:\s*</a>)?)(.*)#is', $content, $matches ) ) {

Media Embeds:

if ( preg_match_all( '#<(?P<tag>' . $tags . ')[^<]*?(?:>[\s\S]*?<\/(?P=tag)>|\s*\/>)#', $content, $matches ) ) {

Media Galleries:

preg_match_all( '#src=([\'"])(.+?)\1#is', $gallery, $src, PREG_SET_ORDER );

Twentynineteen:

preg_replace( '/<a\s.*?>/', $link, $item_output, 1 );

And many, many other places. The point is, this is how WordPress does it today.

Many features demand a more reliable way of updating HTML attributes. Block theming code, in particular, tends to modify block markup to apply visual styling:

The only way to reliably update HTML attributes is to follow the HTML specification. However, doing that from scratch every time a CSS class is added would only cloud the entire codebase with HTML parsing nuances and distract from the work being done. That’s why @dmsnell, @gziolo, and I (@zieladam) want to move this complexity into Core. It would be exposed as a tailored and restricted API that’s easy to use, hard to mess up, and easy to find.

The new system tokenizes HTML

WP_HTML_Walker (Pull Request 43268) recognizes HTML tags and updates their attributes. It’s reliable because it implements the same official HTML specification as WebKit, Chrome, Firefox, and other major browser engines.

Unlike full-fledged HTML parsers, the walker avoids handling malformed markup, semantic problems, and building a document tree. Any problems that are present on the input are passed on to the browser. The walker doesn’t fix HTML just as it won’t break HTML.

The tradeoff is that it only offers a simplified API to modify HTML attributes. If you want to replace an img tag with a full-fledged figure layout, this API won’t offer that functionality. Similarly, the walker won’t help you replace all the child nodes of a particular div with a completely new markup. This system is focused on finding specific HTML tags and adding, removing, or updating the attributes on those tags.

Remove the href attribute from an anchor tag:

$w = new WP_HTML_Walker( $html );
$w->next_tag( 'a' );
$w->remove_attribute( 'href' );

Add a style attribute to the first tag in the document:

$w = new WP_HTML_Walker( $html );
$w->next_tag();
$w->set_attribute( 'style', 'display: none' );

Add a CSS class to the first tag having the wp-block-media-text__content class:

$w = new WP_HTML_Walker( $html );
$w->next_tag(array(
    'class_name' => 'wp-block-media-text__content'
));
$w->add_class( 'wp-foo-bar' );

Add the srcset attribute to all image tags:

$w = new WP_HTML_Walker( $html );
while ( $w->next_tag() ) {
    if (
        isset( $w->get_attribute( 'src' ) ) &&
        ! isset( $w->get_attribute( 'srcset' )
    ) {
        $srcset = build_srcset( $w->get_attribute( 'src' ) );
        $w->set_attribute( 'srcset', $srcset );
    }
}

Processing HTML using this Core API could help avoid a broad array of mistakes that appear due to the oversimplification presented by the array of ad-hoc solutions. A common interface for operations on block markup would alleviate competition between changes. You can check the refactoring PR to see how this new API could improve code readability in the existing core blocks.

Why build a new API instead of using DOMDocument?

Using DOMDocument was extensively discussed. It’s not installed on every host so a polyfill would still be necessary. And even if it was available everywhere, it’s based on libxml2 designed to parse XML. Libxml2 does not implement the WHATWG HTML parsing spec, does not support HTML5, and brings with it a variety of parsing failures and quirks.

Like many DOM libraries, DOMDocument is a heavy interface that rewrites entire documents after several stages of transformation. In contrast, the walker exposes a focused interface closer to what string functions offer. For the kind of modifications occurring in WordPress this is a more natural and convenient approach.

If this resonates with you then please speak out before September 9th

This post will be open for feedback for the next three weeks until September 9th. After that @dmsnell, @gziolo, and @zieladam would like to merge the new API into the GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party to power adding CSS classes to Gutenberg blocks, block layout improvements, and changes in CSS style variations.

Also see the WP_HTML_Walker Pull Request.

Props to Dennis Snell (@dmsnell), Grzegorz Ziółkowski (@gziolo), Andrei Draganescu (@andraganescu), Carolina Nymark (@poena), and Ramon Dodd (@ramonopoly) for their reviews and help in putting this proposal together.
#core, #editor, #gutenberg, #proposal

Dev chat agenda, August 17, 2022

1. Welcome

Last week’s summary thanks to @webcommsat.

If this is your first dev chat, or if it’s not, welcome! And thanks for sharing an hour of your valuable time with the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Team! If you’re in the house, please say hey with an emoji.

2. Announcements

GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ 13.9 lands at about the same time dev chat starts.

If you’ve got an announcement to share, this is the time.

3. Blogblog (versus network, site) posts of note

The month in WordPress.

All about the next default theme:

A week in Core.

Please join this conversation about merging experimental APIs by September 7. (An audit of those APIs.)

Gutenberg is standardizing the way contributors name npm scripts. Should Core?

Have you seen a post Core people should know about? Add it to the comments.

4. Upcoming releases

The next major is 6.1.

Helpful links:

The development cycle.

The bug-scrub schedule, and the Handbook on bug-gardening.

5. Component maintainers and tickets

Ticketticket Created for both bug reports and feature development on the bug tracker. time! Look for reports from component maintainers among others.

6. Open Floor

Post your topic in the comments!

#agenda, #core, #dev-chat

A Week in Core – August 15, 2022

Welcome back to a new issue of Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Let’s take a look at what changed on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between August 8 and August 15, 2022.

  • 35 commits
  • 61 contributors
  • 35 tickets created
  • 3 tickets reopened
  • 31 tickets closed

The Core team is currently working on the next major releasemajor release A 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., WP 6.1 🛠

The team has also started working on Twenty Twenty-Three, the next bundled theme that will be included with WP 6.1 🎨

Ticketticket Created 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

  • Improve performance of List Tables – #34564

Application Passwords

  • Allow a Super Adminadmin (and super admin) to set an application password on a site they’re not a member of – #53224

Build/Test Tools

  • Add @covers tags to the comments tests – #39265
  • Add @covers tags to the import tests – #39265
  • Add @covers tags to the l10nL10n Localization, 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. and i18ni18n Internationalization, 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. tests – #39265
  • Add @covers tags to the options tests – #39265
  • Move the Memcached container into the Docker Compose config – #55700
  • Bring some consistency to serialization tests – #55652
  • Use named data provider for is_serialized_string() tests – #55652
  • Update @covers tags for the load tests – #39265

Bundled Themes

  • Remove closing PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher tagtag A 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.) at the end of files – #40039
  • Twenty Eleven: Correct inline translator comment – #40039

Coding Standards

  • Rename the $file parameter to $path in some WP_Filesystem_* methods – #55647
  • Restore correct regex formatting in dbDelta()#55647

Database

  • Ignore display width for integer data types in dbDelta() on MySQLMySQL MySQL 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.0.17 or later – #49364, #51740

Docs

  • Clarify that register_taxonomy() only accepts lowercase values for the $taxonomy parameter – #56352, #55646
  • Consistently document the $excluded_terms variable in get_adjacent_post()#56348
  • Correct and improve the documented types for various functions and hooksHooks In 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.#55646
  • Miscellaneous inline documentation improvements – #55646
  • Remove code tags from WordPress function names within inline documentation – #55646
  • Revert two changes that need to instead be made upstream in the GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ repo – #55646
  • Use third-person singular verbs for function descriptions in wp-includes/functions.php, as per docblocks standards – #55646
  • Various docblockdocblock (phpdoc, xref, inline docs) fixes in Core TaxonomyTaxonomy A 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. APIAPI An 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., as per docs standards – #55646

Editor

  • Document the arguments for registering a blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. style – #55646

Formatting

  • Add support for Enums in is_serialized()#53299

General

  • Add required fields helper functions for better reusability – #54394

I18N

  • Introduce WP_Textdomain_Registry to store text domains and their language directory paths – #26511, #39210

Login and Registration

  • Introduce is_login_screen() function – #19898

Media

  • Cache parent posts in query-attachments AJAX endpoint – #56037

Posts, Post Types

  • Prevent categories from being overwritten when updating a post using wp_insert_post()#19954

Query

  • Be better at forcing data types for query vars – #17737

Taxonomy

  • Add a test file that was missed in [53893]#56215
  • Introduce the is_term_publicly_viewable() function – #56215
  • Prevent non string taxonomy names generating warnings or errors – #56338, #56336

XML-RPC

  • Correct the documented arguments for XML-RPC server methods – #55646

Props

Thanks to the 61 people who contributed to WordPress Core on Trac last week: @costdev (11), @SergeyBiryukov (9), @pbearne (6), @ironprogrammer (5), @patopaiar (5), @hellofromTonya (5), @jrf (5), @antonvlasenko (5), @peterwilsoncc (4), @audrasjb (4), @mukesh27 (3), @johnbillion (3), @desrosj (3), @sabernhardt (3), @dd32 (3), @nacin (2), @leewillis77 (2), @yahil (1), @ocean90 (1), @milindmore22 (1), @vishalkakadiya (1), @NomNom99 (1), @manishsongirkar36 (1), @yoavf (1), @swissspidy (1), @juliobox (1), @bengreeley (1), @dipakparmar443 (1), @grapplerulrich (1), @bobbingwide (1), @johnjamesjacoby (1), @chaion07 (1), @mikeschroder (1), @shetheliving (1), @spacedmonkey (1), @JavierCasares (1), @netweb (1), @markoheijnen (1), @georgestephanis (1), @dcowgill (1), @dave1010 (1), @tellyworth (1), @johnregan3 (1), @ryokuhi (1), @joedolson (1), @ayeshrajans (1), @konradyoast (1), @dennisatyoast (1), @albatross10 (1), @scribu (1), @ilovecats7 (1), @donmhico (1), @iandunn (1), @wonderboymusic (1), @robmiller (1), @chriscct7 (1), @tazotodua (1), @davidbaumwald (1), @xknown (1), @TimothyBlynJacobs (1), and @kitchin (1).

Congrats and welcome to our 3 new contributors of the week: @dipakparmar443, @dave1010, @albatross10 ♥️

Core committers: @johnbillion (12), @sergeybiryukov (6), @audrasjb (6), @azaozz (5), @peterwilsoncc (2), @desrosj (2), @swissspidy (1), and @ocean90 (1).

#6-1, #core, #week-in-core

Proposal: Stop merging experimental APIs from Gutenberg to WordPress Core

This call for feedback will be open for the next four weeks until September 7th.

I propose a way of harmonizing the process of merging new APIs from the GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party to the WordPress coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Right now, the two projects have very different policies, confusing contributors and sparking lively discussions on every major WordPress release. 

Today, experimental APIs are merged to Core and sometimes removed later

To date, 280 experimental APIs were merged from the Gutenberg plugin to WordPress Core. That’s problematic, and here’s why.

WordPress values backward compatibility. Upgrading to a new version should not break the plugins and themes, so WordPress public APIs these plugins and themes depend on are maintained across major versions. As the WordPress handbook states:

Historically, WordPress has been known for preserving backward compatibility across versions. 

The Gutenberg plugin values agility. It’s the safe space where new experiments are planted and grow into stable features without the same stability constraints. It is okay to ship a prototype, learn from it, and then start over again. New functions under active development often include the __experimental prefix in their name to indicate they may change at any point and shouldn’t be relied upon. Removing the obsolete code also makes the JavaScriptJavaScript JavaScript 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/. bundle smaller and reduces the editor loading time. As the Gutenberg plugin handbook states:

Experimental and unstable APIs are temporary values exported from a module whose existence is either pending future revision or provides an immediate means to an end.

In the Gutenberg plugin, it’s fine to remove these experimental APIs. In WordPress, it’s not. Unfortunately, many have already been released with major WordPress versions.

Tomorrow, experimental APIs could be restricted to the Gutenberg plugin and never merged to Core

Let’s remove the experimental prefix before merging new APIs into WordPress Core.

This way:

  • Core can deliver the expected level of Backwards Compatibility
  • The Gutenberg plugin can retain the freedom to remove the experimental APIs as needed
  • The experimental APIs would get audits
  • It would make the release easier

Wouldn’t stabilizing every APIAPI An 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. before the release slow down new features?

The goal isn’t to stabilize. It’s to avoid adding public experimental APIs to WordPress core. Here’s two alternatives to stabilizing:

What if a stable feature depends on an experimental feature?

Then it isn’t actually stable. Let’s stabilize the dependencies first (or make them private).

What about the existing experimental APIs?

Most of those already merged to Core would get a stable alias. It would preserve BC and shouldn’t noticeably affect the bundle size. Some will need a different treatment; let’s discuss that case-by-case.

What if an existing experimental API already in Core needs to be removed?

Does it? If so, let’s consider that on a case-by-case basis. There are established Core practices like contacting plugin authors, writing make Core posts, preferring soft deprecations, and so on. I don’t expect to see many instances of this.

What if a future stable Gutenberg plugin API really needs to be removed after it’s released in Core?

Yes, it will happen. Let’s acknowledge and embrace it. Some good reasons were mentioned in the GitHub discussion, and the future will surprise us with many new ones. Again, let’s follow the established Core practices. For example, deprecated.php shows that removing a function body is sometimes okay as long as the name keeps working.

What are the downsides?

I can see three:

  • Some Gutenberg plugin features will get merged into the Core later that they currently would be. The total amount of the development work won’t change, but the merging timeline will. That could be a good thing. Using the Gutenberg plugin is the intended way of accessing the upcoming features early.
  • Refactoring Gutenberg plugin APIs will be difficult once they get shipped with Core. In reality, that’s already the case.
  • Risk: Surgically removing all the Gutenberg plugin work spanning multiple WordPress releases from pre-release merges may become too complex. It would halt the merges entirely. If this risk does materialize, the merge guidelines will need to be adjusted again.

If you see any other downsides, please speak out!

What alternatives have been considered?

  • Keep not acting on the problem.
  • Use the same Backwards Compatibility policy for both WordPress and the Gutenberg plugin – which would make both projects worse off.
  • Find a way to ship the experimental APIs with Core as “internal” and unavailable to plugin authors – which has been explored without a successful resolution.

Unfortunately, neither is viable, as explained in more detail in the GitHub discussion.

If this resonates with you, speak out before September 7th!

Policies don’t contribute to the Gutenberg plugin. People do. This proposal will only work if we, the contributors, believe it’s the right thing to do.

Please share your thoughts under this post or in the GitHub discussion – even if it’s just “I like it.” All opinions are welcome, especially if you are not convinced about this proposal.

This call for feedback will be open until September 7th.

Props to Birgit Pauli-Haack (@bph), Grzegorz Ziółkowski (@gziolo), and Hector Prieto (@priethor) for their help in putting this proposal together.

#editor #gutenberg #core #proposal