Skip to content

1.0 Scope

Jorge Bernal edited this page Oct 15, 2018 · 1 revision

This is the first version that we consider pleasantly usable. We support only the most common types of content, but writing a post using those is as pleasant as doing it with Aztec. When we say pleasant here, it means things work as expected and writing a post is not frustrating.

There are four main areas of focus in this version:

  • Writing flow
  • Editor chrome
  • Supported content
  • Integration in the apps

Writing Flow

This first version is all about getting the writing experience right. Editing a post should be as fluid as it is with Aztec, and the blocks concept and UI should not get in the way of writing.

This is necessarily ambiguous—we can only anticipate the issues we have seen in the past—and more of a guiding principle than a feature list. However, there are some things that we are able to anticipate:

  • Good undo/redo support. Undo/redo should restore the right content and ensure the cursor and scroll positions are correct after the change.
  • Good support for splitting and merging blocks. Pressing return at the end of a paragraph creates a new block; pressing backspace at the beginning merges with the previous paragraph. It gets more complicated with lists and quotes, where one return creates a new paragraph or list item but a second one exits the block.
  • Avoid extra taps. When the user taps into a text block, they start editing right away with the cursor in the position they tapped, even if it’s not the currently selected block.
  • Block transformations is a great Gutenberg feature that we might not fully support in 1.0. However, when pressing return a new placeholder paragraph is created. If the user then decides to insert a different kind of content, they should not need to worry about removing stray placeholders manually.

Editor Chrome

Gutenberg on mobile is more than a list of supported blocks and the components they use. We need a toolbar for the blocks that stays at the bottom on the view and moves with the keyboard. We also need a top bar with the undo options, a preview button, and a way to get out of edit mode. When not editing, we also need to show document options (status, categories,…) and a site picker.

Design mockup for the editor chrome

Editor Chrome

We might be able to skip the block inspector implementation for 1.0, but it still needs more investigation. The image block will need an inspector, but we might implement a simple temporary version just for images.

Supported Content

The first version will support just a few blocks, which should cover the most used types of content 1 in the apps. This includes:

  • Text blocks: heading, paragraph, quote, list, code (*)
  • Media: image
  • Other: separator, more (*), shortcode (assuming it’s as easy as it looks)
  • Embeds: our data is still inconclusive, but we probably won’t support embeds, or have partial support for them (no previews, just a URL).

(*) The code and more blocks are not in the most used list, but were the first implemented as a proof of concept. We don’t expect it to be a big effort to maintain those, but they’re not required to be in 1.0.

Integration in the Apps

The first version will be available in the WordPress apps via an opt-in. There is a lot of existing editor functionality implemented natively that we can leverage: post options, preview, publish confirmation (to be implemented). However we still need to integrate all those native bits into Gutenberg, and others like the media picker, and async media upload and publishing. Gutenberg will also be localized like the rest of the apps.


Footnotes

1: We did some analysis of public posts on WordPress.com that had been published with the mobile apps. These are the most common types of block we would expect (noting that embeds were not properly detected and need further investigation):

Sample size: 1578
core/paragraph 88% (1385)
core/image 62% (974)
core/heading 13% (205)
core/list 8% (123)
core/quote 7% (115)
core/separator 5% (81)
core/embed 4% (61)
core/table 0% (7)
core/preformatted 0% (3)
core/shortcode 0% (1)
core/freeform 0% (1)