Request for Input: Consent Preferences for Logged In Users (Consent API)

The coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.-privacy team are currently working on three modular, but complementary initiatives, with the aim of merging into 5.6.
These are: The Consent 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. (website visitor level privacy); the Disclosures Tab (site-level privacy) and collaborating with the core-media team on the Local AvatarAvatar An avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name. Project.

The Consent API in its current form does not distinguish between consent preferences for users who are registered and logged in, vs. those who are either not registered, or registered, but not logged in.
This means that all consent preferences are currently saved in cookies.

This means that there are two approaches available to the team. Either we can use the wp_set_consent() function from the user’s profile page to allow them to manage their preferences and prevent unnecessary API calls (proposal 1 – status quo), or we can let the database be the ultimate source of truth to provide a more robust API, rather than an interface for an analytics opt-out (proposal 2).

There has been a lot of discussion in the channel lately. I will post a separate P2P2 A free theme for WordPress, known for front-end posting, used by WordPress for development updates and project management. See our main development blog and other workgroup blogs. post for discussions such as prompting logged in users who previously opted in for consent again if new cookies are added – or at the very least least providing the necessary 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. and filters for plugins to do so. Those are concerns can be realistically and effectively addressed in the UIUI User interface design requirements.

This is a fundamental design choice and while the window is wide open now, it will not remain so for long, as 5.6. approaches.
For purposes of this discussion, we please need input on the following, so that we can take the matter to dev chat:
1. Should consent preferences for registered users (applicable when logged in) be saved in cookies, or should they be saved in the database?
If consent preferences are saved in cookies, these could be displayed (and updated) in the user profile, but the choice would be transient and would effectively need to revert to site defaults every time the cookie is cleared.
2. If they are saved in the database, should 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/. be used to expose the logged in user’s consent preference on the front end?
3. If the REST API is used, should a new REST endpoint be created, or should register_meta() be used instead?
4. Should the consent preference be exposed on the front end using wp.data? The trade-off being that this provides nicer abstraction and makes it easier to move towards object-oriented, rather than event-orientated programming, but adds a few KB to the front-end?
5. If wp.data is used, should only this be used, or should the consent preference still be exposed to the front end by a method in point 3?

Thank you for everyone who has participated in this discussion on 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/. so far. I intentionally did not include who made which proposals for this P2 post, in order to focus on the merits of the alternative solutions, but will credit participants in tickets if those need to be created.
Participants in the Slack discussion are of course very welcome to express their opinions here! 😀

Your inputs are appreciated!

#consent-preferences, #consent-api, #core-privacy, #privacy, #request-for-comment

Dev Chat – APAC Edition Meeting Summary – August 20 2020

@peterwilsoncc called us to order and introduced @thewebprincess as the release coordinator and handed the chat over to her facilitation. 

The chat started out loosely following the same agenda as the earlier chat celebrating the commencement of the new release and release squad.

This sparked an excited response about having an APAC based release coordinator and a cheeky question about whether or not the release party would now fall into APAC timezones as a result. (Let’s cross that bridge when we come to it).

We also highlighted the same two posts for review.

Open floor

As it was initially a fairly quiet gathering @thewebprincess took the opportunity to ask some probing questions about what it’s like to contribute to coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. when you’re based in the APAC timezones; specifically “What are the biggest challenges to contributing from this part of the world? And what more could be done to help alleviate those challenges?” 

There were some great responses to arise out of this conversation, which you can read in detail here

There was agreement that the advent of dev chat and triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. in APAC timezones have made the feeling of isolation from the core conversations has lessened somewhat which is great to hear.

The regional participants are also really hopeful that having release leadership based in this timezone will be a really positive step forward to increasing the cohort of participants in the region. 

We then discussed steps to help improve participation in the APAC region, these were the areas we covered:

  • @webcommsat advised that the marketing team have an initiative under way to help promote different meetings – so next steps is for a chat to happen to talk about what that might mean for APAC dev chat (and dev chat in general).
  • Making the APAC dev chat a bit more visible by taking and posting notes after the call (we have made a commitment to do this going forward, starting with these notes).
  • We then discussed the timing of the meeting and whether moving the APAC chat to before the Americas/EMEA one would help reduce barriers to entry for APAC participants (opening for discussion below).
  • Changing the language used to describe each dev chat in order to give them equal weight as a means to help increase participation/perceived value.

Requests for Comment

  1. The consensus for the members present was that there would be significant benefit in moving the APAC call forward (earlier) by 24 hours. This would mean:
  • The agenda notes would need to be posted 24 hours earlier than the APAC call to allow both discussions to follow similar agendas
  • There may be an increased need for maintainer teams to add their updates to the agenda post for discussion in the chats as most maintainers won’t be available for the earlier call
  1. Adjusting the language around how we describe the dev chats to give each equal weight – currently we have ‘dev chat’ and ‘APAC dev chat’ let’s discuss what a more equable format might look like… here are a couple of options that were thrown in to the call such as using UTC time to differentiate chats (2000UTC dev chat or 0500UTC dev chat), using regions – America/EMEA Dev Chat and APAC Dev Chat or something else…

What do you think?

Before making such changes it is important to open this up for discussion so that all interested/affected parties might add their thoughts to the conversation, we’d love to hear from you below if you have anything to contribute.

#5-6, #dev-chat, #summary

Dev Chat Meeting Summary – August 19, 2020

@thewebprincess facilitated the chat on this agenda.
Meeting recap by @laurora with @marybaum editing.

Full meeting transcript on Slack

Announcements

This meeting marked the official start of the 5.6 release – run by an all-woman team.

@yvettesonneveld summed it up: “Tonight we’re writing history!”

In another first for WordPress, @webcommsat said the 5.5 Question and Answers for Developers is in its final fact-checking.

Highlighted posts

Upcoming releases

WordPress 5.5.1

@audrasjb will run a 5.5.1 bugs scrub next Monday at 20:00 UTC.

Components check-in and status updates

@johnbillion  reminded the group that if you’re interested in helping maintain a component, whether active or not, feel free to speak up—to current maintainers, project leads or release leads.

AND if you’re a current maintainer who needs to step back for any reason, please feel free to do that at any time. Again, please pingPing The act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test it’s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of “Ping me when the meeting starts.” a release or project lead. 

@jeffpaul flagged that for 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//editor-related items intending to ship in 5.6, it would be helpful to understand what may be needed from the other coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. component teams to ensure we have maintainers / committers / etc. ready to help.

An update on build/test tools from @jorbin: The top priority is #46149 — critical to support PHP8.

From Upgrade/Install, @whyisjake said he’s excited about the core auto-updates coming in #50907 and would love some feedback on getting started.

The 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 team has no firm plans for 5.6, but @johnbillion would like to reboot weekly chats again and carry on with the mini roadmap that started with default 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. values landing in 5.5.

On themes, @williampatton shared that the main goal this release cycle was to help unblock anything that #core-editor hits snags with.

@francina pointed out that the plan for 5.6 calls for a new default theme—ideally, one that starts to showcase 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. editor in template parts outside the_content.

Open floor

5.5.1

@joostdevalk raised 5.5.1 timing, since #50999 has unleashed a heavy support burden on his team.

The group supported a faster 5.5.1 release; there will be 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. scrubs on Friday and Monday, after which the team will make more concrete plans.

See the full discussion here.

Top Comments 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

@francina shared a plugin used on the Community Team blogblog (versus network, site) called ‘Top Comment’. It adds a final comment that recaps all the other comments in a discussion—a handy way to summarize discussions that have been going on a while.

#5-6#5-5-1#dev-chat#summary

#5-5-1, #5-6, #dev-chat

CSS Chat Agenda: 20th August 2020

This is the agenda for the upcoming CSSCSS Cascading Style Sheets. meeting scheduled for Thursday, August 20, 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!

  • CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. CSS triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors.
  • Updates
  • Open floor + CSS Link share

#agenda, #core-css

Editor chat summary: 19th August 2020

This post summarizes the weekly editor chat meeting (agenda here) held on 2020-08-19 14:00 UTC in Slack. Moderated by @get_dave.

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.8.0 release

  • At the time of the meeting it had not been released but Gutenberg 8.8.0 is now available.
  • Release leadRelease Lead The community member ultimately responsible for the Release. @itsjonq joined us and provided his highlights:
    • Full site editing has progressed with updates to Global Styles, the Post 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. suite, and Template management.
    • Initial work has begun on the new 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. Screen – a project that’s part of a wider effort to add more block enabled sections to the WordPress experience.
    • This release also saw important 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) and mobile improvements to user-interfaces like the Toolbar, navigation menus, and Popovers.

Monthly Plan & Key Projects

Navigation screen, Navigation block and Widgets screen

@andraganescu provided the update:

Andrei also point us towards the Navigation screen and Widgets project boards where help for code review, testing and picking up issues is always welcome.

Global Styles & Editor focused APIs

@nosolosw provided the update on his two focuses for the month:

  • Land an initial user-facing tool to set styles globally.
  • Make progress on controlling the block editor, see tracking issue. The idea is to enable themes to control the editor via 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..

For people interested in this area of work, the tracking issue lists specific tasks to help with.

For people getting started, a good first Issue is to migrate core blocks to use the implicit style attribute for colors and/or font-size.

Full Site Editing

@michael-arestad provided the update:

  • An iteration on the multi-entity saving flow is in the works!
  • Several of the post blocks now have icons and descriptions.
  • A mockup for a document-level grid has been proposed.
  • I’m starting in on everything related to the block directory.

@annezazu also reminded us about:

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.

No one was available to provide an update. If anyone would like to provide this async, then please leave an update in the comments.

Task Coordination

Open Floor

Thanks to everyone who attended.

#core-editor, #core-editor-summary, #meeting-notes

Navigation sync core chat notes

On Wednesday Aug 19, 7 AM UTC the weekly core navigation sync chat was held in the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. channel on 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/..

The format followed the same script:

During triage a few issues were removed from the Navigation editor project (not closed) as they are not critical for the Navigation editor’s functionality.

During open floor, @noisysocks shared the link to last week’s demo of the Navigation editor in a hallway hangout in Zoom.

@andraganescu brought up removing the experimental flag for the Navigation editor. Removing the experimental flag of the navigation editor makes it visible by default, without enabling it, if one has 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 running on the website.

After some discussion the consensus was that since the Navigation editor is “architecturally stable” we can show it as an optional screen in the Gutenberg plugin, but it’s not ready yet to replace the current screens.

@noisysocks announced he and @isabel_brison triaged the Widgets editor project board and that there are lots of actionable tasks there! 

Thank you for reading, see you next time on Wednesday Aug 26, 7 AM UTC

#meeting-notes

X-post: External Linking Policy – Doodle for New Approach Discussion via Zoom

X-comment from +make.wordpress.org/docs: Comment on External Linking Policy – Doodle for New Approach Discussion via Zoom

WordPress 5.5.1 Bug Scrubs

The following 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. scrubs have been scheduled on tickets milestoned for 5.5.1, the conversations will take place in #core, and all are welcome to attend and take part in these meetings (requires registration).

As a refresher, here’s a post by @jorbin from the 4.7 release cycle answering questions about bug scrubs.

Reminder that the timeline for 5.5.1 will be determined after these bug scrubs and during the devchat on Wednesday, August 26, 2020 at 20:00 UTC in #core.

#5-5-1, #bug-scrub

What’s new in Gutenberg (August 19)

With the release of WordPress 5.5 (🎉) comes a new release of 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/! Gutenberg 8.8. Contributors have continued to squash bugs, refine experiences, and make progress on several big projects.

Full site editing has progressed with updates to Global Styles, the Post 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. suite, and Template management. The back-compatibility of the new Widget Screen was improved. The Widgets screen is a project that’s part of a wider effort to add more block enabled sections to the WordPress experience.

This release also saw important 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) and mobile improvements to user-interfaces like the Toolbar, navigation menus, and Popovers.

All this and more in the wonderfully jam packed change log below:

8.8.0 🇳🇬

Enhancements

  • Copy: Use “block patterns” strings consistently. (24457)
  • Remove hardcoded color from the Recent Comments block. (24410)
  • Remove hardcoded styles from the Separator block. (24366)
  • Block toolbar: Split switcher from mover and simplify styles. (23971)
  • Use the block label 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. for BlockTitle component. (23847)
  • 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.: Translate all strings inside the Large 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. Button block pattern. (24499)
  • Block Movers: Use a bigger mobile touch target. (23761)
  • Block Movers: Use a bigger visible focus rectangle. (23760)
  • Update the top toolbar buttons color. (24420)
  • Remove editor styles from front-facing stylesheets. (24439)
  • Block Toolbar More Menu: Switch back to the vertical ellipsis icon. (24426)
  • Removes hardcoded body text color from some block patterns. (24424)

New APIs

  • Support the default block classnames in dynamic blocks. (24546)
  • Support the custom classnames hook in dynamic blocks. (24483)
  • Stabilize the accessible Toolbar component and deprecate the old usage. (23316)
  • Add store icon to Icons package. (23867)
  • Allow POST requests in <ServerSideRender>. (21068)

Bug Fixes

  • Fix inserter expecting experimental settings to exist in the context. (24554)
  • Fix Image block caption jumps on Safari. (24540)
  • Fix Media Text block: Always show images on top on mobile. (24468)
  • Hide Preview menu on small viewports. (24537)
  • Fix canInsertBlockType selector returning true for blocks that don’t allow inner blocks. (24514)
  • Fix the huge font size on the editor when using the default font sizes presets. (24492)
  • Fix Cover block: Impossible to reset the minimum height value. (24490)
  • Fix Post preview button only appearing on small screens. (24487)
  • Fix deduplication of style rules for server-side block support flags. (24486)
  • Fix the quick inserter results limit for block variations. (24481)
  • Fix tiny editor preview when using Mobile or Tablet options with metaboxes enabled. (24478)
  • Fix custom gradient picker unable to change predefined gradients with hex colors. (24470)
  • Fixing duplicated wp-block classes in block-list. (24466)
  • 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):
    • Make the inserter behave as a popover. (24429)
    • Fix incorrect aria description in the Block List View. (24533)
    • Add arrow navigation in Preview menu. (24465)
    • Add arrow navigation to Warning dropdown menu. (24333)
    • Add an example to the buttons block to avoid focus loss issue. (24434)
  • Fix rendering non-Latin characters on aligned Cover blocks. (24447)
  • Remove --wp-admin-theme-color reference from frontend styles. (24436)
  • Prevent links from being focusable inside the Disabled component. (24397)
  • Image Editing: Fix alignment of aspect-ratio button. (24343)
  • Fix retrying of post-processing of edited images. (24081)
  • Set error state when there is an upload error in during file upload. (24017)
  • Block Directory: Decode entities in block title & description. (24172)
  • Preview menu: Remove redundant “opens in a new tab” hidden text. (24427)
  • Fix uploading PDFs in the File block. (24318)

Experiments

  • InnerBlocks: Introduce prop to specify render callback for each block. (24232)
  • Navigation:
    • Display children of inner block controllers in the block navigator. (24083)
    • Add font-size support to the the Navigation block. (24531)
  • Template Parts and saving flow:
    • Move the title to the block toolbar. (24450)
    • Fix Template Part renaming error. (24500)
    • Fix Site Title Save Bug. (24302)
  • Post Blocks:
    • Post Tags block: Fix 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. where no tags are rendered. (24082)
    • Post Tags block: Support color, font-size and line-height customization. (24069)
  • Full Site Editing:
    • Load php files only if experiment is enabled. (24182)
  • Global Styles:
    • Consider any user changes to global styles as publishable. (24293)
    • Add support for more style properties in the global context. (24298)
  • Widgets screen:
    • Refactor the widgets screen to rely on dedicated endpoints. (24290)
    • Make the list of widgets excluded from the legacy 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. block extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. via a 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.. (24271)

Documentation

  • Add undocumented global styles blocks & properties. (24421)
  • Remove “experimental” from title of editor filters. (24382)
  • Add instructions for disabling the Block Directory. (24357)
  • Remove duplicate questions in FAQ. (24355)
  • Indicate custom-fields support is required for registering 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.. (24325)
  • Add block directory submission guidelines. (23545)
  • Typos and tweaks: (24511) (24244) (24491) (24361) (24340)
  • Update the “Create a Block” Tutorial. (24545)
  • Getting started: Add a MAMP section. (24241)

Code Quality

  • Refactor embed block to single block with block variations. (24090)
  • Upgrade ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. version to 16.13.1. (21289)
  • Update lodash to 4.17.19. (24401)
  • Register the block attributes server-side for blocks with support flags. (24400)
  • Refactor components as functional components:
  • Remove unnecessary selector from the PostTitle block. (24418)
  • Remove unnecessary ad-hoc class application for dynamic blocks. (24223)

Build Tooling

  • Run wp-env start before PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 unit tests in package scripts. (23797)
  • Upgrade eslint-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-jsdoc to latest version. (24586)
  • Add full parameters for emulateNetworkConditions. (24144)
  • Add an end-to-end regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. test for the “Browse All” inserter button. (24396)

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.

VersionLoading TimeKeyPress Event (typing)
Gutenberg 8.84.56 s25.73 ms
Gutenberg 8.74.79 s27.34 ms
WordPress 5.54.45 s26.93 ms

A big thanks to all the wonderful contributors that helped with this release! 👏

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

Minutes: Core Privacy Meeting 19 August 2020

The Consent 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.:

The Consent API is the oldest of the privacy initiatives currently under active development, not yet merged into CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress..
It was created in response to the following ticketticket Created for both bug reports and feature development on the bug tracker.: https://core.trac.wordpress.org/ticket/44043 (Framework for logging/retrieving a user’s consent state)
The proposed feature pluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins. can be found here: https://wordpress.org/plugins/wp-consent-api/
The code is extremely light-weight (13KB, excluding the readme.txt and the licence).
The Consent API could greatly benefit from a wp_set_cookie(); function in WordPress Core, which would make adoption by 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 and theme developers more likely than the current has_consent(‘type’) approach.
These two items have natural synergies and would do well scoped together.
In its current form, the Consent API does not have any User Interface.
However, it would be more valuable to allow registered users to save their consent (functional, preferences, anonymous statistics, statistics and marketing) more permanently under their profile page for when they are logged in. There could also be settings for whether or not to make the profile visible to search engines, etc.
Logged out users, or users who are not signed up for an account, would not have a UIUI User interface in Core, but instead their UI would be provided via a cookie banner or comprehensive consent management plugin.

The Disclosures Tab:

The Disclosures Tab is intended to aggregate the information collected from individual disclosures.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. files in individual plugins, themes and Core.
Compiling a disclosures.json file for Core would be a significant undertaking, as, among other things, it is intended to disclose any external references (calls to other sites, available APIs, feeds, etc.)
The intention of the tab is to help site owners and admins to understand what information their site collects, where it is stored and where it is sent.
This will help site owners / admins to make more informed privacy-related choices and understand their privacy risk profile.
Any actual “controlling” (the Permissions Tab) is likely more suited as an optional plugin.
The Disclosures tab would require creating a JSON schema and writing a function (first in a plugin and then in core) to validate the schema.
The UI would most likely exist as a new tab under the Settings tab.

Enter the Local AvatarAvatar An avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name. Project:

CNDs have privacy considerations in that, at least in theory, it is possible for the CDN to track users across sites. Some CDNs do use data obtained this way as a source of marketing analytics data. Furthermore, the hashing that is used can be brute-forced, which may lead to unwanted disclosures of someone’s identity.

The Local Avatar Project has tremendous value as a case study in best practices.
Avatars are a highly relatable way to explain complex privacy concepts to users and developers like.
Furthermore, it has tremendous persuasive potential for achieving developer buy-in, as a common refrain includes “But avatars do the same thing!”

The UI for registered users would be located on the user’s profile page.
This UI would allow a registered user to upload an avatar (and could be extended by plugin to allow for more options, like selecting from a pre-set).
The UI for authorized users would be located as a new tab under the Media tab.
The UI for site-level settings would be located where the avatar settings are currently located, as this would most likely be the most intuitive for users.

Vision:

Each of the above projects can be developed in a modal way in order to achieve a cohesive privacy-by-design vision.
This would require distinct, but complimentary education drives for developers and for site owners / admins.

#consent-api, #core-media, #core-privacy, #disclosures-tab, #local-avatar-project, #minutes