Editor Chat Agenda: 17 June, 2020

Facilitator and notetaker: @annezazu

This is the agenda for the weekly editor chat scheduled for 2020-06-17 14:00 UTC. This meeting is held in the #core-editor channel in the Making WordPress SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/..

  • 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/ 8.3.0
  • Monthly Plan
  • Weekly Priorities
  • Task Coordination
  • Open Floor

Even if you can’t makemake A collection of P2 blogs at make.wordpress.org, which are the home to a number of contributor groups, including core development (make/core, formerly "wpdevel"), the UI working group (make/ui), translators (make/polyglots), the theme reviewers (make/themes), resources for plugin authors (make/plugins), and the accessibility working group (make/accessibility). the meeting, you’re encouraged to share anything relevant for the discussion:

  • If you have anything to share for the Task Coordination section, please leave it as a comment on this post.
  • If you have anything to propose for the agenda or other specific items related to those listed above, please leave a comment below.

#agenda, #coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.-editor, #core-editor-agenda, #gutenberg

X-post: External Linking Policy – Trusted Sources

X-comment from +make.wordpress.org/docs: Comment on External Linking Policy – Trusted Sources

Setting the structure and an agenda for APAC-friendly devchat

@francina‘s proposal for APAC-friendly devchats attracted interest from commenters on every continent. I approached them recently to get their thoughts on moving forward.

Based on that advice, I propose a first meeting to set up these devchats and schedule them on the #core channel on Makemake A collection of P2 blogs at make.wordpress.org, which are the home to a number of contributor groups, including core development (make/core, formerly "wpdevel"), the UI working group (make/ui), translators (make/polyglots), the theme reviewers (make/themes), resources for plugin authors (make/plugins), and the accessibility working group (make/accessibility). WordPress SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/..

A look at all the team meetings in the Meeting Calendar shows an opening on Thursdays at 15:00 UTC – there are no other meetings in that slot.

So let’s meet next week: Thursday, June 25th, at 15:00 UTC.

Please comment below with your thoughts on discussion topics, ongoing structure and agenda or anything else that seems relevant.

See you on the 25th!

#apac, #devchat, #meeting-calendar, #proposal

Call for feedback – WP Notify v1 requirements document

Way back in August of 2019, we posted a Feature Project Proposal for a new way of handling WordPress coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. notifications, called WP Notify.

The goal of this proposal is to create a new (better) way to manage and deliver notifications to the relevant audience.

Since then, a small team of dedicated, passionate contributors have been working on what this feature should look like, how it should work and ultimately, what it should deliver to both users and developers of WordPress. Early on it was agreed that we should focus on drafting the requirements for a minimum viable productMinimum Viable Product "A minimum viable product (MVP) is a product with just enough features to satisfy early customers, and to provide feedback for future product development." - WikiPedia (MVPMinimum Viable Product "A minimum viable product (MVP) is a product with just enough features to satisfy early customers, and to provide feedback for future product development." - WikiPedia) of this feature, in order to put the pieces in place, deliver value early, and iterate with feedback.

I am happy to report that the requirements document for this MVP has been competed, and is ready for review and community feedback.

You can view that document here.

We would like to reach out to the wider WordPress community, ask them to review this document, and add their feedback in the comments of this post.

Feedback like “great work”, or just a like, is always welcome :-), but we would also ask you to consider the details of the document. Is there some technical limitation we’ve missed? Perhaps something that could be left out of the MVP releaseRelease A release is the distribution of the final version of an application. A software release may be either public or private and generally constitutes the initial or new generation of a new or upgraded application. A release is preceded by the distribution of alpha and then beta versions of the software.? While we ideally don’t want to making drastic changes to the list of project requirements at this stage, we do know that it takes a village to build a new feature.

Comments for this post will remain open until Tuesday, June 30, 2020, 22:00 UTC.

#feature-notifications

Shipping Experimental Endpoints in Core: REST API Meeting Summary June 11, 2020

This post summarizes the #core-restapi meeting for Thursday June 11, 2020. The focus of this meeting was discussing the possibility of shipping __experimental 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/. routes in WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Read the Slack archive, account required.

Background

Part of the REST API team’s role is to help ensure that enhancements to the REST API follow Core’s established patterns and that the interface is sufficiently forward compatible.

The Problem

WordPress 5.5 is shaping up to have a number of new and improved REST API endpoints to support the latest 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/ features: #40878 and #50244 for Navigation, #50321 and #48654 for the BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Directory, #47620 for Block Registration, etc…

Another Gutenberg feature currently slated for 5.5 is Image Editing. This feature utilizes the REST API and existing WP_Image_Editor 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. to persist the image edits. This feature took the REST API team a bit off guard, and the team is worried about providing an adequate review of the feature in time for WordPress 5.5 given the other tickets in progress.

This feature is currently listed as a Gutenberg Experiment. The hope is to promote it from an experiment by the next Gutenberg releaseRelease A release is the distribution of the final version of an application. A software release may be either public or private and generally constitutes the initial or new generation of a new or upgraded application. A release is preceded by the distribution of alpha and then beta versions of the software..

Potential Solution

While the current server side code supporting Image Editing requires changes, it is likely that the Editor and/or Media team will be able to resolve these issues in time for 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. The question then becomes if the REST API team will have the bandwidth to do a review. Additionally, will the API have had a long enough soak time to reduce the possibility of a design error necessitating a breaking change.

In the weekly #core-editor meeting, the possibility of including the required REST API endpoints in the __experimental namespace was briefly discussed. This would allow us to ship the Image Editing feature in WordPress 5.5. If breaking API changes were necessitated those could be made when the endpoint is promoted to the wp/v2 endpoint.

Note: This is distinct from the feature being marked as an “experiment” in the Gutenberg settings page. The goal is to ship this as a feature in WordPress 5.5; the 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 would not be required to use the feature.

Experimental APIs

Nearly all APIs in WordPress are “public” and backwards compatibility is maintained. Some APIs are explicitly marked as @access private, most notably the List Table API. Despite being private, when responsive list tables (#32395) were introduced, great lengths were made to ensure that the changes were backwards compatible with custom list tables.

Gutenberg introduced the idea of “experimental” and “unstable” APIs.

There is no support commitment for experimental and unstable APIs. They can and will be removed or changed without advance warning, including as part of a minor or patchpatch A special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. release. As an external consumer, you should avoid these APIs.

An experimental API is one which is planned for eventual public availability, but is subject to further experimentation, testing, and discussion.
An unstable API is one which serves as a means to an end. It is not desired to ever be converted into a public API.

The Gutenberg Coding Guidlines

The version of Gutenberg that ships with WordPress Core utilizes a number of __experimental and __unstable APIs. But so far this has been limited to only 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/. APIs.

REST API endpoints introduced in the Gutenberg plugin are currently introduced in the __experimental namespace, but are transitioned to wp/v2 before being merged to WordPress Core. Because the namespace changes, this process in itself is breaking, even if no other API changes were made.

Discussion

Editorial Note: Part of this discussion focused on the current state of the endpoint which has a number of functional and design issues. These have been flagged in the various issues and tickets and I won’t be summarizing these issues here. We would not ship an endpoint in WordPress Core, even as a proposed __experimental one, if it was broken.

@timothyblynjacobs main concern is that if there are security issues with the endpoint, or any other “fatal flaws” it being __experimental doesn’t protect us in anyway.

@spacedmonkey is concerned that once a feature is in Core, developers will start using it and it can never be removed. WordPress hasn’t shipped features in Core before they are ready and shipping an __experimental endpoint like this would break that pattern. If the feature isn’t ready, we should wait until 5.6.

@earnjam thinks that if it’s something useful, people will use it regardless of any flag/prefix applied. Then it’s a question of if we’re comfortable breaking stuff because we warned them.

To me the insistence on full backward compatibility is one of WP’s biggest assets. We’ve been drifting away from that to an extent in Gutenberg and I think it undermines a core element of what makes WordPress what it is. I think in core we had moved away from shipping private APIs for a while for this very reason, they’re going to get used whether we want them to or not. To me, that’s the whole point of doing feature plugins. It allows you to iterate and break things in the plugin, but not core. IMO the Gutenberg plugin is an experimental flag. Only the stuff that is truly ready should be brought over.

I’m ok with the experimental stuff in the Gutenberg plugin because that is opting in. I don’t know that I’m comfortable with it in core.

From @earnjam.

@jamesburke asked if the __experimental approach been a success with Gutenberg? If so, it’d be a useful pattern to implement (regardless of whether the editing endpoint is ready for this).

IMO, if you mark it as experimental, then break whatever needs to get broken. I’ve worked on production projects that heavily utilize Gutenberg experimental functionality, and it’s always nice to have early access to things. In my experience, the opportunity to use functionality in the wild and apply it to real world problems greatly outweighs the attention/effort needed to upgrade if/when something breaks on the experiment. 

From @jamesburke.

@carike points out that lot of non-technical users won’t even know that the feature exists and are not in the same position to mitigate the associated risks – particularly in use cases that are not traditional publishing, e.g. e-commerce.

@chrisvanpatten thinks that more experimentation is absolutely a good thing, but is not sure Core is the right venue for that. Gutenberg is able to play a bit fast and loose with backwards compatibility, but that has been isolated from Core to a degree. He tends to believe that __experimental APIs landing in Core has been a mistake, even as someone who has leveraged experimental JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. APIs before.

@ajlende thinks there have been good arguments for holding off too. When he pushed the initial image editing feature, the intention was for people to start trying it out to let people use it and adjust. If Core is looking for more stable things, then he’d agree it isn’t ready.

@joemcgill mentioned that if the API is shipping in Core, even as __experimental, it absolutely will get used, so backwards compatibility must be a consideration.

@sageshilling suggested offering a quick way to turn it off the feature for sites that don’t want the image editing options. @ajlende indicated that the current code is behind a feature flag. Supporting an opt-out if the feature was included in Core would therefore likely be possible.

Next Steps

@joemcgill is fully +1 on the existence of a REST API replacement to the AJAX callbacks currently in core which is used by the image editor in the media modal and is happy to help this if it’s a priority.

@mikeschroder is completely agreed that a REST API endpoint to replace the existing AJAX is awesome.

Tickets/Issues

#49096, #44405. GB-22959, GB-21024, GB-22579.

Questions

This post is a solicitation for feedback as much as a meeting summary. Some potential questions to ponder.

  1. Have experimental APIs been a success in Gutenberg? How often are __experimental APIs transitioned to stable APIs? Is this a fast process, or do the APIs stay as __experimental for a long time? What sort of changes are discovered that necessitate breaking changes?
  2. Should we be comfortable breaking backwards compatibility because developers were explicitly warned that the feature was an experiment?

The next REST API meeting is this Thursday June 18th at 18:00 UTC.

#5-5, #gutenberg, #rest-api

Devchat meeting summary – June 10th, 2020

@whyisjake led the chat on this agenda.

Highlighted/Need Feedback Blogblog (versus network, site) Posts

@whyisjake shared a few blog posts and announcements:

Upcoming releases

WordPress 5.4.2

WordPress 5.4.2 was planned to be released Wednesday 10th after the devchat (and successfully shipped with the help of our amazing contributors). This version includes six security fixes and many 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. More details about what is inside can be found on the version page.

WordPress 5.5

@pbiron reminded that three feature plugins will be included in WordPress 5.5. Lazy loading of images, themes, and plugins, auto-updates, and XML sitemaps.

Some tickets for enhancements/features will need some help, testing, or feedbacks before 5.5 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 (targeted date: July 7th, 2020): #40351, #41750, #33161, #47456, #43738.

@audrasjb mentioned some other tickets on which the AccessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) team needs help and feedback. #49459 and #49651 need Editor team feedback and #30155, #47120 and #48170 will need feedback and expertise from the Media team.

@paaljoachim said he’s working on #16020 and would need some feedback on it.

Open Floor

@enricosorcinelli mentioned that #21676 got some new attentions, and could be a possible candidate to ship in 5.5.

@adamsilverstein reminded the group that the #core-js team is looking for an additional person to help run the weekly 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/. chat. The chats take place Tuesday at UTC-06:00 in #core-js. Feel free to say in the channel in the next meeting if you’re interested in that.

@justinahinon said that he reached out to people interested in helping on hosting APAC devchats proposed here. There is a plan to discuss in the #core channel about the outcomes of the meetings and a possible schedule (a note about that will be published soon on Makemake A collection of P2 blogs at make.wordpress.org, which are the home to a number of contributor groups, including core development (make/core, formerly "wpdevel"), the UI working group (make/ui), translators (make/polyglots), the theme reviewers (make/themes), resources for plugin authors (make/plugins), and the accessibility working group (make/accessibility)./CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. blog).

Related to that, @yvettesonneveld shared what they have been doing for marketing coffee breaks and that was very helpful in recruiting and retaining contributors. Updates for this can be found here.

@jeffpaul proposed some additions to the Releasing Major Version and Glossary handbooks. These additions are about the early ticketticket Created for both bug reports and feature development on the bug tracker. definition and how they are handled during the releaseRelease A release is the distribution of the final version of an application. A software release may be either public or private and generally constitutes the initial or new generation of a new or upgraded application. A release is preceded by the distribution of alpha and then beta versions of the software. process. This is a result of discussions at WCEU 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/. and received helpful feedback from @davidb, @desrosj, and @joemcgill. Some contributors had a discussion about that, and you can rollback to here to follow.

@enricosorcinelli reminded that they are some tickets that have been milestoned for each release since 5.0 but hadn’t received any attention in their life cycle. These are #43516, #43517.

This closed the devchat discussions to leave room for WordPress 5.4.2 release party.

#5-4-2, #5-5, #summary

Editor chat summary: Wednesday, 10 June 2020

This post summarizes the latest weekly Editor meeting (agenda, slack transcript), held in the #core-editor SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/. channel, on Wednesday, June 10, 2020, 14:00 UTC.

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/ 8.3.0

Gutenberg 8.3.0 has been released. The team continues iterating on two big projects – Full Sitesite (versus network, blog) Editing and Navigation Screen- while improving other areas of the editor as well.

Includes some great features like padding support for cover blocks, color support for link, enhanced 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. toolbars. Check out the releaseRelease A release is the distribution of the final version of an application. A software release may be either public or private and generally constitutes the initial or new generation of a new or upgraded application. A release is preceded by the distribution of alpha and then beta versions of the software. note for more details.

Monthly Plan

The high-level items that Gutenberg contributors are focusing on for the month are available here

Weekly Priorities

There was limited discussion on the specifics.

Looking to land the Block Inserter for 5.5. Extra eyes are needed on this PR and @ellatrix is looking at reusing an existing endpoint for the front end images, but there could be the possibility an experimental 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. is shipped. The issue will be discussed by the 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/. team.

Task Coordination

Note: Anyone reading this summary outside of the meeting, please drop a comment in the post summary, if you can/want to help with something.

@mkaz

  • Working on a new Create a Block tutorial based on the create-block and wp-scripts for developers new to block development.  

@michael-arestad

  • Working on Full Site Editing related items
  • The main priority being WP 5.5 would be reviewing anything related to it, especially issues/PR’s we want to get in, but are stalled or need design feedback.
  • I would appreciate pings on any issues for 5.5 that could use design eyes.

@annezazu

  • Working on some documentation and wrangling proper feedback tools for the Full Site Editing outreach program. This documentation will be specific to helping those in the program know how best to provide feedback, setup Gutenberg.

@zebulan

  • Working on adding a heading level checker. Design feedback to ensure an accessible UIUI User interface would be appreciated 22650.
  • As a follow-up to 22650, working on a PR that refactors PostSavedState to use 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.. (some technical questions that need addressing before I can progress)
  • PR to revise the Save draft and Preview buttons should be ready for final reviews now.
  • Custom HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. block polish PR needs reviews.
  • Table of Contents block PR is still stuck.
  • List block color controls PR is also stuck.
    A code quality PR to refactor ReusableBlockEditPanel to use hooks is ready for review.

@ellatrix

  • Mostly working on image editing refinements (since we’ll try to get it in 5.5) and experimenting with the light block API.

@youknowriad

  • Working essentially on the Inserter and helping with a few other things like Adminadmin (and super admin) Colors handling.

@itsjonq

  • Continue focus on the Cover block, have PRs/branches that enables:
    • positioning coordinates for Video backgrounds (+ improved positioning controls).
    • Extract dominant color from the Cover image
    • Apply background filters (e.g. saturation, contrast, etc… ) (works for video too!)
  • Continuing efforts to improve @wordpress/component components.
    The goal is to makemake A collection of P2 blogs at make.wordpress.org, which are the home to a number of contributor groups, including core development (make/core, formerly "wpdevel"), the UI working group (make/ui), translators (make/polyglots), the theme reviewers (make/themes), resources for plugin authors (make/plugins), and the accessibility working group (make/accessibility). them feature-rich so that the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress./3rd party has less overhead when using them. This includes improving internal state management, style rendering, cross-component integration, and built-in UXUX User experience features (e.g. drag to update).

@paaljoachim

  • Working with @mkaz on Create a Block tutorial
  • General Gutenberg design triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors..

@toro_unit

  • Working on getting rid of errors that occur in the console 23019, 22967.

@ntsekouras

  • Working on changing the layout of transform Block to a vertical list and changing a bit the Styles preview 23028.

@retrofox

  • Improvements in the MediaPlaceholder and MediaReplaceFlow, which in short allow us to control the uploading process a little bit more, knowing what are the files that are being uploaded by the user.

Open Floor

@cvoell

  • The Gutenberg-Mobile + Gutenberg Web “Monorepo” effort seems to be approaching final PR Reviews in the next 1-2 weeks, so we wanted to give everyone here a heads up about that.
  • Final PR should go from Draft to Ready for review in the next 2-3 days.
  • Changes that web devs might see are summarized here.
  • For now, would like to highlight
    • We added 4 new CI jobs (as GitHubGitHub GitHub is a website that offers online implementation of git repositories that can 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) which will run on each PR for e2e testing of the mobile demo app.
    • Three new packages: reactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/.-native-aztec, react-native-bridge and react-native-editor
    • A new npm command npm run native to run native scripts in packages/react-native-editor/package.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.
    • After Monorepo changes are merged, you will be able to try the demo app by running npm run native start:reset followed by npm run android (or npm run ios) in a new terminal.
    • You will need either the Android SDK or XCode installed on your machine (a docker based script should come later).

@mkaz

Documentation versioning

  • It was discussed yesterday to switch Gutenberg docs publishing to DevHub back to off the master 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.), and then figure out how to publish sets of versioned docs based off wp version tags. I’m not sure what the next steps should be. I can modify scripts and process and work on it, but don’t know who/where/what/how
  • The problem of using a master is that things change that aren’t in core. So the idea was a version switcher, for a complete set of docs Or somehow version on a per-function/feature, which is how Codex/Reference works in Core.
  • @youknowriad A version switcher would be great. I’d suggest you should ask in #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. or try to find a developer familiar with the meta repo to help here.
  • I’ll check with them and see what we can work out

#meeting-notes, #core-editor, #editor, #gutenberg

What’s new in Gutenberg (11 June)

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/ 8.3 has been released. The team continues iterating on two big projects -Full Sitesite (versus network, blog) Editing and Navigation Screen- while improving other areas of the editor as well.

Design Tools

This releaseRelease A release is the distribution of the final version of an application. A software release may be either public or private and generally constitutes the initial or new generation of a new or upgraded application. A release is preceded by the distribution of alpha and then beta versions of the software. features a few additions to the design tools for the blocks.

A new padding control was added to the cover blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.. This is an opt-in feature that themes have to declare support for via add_theme_support('experimental-custom-spacing').

Also a new link color control was added to the paragraph, heading, group, columns, and media&text blocks. It’s opt-in as well, via add_theme_support('experimental-link-color').

WCEU 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/.

As part of the Contributor Day at WCEU 2020, the editor team hosted an online session to help people get started with Gutenberg. It was recorded and you can watch at:

As a result, a good number of Pull Requests were created and are part of this release! If you missed it or you want to start contributing, take a look at the Getting Started guidelines, and grab one of the Good First Issues and/or Good First Pull Requests.

And more

In addition to the above, this release consolidates a new organization of block categories that groups blocks into text, media, design, widgets, and embeds.

The block toolbar also got an upgrade and it now comes with a parent selector to improve navigation in nested contexts:

8.3 🇪🇺

Features

  • New padding control to cover block. (21492, 23041)
  • New link color control to paragraph, heading, group, columns, and media-text blocks. (22722, 23025, 23049)
  • Updated default block categories. (19279)
  • New parent block selector to child blocks. (21056)

Enhancements

  • Blocks:
    • SiteTitle: add alignment and 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.) level support. (22843)
    • Heading: use toolbar for heading level control. (20246)
    • LatestPost: add the ability to 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. by author. (16169)
    • Add caption split at end to all caption blocks. (22934)
    • Add transforms between the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. widgets that have equivalent blocks. (22644)
  • Interface package:
    • Add block areas tabbed sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. to the widgets screen. (22467)
    • Use isActiveByDefault prop and local storage to determine whether it is active or not. (22381)
    • Add a mechanism to render them on edit site. (21430)
    • Sidebar reacts to screen size and refactor to use interface package. (22565)
  • Add a heading to the block inserter tips and to the block inserter groups (22898, 22903)
  • Move between nesting levels with arrow keys in navigate mode. (22614)
  • Add icons for image tools, other, and update list icons. (22593)
  • Block Navigator: Use default block appender. (22590)
  • Adds a default text label to the block appender when it can only insert a single block type (22293)
  • Makemake A collection of P2 blogs at make.wordpress.org, which are the home to a number of contributor groups, including core development (make/core, formerly "wpdevel"), the UI working group (make/ui), translators (make/polyglots), the theme reviewers (make/themes), resources for plugin authors (make/plugins), and the accessibility working group (make/accessibility). ToolbarButton 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. consistent. (22961)
  • Implement roving tab index on the Image block. (22696)
  • Block Editor: Allow control over drop cap feature with useEditorFeature helper. (22291)
  • 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/.:
    • Add block styles register mechanism. (22680)
    • Update default values for fields in the block type schema. (22695)

New APIs

  • Add new package @wordpress/lazy-import for lazily installed packages. (22684)
  • Added _experimental/block-types endpoint to expose all registered blocks. (REST API 21065, register core blocks in the server 22491).

Experimental

  • Added experimental version of rich image editing tools. (21024, 22870)
  • Full Site Editing
    • New template creation flow for EditSite. (22586)
    • Edit Site: Avoid dirtying un-customized templates on first load. (22876)
    • Edit Site: Refactor business logic into store. (22844)
    • Global Styles: make 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. shape consistent with local styles shape. (22744) and take block supports from block.json. (22698)
    • Edit Site: fixes to template lookup and template parts auto-drafts (22954, 23050)
  • Navigation screen
    • Use a panel for navigation structure on small screens only. (22828)
    • Disable the navigator toolbar button. (22792)
    • Atomic save using customizerCustomizer Tool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings. API endpoint. (22603)
    • Retain block IDs on save. (22739)
    • Separate concerns in useNavigationBlocks. (22825)
    • Fetch all menus for display in select menu. (22591)
    • Fix keyboard navigation in Navigation block. (22885)
    • Rename EllipsisMenu to BlockNavigationBlockSettings. (22630)
    • Remove BlockNavigationEditor from navigation-link/edit.js. (22629)
  • Block directory:
    • Update the state to store the installing status per block id. (22881)
    • Use semantic element for block directory download heading. (22713)
    • Add the list of installed blocks to the pre-publish sidebar. (22752)
    • Store refactor. (22388)

Bugfixes

  • Blocks
    • Skip null values returned from the server during registration. (22849)
    • LatestPost: fix to display author. (22937)
    • Legacy Widgets: widgets with special chars on classname did not load. (22841)
    • Group: clean up block padding rules. (22746)
    • Gallery: fix initial creation via media library. (22659)
    • Cover: fix height reset on unit change. (22642)
    • Navigation: fix submenu keyboard a11yAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) in IE. (22546)
    • Buttons: fix invalidinvalid A resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. property value for margin-right. (22211)
  • CustomSelectControl:
    • Use default cursor style (22926)
    • Fix arrow spacing. (22925)
  • Fix Drag and Drop in Safari by upgrading Reakit. (22960)
  • Font size picker reset button: make it visible in all languages. (22896)
  • Components: ToolbarButton use forwardRef. (22970)
  • Remove aria-label from iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the user’s browser. resizers. (22868)
  • LinkControl: avoid showing “Recently updated” when there are no recently updated Pages from the API. (22856)
  • CopyHandler: Fix unintended Copy override when copying from input or textarea elements. (22793)
  • Customizer complementary area should not include the block areas. (22756)
  • Icons: Fix package references. (22702)
  • Fix missing parentheses in usePrevious hook. (22608)
  • Fix presets in themes that use the default color & gradient palettes. (22526)
  • Fix dark menus in canvas, not in top toolbar. (22516)

Performance

  • Remove ifBlockEditSelected internal higher-order component. (22905)
  • Remove withBlockEditContext internal higher-order component. (22942)

Documentation

  • Handbook
    • Fix links for dynamic blocks page. (22945)
    • theme.json specification: document link color feature (22929) and features integration. (22622)
    • Block Registration: document use of innerBlocks in example property. (22633)
    • Initial documentation for architecture decisions. (22751)
    • Reusable blocks: initial improvement to documentation. (21843)
    • Default to ESNext syntax in MetaBoxMetabox A post metabox is a draggable box shown on the post editing screen. Its purpose is to allow the user to select or enter information in addition to the main post content. This information should be related to the post in some way. & Block tutorials. (22748, 22973)
    • Block Tutorial: fixed typo in the wp_register_script function. (22755)
  • JSDoc comments:
  • Contributor docs:
    • Add code examples section. (22974)
    • Update triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. to include release instructions. (22335)
    • Update repository management with proposed guidelines. (22679)
  • Env:
    • Reference destroy command. (22643)
    • Fix use of backticks. (22980)
  • Improve e2e-test README. (22661, 22654)
  • Move BlockDropZone reactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. hook and update documentation. (22619)
  • Update PULL_REQUEST_TEMPLATE.md to include PR documentation nudge. (22681)

Code Quality

  • Refactor some components to use 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.:
  • Polish ImageSizeControl. (22917)
  • Latest Posts Block: add key to categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. select box. (22904)
  • Rename the navigation mode BlockBreadcrumb component to BlockSelectionButton. (22882)
  • Extract inserter state into reusable hooks. (22710)
  • Replace function expressions with named function or arrow expression. (22647)
  • Remove unused isDraggable prop from BlockList. (22615)
  • Remove form control resets and include the styles in the components. (22596)
  • Project Management Automation: reorganize folder structure. (22574)
  • Dependency Extraction Webpack 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: add types. (22498)
  • Blocks: Avoid separate host matching constant for embeds. (13755)

Breaking Change

  • Scripts: Remove legacy env command. (22953)
  • ESLint Plugin/Scripts: Update ESLint and related deps to 7.1.0. (22771)

Build Tooling

  • Env package:
    • Add support for interactive run commands (like bash). (22611)
    • Ensure correct port setting on related wp-config params. (22559)
    • Update Source type to WPSource. (22785)
    • Fix ssh-auth nodegit + better snap pack detection. (22649)
    • Correct 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 support. (22613)
    • Update copy-dir dependency to version 1.3.0. (22682)
  • Create Block:
    • Integrate CSSCSS Cascading Style Sheets. import in JSJS JavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. with esnext template. (22727)
    • Enhancements for the upcoming npm release. (22978)
  • Scripts:
    • Add support for postcss.config.js. (22735)
    • Support split Jest configuration for test commands. (22477)
    • Split webpack loader rules for CSS and Sass files. (22786)
  • Release tool: warn about open issues in milestone before starting release. (22764)
  • Changelog tool: Enhance entry normalizations. (22601)
  • Performance tool: fixes to run across branches. (22676)

Various

  • Use Card instead of Panel for the block editor. (22827)
  • Revert add selectionStart and selectionEnd to transientEdits. (22933)
  • BlockEditor: fix readme syntax. (22809)
  • Trigger additional widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user. setup actions. (22807)
  • Align navigator icon and buttons to top. (22790)
  • Set default selection to the root navigation block. (22737)
  • end-to-end tests:
    • Disable inconsistent test for gallery. (22726)
    • Specify icon for block context test blocks. (22811)
    • Configure Axe to ignore media modal markup. (22719)
    • Define end-to-end test experimental features utility as lifecycle helper. (22712)
  • CODEOWNERS updates. (22725)
  • Add data-handle to all script tags in the adminadmin (and super admin). (22721)
  • Add onDeleteBlock to the extra data to re-render when it has changes. (22716)
  • Add support for page=1 and perPage=-1 to getMergedItemIds. (22707)
  • Replace three experimental flags (ellipsis menu w/ min level, navigator slots) with just __experimentalFeatures. (22670)
  • Add require headers to plugin and readme (php 5.6). (22669)
  • Update package-lock.json so that CI tests pass. (22667)
  • Framework: Upgrade to wp-prettier@2.x. (22610)
  • Remove the multi-block type check to make __experimentalConvert more useful. (22577)
  • Mousetrap: Update to latest stable version. (22548)

Performance Benchmark

The following benchmark compares performance for a particularly sizeable post (~ 36 000 words, ~ 1 000 blocks) over the last releases. Such a large post isn’t representative of the average editing experience but is adequate for spotting variations in performance.

Version Loading Time KeyPess Event (typing)
Gutenberg 8.3 11.94s 47,75ms
Gutenberg 8.2 11.43s 47.95ms
WordPress 5.4 13.79s 39.32ms

Kudos for all the contributors that helped with the release. 👏

#core-editor, #editor, #gutenberg-new

CSS Chat Agenda: 11th June…

CSSCSS Cascading Style Sheets. Chat Agenda: 11th June 2020

This is the agenda for the upcoming CSS meeting scheduled for Thursday, June 11, 2020, 5:00 PM EDT.

This meeting will be held in the #core-css channel in the Making WordPress SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/..

If there’s any topic you’d like to discuss, please leave a comment below!

  • CSS audit status update
  • Discussion on color naming with the design team
  • Additional color scheming updates
  • Latest and Greatest in CSS Link Share

#agenda, #core-css

Merge Announcement: Extensible Core Sitemaps

This proposal seeks to integrate basic, extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. XML sitemaps functionality into WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress..

While web crawlers are able to discover pages from links within the sitesite (versus network, blog) and from other sites, sitemaps supplement this approach by allowing crawlers to quickly and comprehensively identify all URLs included in the sitemap and learn other signals about those URLs using the associated metadata.

Purpose & Goals

Sitemaps help WordPress sites become more discoverable by providing search engines with a map of content that should be indexed. The Sitemaps protocol is a URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org inclusion protocol and complements robots.txt, a URL exclusion protocol.

A Sitemap is an XML file that lists the URLs for a site. Sitemaps can optionally include information about each URL: when it was last updated, how often it changes, and how important it is in relation to other URLs of the site. This allows search engines to crawl the site more effectively and to discover every public URL the site has made available. 

This core sitemaps feature aims to provide the base required functionality for the Sitemaps protocol for core WordPress objects, then enables developers to extend this functionality with a robust and consistent set of filters. For example, developers can control which object types (posts, taxonomies, authors) or object subtypes (post types, taxonomies) are included, exclude specific entries, or extend sitemaps to add optional fields. See below for the full list.

Project Background

The idea of adding sitemaps to core was originally proposed in June 2019.  Since then, development has been ongoing in GitHubGitHub GitHub is a website that offers online implementation of git repositories that can 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/, and weekly meetings in the #core-sitemaps channel started this year to push development forward. Several versions of the feature plugin have been released on the WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ 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 repository, with the latest 0.4.1 representing the state that is considered ready to merge into core. The team is currently working on preparing the final patch to include on the Trac ticket.

Implementation Details

XML Sitemaps will be enabled by default making the following object types indexable:

  • Homepage
  • Posts page
  • Core post types (i.e. pages and posts)
  • Custom post types
  • Core taxonomies (i.e. tags and categories)
  • Custom taxonomies
  • Author archives

Additionally, the robots.txt file exposed by WordPress will reference the sitemap index.

A crucial feature of the sitemap plugin is the sitemap index. This is the main XML file that contains the listing of all the sitemap pages exposed by a WordPress site. By default, the plugin creates a sitemap index at /wp-sitemap.xml which includes sitemaps for all supported content, separated into groups by type. Each sitemap file contains a maximum of 2,000 URLs per sitemap, when that threshold is reached a new sitemap file is added.

By default, sitemaps are created for all public post types and taxonomies, as well as for author archives. Several filters exist to tweak this behavior, for example to include or exclude certain entries. Also, there are plenty of available 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. for plugins to integrate with this feature if they want to, or to disable it completely if they wish to roll their own version.

Contributors and Feedback

The following people have contributed to this project in some form or another:

Adrian McShane, @afragen, @adamsilverstein, @casiepa, @flixos90, @garrett-eclipse, @joemcgill, @kburgoine, @kraftbj, @milana_cap, @pacifika, @pbiron, @pfefferle, Ruxandra Gradina, @swissspidy, @szepeviktor, @tangrufus, @tweetythierry

With special thanks to the docs, polyglots, and security teams for their thorough reviews.

Available Hooks and Filters

Check out the feature plugin page for a full list of filters and also a few usage examples.

Frequently Asked Questions

How can I disable sitemaps?

If you update the WordPress settings to discourage search engines from indexing your site, sitemaps will be disabled. Alternatively, use the wp_sitemaps_is_enabled 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., or use remove_action( 'init', 'wp_sitemaps_get_server' ); to disable initialization of any sitemap functionality.

How can I disable sitemaps for a certain object type or exclude a certain item?

Using the filters referred to above – check out the feature plugin page for examples.

Does this support lastmod, changefreq, or priority attributes for sitemaps?

By default, no. Those are optional fields in the sitemaps protocol and not typically consumed by search engines. Developers can still add those fields if they want to using the filters referred to above.

lastmod in particular has not been implemented due to the added complexity of calculating the last modified dates for all object types and sitemaps with reasonable performance. For a common website with less frequent updates, lastmod does not offer additional benefits. For sites that are updated very frequently and want to use lastmod, it is recommended to use a plugin to add this functionality.

What about image/video/news sitemaps?

These sitemap extensions were declared a non-goal when the project was initially proposed, and as such are not covered by this feature. In future versions of WordPress, filters and hooks may be added to enable plugins to add such functionality.

Are there any UIUI User interface controls to exclude posts or pages from sitemaps?

No. User-facing changes were declared a non-goal when the project was initially proposed, since simply omitting a given post from a sitemap is not a guarantee that it won’t get crawled or indexed by search engines. In the spirit of “Decisions, not options”, any logic to exclude posts from sitemaps is better handled by dedicated plugins (i.e. SEO plugins). Plugins that implement a UI for relevant areas can use the new filters to enforce their settings, for example to only query content that has not been flagged with a “noindex” option.

Are there any privacy implications of listing users in sitemaps?

The sitemaps only surface the site’s author archives, and do not include any information that isn’t already publicly available on a site.

Are there any performance implications by adding this feature?

The addition of this feature does not impact regular website visitors, but only users who access the sitemap directly. Benchmarks during development of this feature showed that sitemap generation is generally very fast even for sites with thousands of posts. Thus, no additional caching for sitemaps was put in place.

If you want to optimize the sitemap generation, for example by optimizing queries or even short-circuiting any database queries, use the filters mentioned above.

What about sites with existing sitemap plugins?

Many sites already have a plugin active that implements sitemaps. For most of them, that will no longer be necessary, as the feature in WordPress core suffices. However, there is no harm in keeping them. The core sitemaps feature was built in a robust and easily extensible way. If for some reason two sitemaps are exposed on a website (one by core, one by a plugin), this does not result in any negative consequences for the site’s discoverability.

#5-5, #feature-plugins, #feature-projects, #merge-proposals, #xml-sitemaps