REST API Chat Summary, Oct 11

This post summarizes 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/. component team chat on Thursday, October 11 (agendaSlack transcript) and the 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. scrub on Tuesday, October 16 (Slack transcript).

Updates on 5.0 priority tickets

As with last week, the meeting worked off of this post listing REST API priority tickets as an agenda. We aim to have all major 5.0-related REST API tickets landed by Thursday, to allow time Friday for final adjustments as we move into the 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. stage.

In Progress

  • Progressively load data through pagination when assembling large collections 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/ dropdowns, to prevent memory errors (gutenberg#6694): @kadamwhite is working on a 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.. (This ticketticket Created for both bug reports and feature development on the bug tracker. does not cover any UIUI User interface changes; those are tracked separately.)
  • Post says updated when it’s a page (#3315): @earnjam has opened a pull request addressing the issue.
  • Autosaves support (#43316): @adamsilverstein is driving, and will also look into gutenberg#6556 related to autosaves.
  • Introduce a controller for searching across post types (#39965): patch is in final review.
  • Improve media titles when creating from filename (#44789): @dryanpress is working on a patch as of Oct 11.
  • Introduce WP_Block_Type, WP_Block_Type_Registry, WP_REST_Block_Renderer_Controller, and WP_REST_Blocks_Controller classes (#45097 and #45098): @desrosj has a patch in progress.
  • Localizing REST API responses: #44758 moved into milestone, support from core contributorsCore Contributors Core contributors are those who have worked on a release of WordPress, by creating the functions or finding and patching bugs. These contributions are done through Trac. https://core.trac.wordpress.org. versed in localization is strongly requested to evaluate #41305. #38218 may be a necessary compromise, though #41305 is the preferred approach given its additional benefits.
  • Saving Metadata fails if value contains slashes (#42069): waiting for final sign-off from @boonebgorges
  • More descriptive REST API error messages (#10492): needs direction on wording. Lowest priority of open issues.

Resolved Tickets

  • PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher notices should be disabled for REST API responses (gutenberg#10476): thank you @earnjam and @danielbachhuber!
  • Theme-supports data is now exposed through the REST API for privileged users at the /wp/v2/themes?status=active endpoint (gutenberg#10518 / #45016): we have also added conditional loading to the Gutenberg classes to prevent conflicts between the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. and 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 controllers.
  • Permalink templates are now exposed on the posts controller (#45017
  • An action is now fired after items are completely inserted/updated (#42864)

A full list of recently completed tickets can be seen in this post.

Punted Tickets

  • Support post locking through the REST API (#44862): The current solution using the existing locking functionality is sufficient for 5.0; more discussion is needed to identify a way to represent this state in a RESTful manner.

Thank you to every contributor who has helped move these tickets forward in such a short period of time. We will have our next weekly meeting tomorrow, October 18 17:00 UTC, and have scheduled additional bug scrubs through the end of the month.

Additional REST API bug scrubs scheduled through October

Meeting notes for the October 11 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/. component chat will be posted by Tuesday, but one item we discussed was @danielbachhuber‘s request to run one additional 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.-scrub meeting each week for the next several weeks.

As noted in the REST API outstanding Gutenberg/5.0 issue list post and the notes from last week’s meeting, we have a number of outstanding tasks that need developer attention, and @danielbachhuber is requesting that developers commit to addressing bugs with a one- to three-day turnaround time after taking an issue. (If this is not possible—and it isn’t, for some of these bigger issues—that is alright; but it helps keep things moving if we check in on that schedule). Adding one additional bug scrub each week lets us evaluate our progress and commitments, and reassign in-flight bugs as contributor availability requires.

Upcoming REST API meetings through the end of October:

The Tuesday bug scrubs have been moved up 1-2 hours from the time of the normal weekly meeting to better accommodate European contributor schedules. We encourage all interested developers to attend any and all of these meetings as you are able, we will be excited to help you find a useful ticketticket Created for both bug reports and feature development on the bug tracker. to move us towards 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/ and 5.0!

Edit: All meetings will be held in the #core-restapi 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!

REST API Chat Summary – October 4

Below is the summary for 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/. meeting on Thursday, October 4 (Slack Transcript).

As announced previously, @danielbachhuber is stepping up to coordinate work on REST API improvements for 5.0 / 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/. Daniel has prepared a running list of Gutenberg-related API tickets in this post, which we used as an agenda for the meeting.

Gutenberg-Related Ticketticket Created for both bug reports and feature development on the bug tracker. Scrub

Blocked Tickets

  • #44862, communicating edit lock via the REST API: @timothyblynjacobs has volunteered to work on a solution. Prior discussion of this functionality dates back to REST API issue 2225.
  •  Gutenberg#8449, TaxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies. 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. box does not respect user’s language (coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. ticket #44758: REST API does not respect user localeLocale A locale is a combination of language and regional dialect. Usually locales correspond to countries, as is the case with Portuguese (Portugal) and Portuguese (Brazil). Other examples of locales include Canadian English and U.S. English.), depends on #41305 for a robust solution. I have posted separately calling for review on the proposed patch for #41305.
  • #43998, permitting unbounded requests when requesting all authors/categories/etc for use e.g. in dropdowns: this should eventually be solved with UIUI User interface/UXUX User experience improvements such as @adamsilverstein‘s PR #7385 but that may be infeasible for 5.0. An alternative to permitting unbounded requests would be to modify the frontend data layer to (invisibly to the consuming component) recursively iterate over paginated data and return a merged response object, yielding the same final client-side response without risking memory errors on the backend, but I have not had bandwidth to propose this. If you’re interested, contact me in 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 issue is shelved for now.
  • #43887, exposing Gutenberg data version in 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. responses: what constitutes a data version depends on the final merged form of Gutenberg so this is deferred for now and will be revisited later in the 5.0 cycle.

“Next” Tickets

  • #45016, exposing theme_supports data via the REST API: @desrosj has volunteered to pick this up to implement a bare-bones theme controller exposing the information Gutenberg needs. Gutenberg#6539 may need to be addressed in tandem.
  • Gutenberg#3315, page says “post updated” when it’s a page: we discussed adding a labels property to the /wp/v2/types response objects, but a PR is open on the Gutenberg repo and current discussion is directed there.
  • Gutenberg#8757, support default title and content when creating new posts: @mnelson4 has proposed a PR.
  • #43316, supporting autosaves: we would like to land this in the next couple days, if anybody wants to work on a final 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..
  • All participants were encouraged to review other tickets from the list in Daniel’s post, and chime in on any tickets which have a patch and are noted as ready-to-commit, to ensure any outstanding issues are surfaced before patches land.

Other Issues

  • #39953 is provisionally good to land, but has not been merged yet pending review of other milestoned REST API tickets and a call from @pento or other 5.0 shot-caller on whether it should be included.

If you have bandwidth to assist with REST API development over the coming weeks, please reach out to myself and @danielbachhuber and we will work with you to find a good issue for you to help with! If you are interested in a ticket listed above and your name is not the name of the person I mentioned who is working on it, that’s OK! Reach out to them and put your heads together, and we’ll be able to land these all the faster. Any and all assistance is welcome, and if you don’t have time to prepare a patch yourself, we always need help testing and reviewing existing patches.

Agenda for October 11 Chat

The next REST API meeting will be this Thursday, October 11, 2018 at 17:00 UTC in the #core-restapi slack channel. We will be checking in on how the tickets above have progressed, and reviewing any new priority issues. See you there!

Call for Testing: Lazily Evaluate Translation Strings

While attempting to localize 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/. responses (#44758), 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/ contributors identified that there was an order-of-operations issue preventing localeLocale A locale is a combination of language and regional dialect. Usually locales correspond to countries, as is the case with Portuguese (Portugal) and Portuguese (Brazil). Other examples of locales include Canadian English and U.S. English. information from being properly passed in via the REST API. @schlessera had previously worked on a performance optimization 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. to lazily translate strings on demand, which was found to also permit locale information to be set before computing the strings, unblocking the Gutenberg issue.

To get this patch landed quickly, we request assistance from interested contributors to test and validate the patch on ticket #41305.

There has been some recent discussion about additional performance and memory usage optimizations, but I believe the solution proposed in the latest patches is close to being satisfactory. It just needs a little further testing and validation from committers and contributors familiar with translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. handling and PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher performance before we can comfortably land the patch.

We request input by the end of this working week, if possible, to help remove the blockerblocker A bug which is so severe that it blocks a release. to further Gutenberg localization work. Thank you!

REST API chat summary: August 9

This post summarizes 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/. component team chat from August 9 (agenda, Slack archive).

5.0 Priorities

The REST API team’s primary goal for the next major releasemajor release A release, identified by the first two numbers (3.6), which is the focus of a full release cycle and feature development. WordPress uses decimaling count for major release versions, so 2.8, 2.9, 3.0, and 3.1 are sequential and comparable in scope. is to support 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/ team. There are still a number of REST API-related issues open in the Gutenberg merge proposal milestone; we always welcome assistance in getting these taken care of.

Issues that were raised as needing eyes and opinions:

  • #44758 (handling user’s localeLocale A locale is a combination of language and regional dialect. Usually locales correspond to countries, as is the case with Portuguese (Portugal) and Portuguese (Brazil). Other examples of locales include Canadian English and U.S. English. in REST API responses)
  • #39953 (handling dates on draft posts)
  • gutenberg#8683 and gutenberg#2457 (supporting Gutenberg use with custom controllers and REST routes outside of the wp/v2 namespace)

Outside of Gutenberg, the two major areas of development we aim to tackle are

  • further improvements to the 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.’s support for 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.,
  • and authentication.

Meta Handling

Following the register_meta improvements in 4.9.8, we wish to continue improving the state of meta handling and registration within the REST API.

  • @flixos90 will be re-opening the discussion around how to register complex meta values (e.g. permitting associative arrays instead of just integers, strings and the like). See #43392.
  • #43941 (support default values for registered meta) has clear potential benefits to users and will also be prioritized.
  • @spacedmonkey and others are driving additional tickets which could benefit meta handling, including #44387 & #44238.

Authentication

We aim to release a tested version of the OAuth 2.0 pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party to the plugin repository by the end of the year. This will greatly assist application developers who wish to integrate their WordPress site with external applications. We are also interested in pursuing a basic auth solution within coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. (see discussion in #42790).

As @rmccue is currently unavailable to lead development in this area, we are opening a call for a lead contributor to the REST API authentication plugins. We need somebody to own the vision for how external applications should authenticate with WordPress.

Agenda for today’s meeting

The REST API team will be meeting shortly (now, in fact…) in #core-restapi for our regular weekly meeting at 2018-08-16T17:00 UTC. As always, if you have a REST API related ticketticket Created for both bug reports and feature development on the bug tracker. you would like to bring to the component team’s attention, please join us or leave a note in the #core-restapi channel. Hope to see you all later today!

REST API meeting agenda: August 9

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

This week, the agenda for our scheduled REST 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/. component meeting today (2018-08-09 17:00 UTC) is:

  • register_meta: discuss and prioritize future enhancements
  • Gutenberg: call for volunteers to assist with priority tickets
  • 5.0: Discuss what our component priorities should be leading up to 5.0
  • Open floor / 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. triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors.

As always, if you have a REST API related ticketticket Created for both bug reports and feature development on the bug tracker. you would like to bring to the component team’s attention, please join us or leave a note in the #core-restapi channel. Hope to see you all later today!

REST API Meeting Summary: May 10

This post summarizes 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/. component team meeting from May 10 in the #core-restapi channel.

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

Following up on this blog post outlining priority REST API issues affecting Gutenberg, we discussed ongoing work to address these questions. If you’re interested in helping with these projects, review the linked blogblog (versus network, site) post and tickets in the Gutenberg “Merge Proposal: REST API” milestone; all assistance is welcome!

register_meta improvements

The remainder of the meeting was focused on ongoing discussion about upcoming changes to register_meta. Per the summary posted last week, we are introducing the ability to limit 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. registration to a specific “object subtype” (e.g. specify meta for a single post type, rather than forcing registration for all post types equally). We will also be introducing wrapper functions such as register_post_meta() to encourage use of the new subtype argument. See ticketticket Created for both bug reports and feature development on the bug tracker. #38323 for the latest 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..

The REST API team requests review from committers and any developers with prior history around meta. There’s some great discussion going on but these changes will have a strong impact on how we do data-modeling in the REST API, so we want to make sure that all interested parties are involved. See in particular this comment on tracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. for a summary of the latest patch, and some remaining open questions:

  • Meta-registration wrapper functions are being introduced for term and post object subtypes; should we introduce wrapper functions for comment and user meta objects, which do not currently support the concept of object subtypes?
  • Are “object type” and “object subtype” the best names for these parameters? Are they good enough?

Please check out the ticket (#38323) for further discussion.

REST API Meeting Summary: April 26

This post summarizes 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/. component team meeting from April 26 in #core-restapi (Slack archive)

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

This meeting focused on reviewing the list of key architectural questions @danielbachhuber posted on the 23rd which need to be solved to support work on Gutenberg. Meeting attendees divided up the priority issues, and we will regroup next early next week to measure progress.

Less directly relating to to Gutenberg, @timothyblynjacobs and @schlessera are pursuing performance optimizations around schema and args generation.

May 3rd Meeting Agenda

Next week’s meeting on Thursday, May 3rd, 2018 at 17:00 UTC will focus on discussing register_meta() improvements, as detailed in @flixos90‘s post.

Please read that post and review the ticketticket Created for both bug reports and feature development on the bug tracker. if you have an interest in metadata and REST API data modeling!

Updated REST API Team Meeting Time

After last week's 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/. meeting we are updating our standard meeting time to occur at 17:00 UTC on Thursdays (17:00 UTC on March 8 this week), to better accommodate the schedules of the regular participants.

This week we will likely continue or revisit the ongoing conversation around handling autosaves, then review open 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/-related 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. tickets. If you have a ticketticket Created for both bug reports and feature development on the bug tracker. you want prioritized or want to know where help is needed, we hope to see you in #core-restapi tomorrow!

Updated REST API meeting time

As with the other team meetings of late, this week brings a new time for 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’s weekly meeting time! In light of the difficulty coordinating Asia/Pacific and US time zones we will be switching a bit later to 22:00 UTC on Wednesdays (22:00 UTC on November 15 this week), immediately following the weekly coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. dev chat.

Please note that this week’s meeting is liable to be light, as we encourage everyone to participate and dev chat and to pay attention to the planned 4.9 release! We’ll be meeting in full force again post-release next week to discuss plans for the next development cycle.