Dev Chat Agenda: August 15th (4.9.9 Week 1)

This is the agenda for the weekly devchat meeting on August 15, 2018 at 20:00 UTC:

  • 4.9.8 feedback
  • 4.9.9 planning
  • Updates from focus leads and component maintainers
  • General announcements

If you have anything to propose to add to the agenda or specific items related to the above, then please leave a comment below. Either way, we look forward to seeing you at the devchat this week!

#4-9-8, #4-9-9, #agenda, #core, #dev-chat

Dev Chat Summary: August 08, 2018 (4.9.9 Week 1)

This post summarizes the weekly dev chat meeting held Wednesday, August 08, 2018 (agenda | Slack archive).

👉🏼💥 Release Lead Nominations 💥👈🏼

It’s time to select release leads for our 4.9.9 maintenance release. Hooray! If you’d like to nominate someone, or yourself, add a comment to this post. Don’t be shy, y’all.

What does a release lead do? Here are some good resources: 

🔥 Hot Tip 🔥 You don’t have to be an engineer to be a release lead.

4.9.8 Release Feedback

  • Check the goodies in the maintenance release post, if you haven’t.
  • Big thanks to @pbiron, @joshuawold, @sergeybiryukov, @psykro and Mission Control. 🙌🏼
  • @pbiron plans to post a retrospective similar to this in the next week or two.
  • Overall, the Try Gutenberg callout has been effective in getting people to use Gutenberg and find bugs. Active users jumped from 20k to 100k in just a few days. 
  • The support team reports via @clorith things have been pretty quiet since the release. More info inbound on wider areas of focus for support, so stay tuned.
  • There are some reported issues to jump on:

4.9.9 Planning

  • We’re all going proceed as if we’re doing a 4.9.9 maintenance release, so keep working on the growing list of tickets here.
  • However, as of today, we aren’t committed to a 4.9.9 maintenance release. Why?
    • There is not a rush to get a maintenance release the door
    • We don’t have committed leads yet (see above)
    • So far, we don’t have any significant issues from 4.9.8 that require attention

Focus Lead and Component Maintainer Updates

REST API

  • The REST API meeting is today – August 9, 2018 – at  17:00 UTC. Welp, this already happened.
  • The key agenda items are: 
    • Prioritize register_meta improvements for 5.0
    • Review API-related Gutenberg tickets
    • Selecting and prioritizing additonal backlog tickets for 5.0

JavaScript

Gutenberg

Thank you to all who gave us feedback so far! The feedback is being processed and iterations are underway. 

Open Floor

Post counts on on shared taxonomy terms 

Via @davecpage. There are multiple tickets open related to this:

These are all related to the taxonomy component, and we’ll currently slate them for release in 4.9.9.

General Announcements

Dev Chat Coordination: The Sequel

@jeffpaul is ill and will hopefully return next week. Until he’s at full strength, @joemcgill@audrasjb@antpb and I will continue to run dev chat.

Next Meeting

The next meeting will take place on Wednesday, August 15, at 20:00 UTC in the #core Slack channel. Please drop in with any updates or questions. If you have items to discuss, drop a comment on next week’s agenda post, so we can take them into account.

What’s new in Gutenberg? (9th August)

Another update has sailed! This one comes after WordPress 4.9.8 release with the “try the new editor” notice, which has increased the number of installs from 15k to more than 120k in a few days. This is an important milestone as we broaden the testing horizons. We’d like to take a moment to thank everyone that has tested and given feedback through the various channels.

Likewise, huge thanks to everyone that has helped answer questions, addressed forum feedback, triaged new issues, fixed bugs, and generally jumped in to contribute.

Back to the release, this one includes several fixes, polish, and cleaner interactions around the writing flow. On the developer side, there’s been work around refining and adding to the pool of APIs and documentation.

Showing updates to some UI components.

3.5 🥥

Deprecations removed with this version.

#core-editor, #editor, #gutenberg

REST API meeting agenda: August 9

We’ve been remiss about posting these, but discussion has been ongoing in #core-restapi over the past few weeks. We’ve seen a lot of discussion of Gutenberg priorities and compatibility issues, and have also been discussing the need for more robust authentication and considering future improvements to register_meta.

This week, the agenda for our scheduled REST API component meeting today (2018-08-09 17:00 UTC) is:

  • register_meta: discuss and prioritize future enhancements
  • Gutenberg: call for volunteers to assist with priority tickets
  • 5.0: Discuss what our component priorities should be leading up to 5.0
  • Open floor / bug triage

As always, if you have a REST API related ticket you would like to bring to the component team’s attention, please join us or leave a note in the #core-restapi channel. Hope to see you all later today!

Dev Chat Agenda: August 8th (4.9.8 Week 6)

This is the agenda for the weekly devchat meeting on Wednesday, August 08 at 20:00 UTC

  • 4.9.8 release feedback and reported issues:
  • 4.9.8 Try Gutenberg Callout feedback 
  • 4.9.9 Discussion and Roadmap (if we need a 4.9.9 release)
  • Gutenberg Announcements
  • Updates from focus leads and component maintainers.
  • General announcements.

Javascript Chat Summary – August 7

Below is a summary of the discussion from this week’s JavaScript chat (agenda, Slack transcript).

Have a topic for discussion for the next meeting? Leave a suggested edit on next week’s agenda.

Automating Publishing to npm

Slack Conversation

Problem: Publishing modules to npm can be difficult because it is not always clear at the time of publishing to what version the package should be updated. The individual performing the publish is not always the same as the contributors who had proposed changes to the package.

Options:

  • Adopt conventional commits to enable automatic versioning (pull request)
    • Issue: This is hard to enforce
  • Encourage developers to introduce relevant changelog entries as part of proposed changes. The type of change should indicate versioning requirements.
    • Issue: Not every version bump is caused by directly by new changes, sometimes indirectly by updated dependencies.
    • Issue: Prone to frequent merge conflicts with many developers adding entries to the same text file.

Decision: Encourage developers to introduce changelog entries and evaluate success in a future meeting.

Package Deprecations Versioning

Slack Conversation

Problem: When deprecating a feature in Gutenberg, we add logging to highlight the deprecation, and allow for two minor releases of the plugin before removing the functionality. With this in mind, how do we handle versioning of modules? Following SemVer, the major version should be bumped on backwards-incompatible changes. If the deprecation is not entirely faithful and therefore introduces a breaking change, it results in the need for two separate major version bumps by the removal of a single feature.

Discussion points:

  • Is this really a common use case?
  • Could it be considered a good thing to promote the idea that deprecation “shims” should be fully compatible?
  • How does SemVer consider deprecations?
    • Very specifically: “Minor version Y (x.Y.z | x > 0) MUST be incremented if new, backwards compatible functionality is introduced to the public API. It MUST be incremented if any public API functionality is marked as deprecated.”

Decision: The major version should be bumped on any backwards-incompatible change. This will usually occur at the final removal of the feature. The deprecation should be fully backwards-compatible and, if it is not, it should warrant a separate major version bump.

Packages

URL

Slack Conversation

Problem: There are several inconsistencies between the WordPress PHP implementation of add_query_arg and the parallel addQueryArgs from the @wordpress/url package:

Name pluralization: addQueryArgs (JS) vs. add_query_arg (PHP)
Arguments: url, param (JS) vs. param, url (PHP)
Usage: Object only (JS) vs. object or key+value pair (PHP)

Discussion points:

  • Consistency vs. improvements
  • Real-world workflows where developers will expect JavaScript reimplementations to behave the same as their PHP counterpart.
  • In general, we should seek to avoid confusion in appearing similar if in-fact the behaviors are not the same.

Decision: There will be no changes to the name or argument order of the addQueryArgs function. Supporting key and value arguments may be a separate enhancement to consider.

Data Plugins API

Slack Conversation

Announcement: The @wordpress/data module now supports a plugin API. Persistence behaviors, which were previously baked in, are now extracted out to an opt-in plugin. This should help improve isolation of specific behaviors, and allow external consumers to use only specific features relevant for their products.

A new pattern for asynchronous state behaviors has been implemented, distributed as the @wordpress/redux-routine package and integrated with the @wordpress/data module via a new controls plugin.

DOM Ready

Slack Conversation

Announcement: A fix has been backported from the Meta team into the @wordpress/dom-ready package, addressing an issue where callbacks may not be called reliably if the document was in specific states. This was the cause of intermittent white-screen issues on the Gutenberg marketing page.

Open Floor

Usage of wp.api

Slack Conversation

Question: Do we still use wp.api ?

Answer: Only in the (now-deprecated) withAPIData higher-order component. Once this deprecation is complete, there will be no more usage of wp.api and it can be safely removed.

Privacy Chat Agenda – August 8th

This is the agenda for the weekly Privacy component meeting on August 8, 2018 at 15:00 UTC.

  • Ticket discussions (#43994, #44133, #44621)
  • New component maintainers
  • Component marketing
  • V2 Roadmap Discussion
  • Open floor

Join us in the #core-privacy room in the WordPress Core Slack at 15:00 UTC!

Dev Chat Summary & Call for Release Lead Nominations: August 01, 2018 (4.9.8 week 5)

This post summarizes the weekly dev chat meeting held Wednesday, July 18, 2018 (agenda | Slack archive).

4.9.8 Release

4.9.9 Road Map

  • Rumors of a v. quick release (like next week) for 4.9.9 were squashed. 
  • There are currently 46 tickets assigned to this milestone.
  • See the “Call for Release Leads” section below.

Focus Lead and Component Maintainer Updates

Recap posts within a recap post. Woah.

General Announcements

Devchat Coordination Reminder

@jeffpaul returns next week, thus ending the mighty reign of temporary dev chat leads @joemcgill, @audrasjb, @antpb et moi. Please tell him how truly fantastic we were in his absence.

Next Meeting

The next meeting will take place on Wednesday, August 08, at 20:00 UTC in the #core Slack channel. Please drop in with any updates or questions. If you have items to discuss, drop a comment on next week’s agenda post, so we can take them into account. 

(You can add them as a comment here, too, but they might get lost in the flurry of release lead noms.)

Call for Release Lead Nominations

Here we go. It’s time to nominate leads for 4.9.9.

  • Post a comment on this recap to be considered. 
  • You do not have to be an engineer to be nominated.
  • Self-nominations are welcome.
  • Ready? GO!

#summary

WordPress 4.9.8

WordPress 4.9.8 is now available. This maintenance release fixes 46 bugs.

Download WordPress 4.9.8 or visit Dashboard → Updates and click “Update Now”. Sites that support automatic background updates are already beginning to update automatically.

Thank you to everyone who contributed to WordPress 4.9.8:

1naveengiri, Aaron D. Campbell, Aaron Jorbin, Abdullah Ramzan, alejandroxlopez, Allen Snook, Andrea Fercia, Andrew Ozz, Andrew Taylor, Arun, Ayesh Karunaratne, Birgir Erlendsson (birgire), Birgit Pauli-Haack, BjornW, Boone Gorges, Brandon Kraft, Burhan Nasir, Chetan Prajapati, Chris Lema, Corey McKrill, Daniel Bachhuber, Daniel James, David Herrera, Dion Hulse, Dominik Schilling (ocean90), dontstealmyfish, dyrer, Felipe Elia, Felix Arntz, Fernando Claussen, Gareth, Garrett Hyder, Gary Pendergast, Gennady Kovshenin, GM_Alex, Heather Burns, Ian Dunn, ibelanger, imath, Jb Audras, Jeremy Pry, JJJ, Joe McGill, Joen Asmussen, John Blackbourn, Jonathan Desrosiers, Jonny Harris, Josepha, JoshuaWold, Joy, jrf, K. Adam White, khaihong, kjellr, Konstantinos Xenos, laurelfulford, lbenicio, Leander Iversen, leemon, macbookandrew, Marius L. J., Matias Ventura, Mel Choyce, mensmaximus, mermel, metalandcoffee, michelleweber, Milan Dinić, Muhammad Kashif, Naoko Takano, Nathan Johnson, Ov3rfly, palmiak, Paul Biron, Prashant Baldha, PressTigers, programmin, Rafsun Chowdhury, redcastor, Robin Cornett, Sergey Biryukov, Simon Prosser, skoldin, spyderbytes, Subrata Sarkar, Sébastien SERRE, Tammie Lister, tharsheblows, Thomas Patrick Levy, timbowesohft, Timothy Jacobs, Tobias Zimpel, Tor-Bjorn Fjellner, Towhidul Islam, Usman Khalid, warmlaundry, William Earnhardt, Yui, and YuriV.

Primary Focuses

The primary focuses of 4.9.8 are:

  • Introduce “Try Gutenberg” callout
  • Privacy fixes/enhancements

Introduce “Try Gutenberg” callout

Most users will now be presented with a notice in their WordPress dashboard. This “Try Gutenberg” is an opportunity for users to use the Gutenberg block editor before it is released in WordPress 5.0.

You can learn more by reading the “Try Gutenberg” Callout in WordPress 4.9.8 post.  It contains information about the callout, including which users will, by default, be shown the callout and the hooks it provides for site administrators to modify that default behavior.

Privacy fixes/enhancements

This release includes 18 Privacy fixes focused on ensuring consistency and flexibility in the new personal data tools that were added in 4.9.6, including:

  • The type of request being confirmed is now included in the subject line for all privacy confirmation emails.
  • Improved consistency with site name being used for privacy emails in multisite.
  • Pagination for Privacy request admin screens can now be adjusted.
  • Increased the test coverage for several core privacy functions.

In addition to the primary focuses another notable change in 4.9.8 is that developers can now register meta keys for object subtypes:

With WordPress 4.9.8, the register_meta() function supports registration of metadata not only for an entire object type (posts, terms, comments, users), but also for a specific object subtype (such as a specific post type or taxonomy).

4.9.8 Changes

See the full list of closed tickets in Trac.

Administration

  • #44611 – try Gutenberg header wraps over text below on narrow screens
  • #44627 – minor tweaks to Try Gutenberg callout formatting

Bundled Theme

  • #44109 – TwentySeventeen backend editor: level 2 bulleted lists nested under numbered lists show numbers instead of bullets
  • #44646 – Bundled Themes: Bump version number and update changelog in Twenty Seventeen for 4.9.8 release

Comments

  • #44126 – Adding fields to comments_form args prevents checkbox displaying
  • #44141 – Privacy: Don’t replace comment author URL and email with anything
  • #44342 – Commenter cookie consent message should not be displayed if the cookie action isn’t hooked

Customize

  • #44627 – minor tweaks to Try Gutenberg callout formatting

Editor

  • #41316 – Introduce “Try Gutenberg” callout
  • #44341 – Replace _deprecated_function( ‘add_filter’ ) with apply_filters_deprecated()
  • #44680 – Restrict the Try Gutenberg callout audience

Emoji

  • #44339 – minor tweaks to Try Gutenberg callout formatting

Filesystem API

  • #43054 – wp_is_stream fails with stream definition containing nonascii chars

I18N

  • #44139 – i18n: “About” disambiguation
  • #44574 – Saratov and other cities missing from translations

Login and Registration

  • #44052 – Missing parameter type for `login_header()`

Media

  • #44532 – Extreme memory leak related to wp_is_stream in wp-includes/functions.php in WordPress 4.9.7
  • #43751 – REST API: Attachments controller should respect “Max upload file size” and “Site upload space” in multisite

Options, Meta APIs

  • #38323 – Reconsider $object_subtype handling in `register_meta()`

Posts, Post Types

  • #36085 – Add action hook to get_inline_data()

Privacy

  • #44006 – Privacy Policy page should have suffix like other special pages
  • #44025 – Privacy: Pagination screen options for the requests list tables
  • #44099 – Add Request Type into Admin Email Subject for GDPR
  • #44100 – GDPR Privacy Page setting allows for Draft Pages
  • #44130 – Mixed Case of Privacy Policy on Privacy Settings page
  • #44131 – If draft page selected for Privacy Policy page should verbiage change from view to preview
  • #44181 – The input field id username_or_email_to_export should be something else on remove_personal_data page
  • #44192 – Title of Privacy Policy Page not used on login page
  • #44195 – “Silence is golden” index.html generates output
  • #44265 – Add filter for email subject for erasure complete notification
  • #44353 – Replace `site_url( ‘wp-login.php’ )` in `wp_send_user_request()`
  • #44373 – Add a privacy setting to disable comment cookie consent
  • #44379 – GDPR filters should provide either $request or $request_id
  • #44382 – Filter the subject within _wp_privacy_send_request_confirmation_notification
  • #44396 – Inconsistent use of blogname and sitename in Privacy emails
  • #44612 – Grammar – Missing ‘a’ in ‘select new Privacy Policy page’
  • #43967 – Admin emails after email confirmation don’t work for data privacy requests
  • #44590 – Remove “// WPCS:” comments

REST API

  • #40861 – REST API saves attachments with absolute path for `_wp_attached_file` on Windows platforms
  • #43874 – REST API: Only render fields specific to request when _fields= is used
  • #44321 – REST API: Expose revision count and last revision ID on Post response

Role/Capability

  • #44287 – REST API: Declare user capability to perform actions using JSON Hyper Schema `targetSchema`

Taxonomy

  • #42691 – WP_Term_Query get_terms generates invalid sql queries
  • #44096 – REST API: Taxonomy and term endpoints should use correct permission checks

TinyMCE

  • #44134 – Update to TinyMCE 4.7.13
    • See the TinyMCE changelog.  WordPress 4.9.6 included TinyMCE 4.7.11, WordPress 4.9.8 updated to TinyMCE 4.8.0, despite the title of this ticket.
  • #44330 – TinyMCE: do not force-load external TinyMCE plugins

Change Log

Introduced

Functions

_wp_privacy_requests_screen_options()
source file: wp-admin/includes/user.php

_wp_privacy_settings_filter_draft_page_titles()
source file: wp-admin/includes/misc.php

get_object_subtype()
source file: wp-includes/meta.php

register_post_meta()
source file: wp-includes/post.php

register_term_meta()
source file: wp-includes/taxonomy.php

unregister_post_meta()
source file: wp-includes/post.php

unregister_term_meta()
source file: wp-includes/taxonomy.php

wp_ajax_update_try_gutenberg_panel()
source file: wp-admin/includes/ajax-actions.php

wp_try_gutenberg_panel()
source file: wp-admin/includes/dashboard.php

Hooks

add_inline_data
source file: wp-admin/includes/template.php

auth_{$object_type}_meta_{$meta_key}_for_{$object_subtype}
source file: wp-includes/capabilities.php

get_object_subtype_{$object_type}
source file: wp-includes/meta.php

sanitize_{$object_type}_meta_{$meta_key}_for_{$object_subtype}
source file: wp-includes/meta.php

try_gutenberg_learn_more_link
source file: wp-admin/includes/dashboard.php

try_gutenberg_panel
source file: wp-admin/index.php

user_erasure_complete_email_subject
source file: wp-includes/user.php

user_request_confirmed_email_subject
source file: wp-includes/user.php

Methods

WP_REST_Attachments_Controller::check_upload_size()
source file: wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php

WP_REST_Comment_Meta_Fields::get_meta_subtype()
source file: wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php

WP_REST_Meta_Fields::get_meta_subtype()
source file: wp-includes/rest-api/fields/class-wp-rest-meta-fields.php

WP_REST_Post_Meta_Fields::get_meta_subtype()
source file: wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php

WP_REST_Posts_Controller::get_available_actions()
source file: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

WP_REST_Posts_Controller::get_schema_links()
source file: wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

WP_REST_Term_Meta_Fields::get_meta_subtype()
source file: wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php

WP_REST_User_Meta_Fields::get_meta_subtype()
source file: wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php

WP_Term_Query::populate_terms()
source file: wp-includes/class-wp-term-query.php

Modified

Functions

get_registered_meta_keys()
modification: The $object_subtype parameter was added.
source file: wp-includes/meta.php

register_meta()
modification: The $object_subtype argument was added to the arguments array.
source file: wp-includes/meta.php

registered_meta_key_exists()
modification: The $object_subtype parameter was added.
source file: wp-includes/meta.php

sanitize_meta()
modification: The $object_subtype parameter was added.
source file: wp-includes/meta.php

unregister_meta_key()
modification: The $object_subtype parameter was added.
source file: wp-includes/meta.php

Deprecated

Hooks

auth_{$object_type}_{$object_subtype}_meta_{$meta_key}unregister_meta_key()
alternative: Use auth_{$object_type}_meta_{$meta_key}_for_{$object_subtype} instead.
source file: wp-includes/capabilities.php

#4-9-8, #release

“Try Gutenberg” Callout in WordPress 4.9.8

WordPress 4.9.8 will contain the “Try Gutenberg” callout, encouraging site owners to install the Gutenberg plugin, to test how their existing content and plugins works with the block editor. It also presents the option of installing the Classic Editor plugin, should they feel that they need more time to prepare for switching over to the block editor.

Screenshot of the “Try Gutenberg” callout in place on the Dashboard.

In WordPress 4.9.8, the callout will be shown to the following users:

  • If Gutenberg is not installed or activated, the callout will be shown to Admin users on single sites, and Super Admin users on multisites. (Based on the install_plugins capability.)
  • If Gutenberg is installed and activated, the callout will be shown to Contributor users and above. (Based on the edit_posts capability.)
  • If the Classic Editor plugin is installed and activated, the callout will be hidden for all users.

Actions and Filters

The callout is attached to the try_gutenberg_panel action. If you would like to remove it on sites that you administer, you can do so with this snippet:

remove_action( 'try_gutenberg_panel', 'wp_try_gutenberg_panel' );

The “Learn more about Gutenberg” link currently directs to https://wordpress.org/gutenberg (or your localised version). However, particularly for hosts, you may have special instructions for your customers to install Gutenberg. In that case, the try_gutenberg_learn_more_link filter allows you to change this link, like so:

function my_host_learn_more_link( $link ) {
    return '<a href="https://support.my.host/gutenberg">Learn more about Gutenberg at My Host</a>';
}

add_filter( 'try_gutenberg_learn_more_link', 'my_host_learn_more_link' ); 

#core-editor, #editor, #gutenberg