Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Edits to references and ensure all are linked.
  • Loading branch information
nerrad committed May 19, 2021
commit 5e8d288478aa2a5ff079e1129cb1fef3c54b0afc
21 changes: 5 additions & 16 deletions docs/explanations/principles.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@


# Gutenberg Principles
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think "Guiding Principles" would be better.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See 1a648ba.


This document has been written so that those contributing to the Gutenberg project can have some understanding of what guides decisions around what is included in the project (or not).
Expand All @@ -11,35 +9,26 @@ When applied, sometimes these principles build on each other much like the idea

## A canvas for expression.

_“Optimize for the user” (Matias - [Gutenberg or the Ship of Theseus](https://matiasventura.com/post/gutenberg-or-the-ship-of-theseus/))_
_“Optimize for the user” (Matías - [Gutenberg or the Ship of Theseus](https://matiasventura.com/post/gutenberg-or-the-ship-of-theseus/))_

The block canvas is the primary interface and brings about the expectation of *direct* manipulation. Blocks can define multiple states, variations, and can mutate. The canvas of the block should:

### Guide users around interacting with the content.

For this, the interface needs to welcome exploration and to be able to teach its affordances intuitively. It should result in experiences producing "aha!" moments when users create their content (see [here for an example](https://twitter.com/colemank83/status/1371846826664591364)).
For this, the interface needs to welcome exploration and to be able to teach its affordances intuitively. It should result in experiences producing empowering "aha!" moments when users interact with it (see [here for an example](https://twitter.com/colemank83/status/1371846826664591364)).

Interactive tools should be contextual when needed, and focus on supporting the user in creating their content - present when needed and getting out of the way when not.

### Uniformity within diversity

Learning the ingredients of the interface happens once, but scales to hundreds of blocks. Users should be able to *rely on muscle memory and learned patterns* as they become more familiar with the interface.


### Accessible
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one feels a bit odd as it's more of a general principle of WordPress at wide and not specific to Gutenberg. If anything, it should build upon the two other axis of "canvas for expression" and "uniform yet diverse" to embrace the fact users interacting with the software have distinct characteristics and preferences for how to use said software.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's also something important missing here which is how the software can help users build better websites that are semantic and more accessible. That is, respect for the viewers as well as the creators.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is, respect for the viewers as well as the creators.

This is definitely something that isn't capture well in the current iteration that should be included ❤️

This one feels a bit odd as it's more of a general principle of WordPress at wide and not specific to Gutenberg. If anything, it should build upon the two other axis of "canvas for expression" and "uniform yet diverse" to embrace the fact users interacting with the software have distinct characteristics and preferences for how to use said software.

While I agree it's a general principle of WordPress, I also think it's important to call out the distinctive nature of accessibility in the context of Gutenberg. I like how you reflect on describing this as software accommodating users with "distinct characteristics and preferences for how to use said software". An example of this is reflected in the numerous entry points people have to insert a block. Is there some specific concern here around the use of the word "accessible" itself here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See f8a44af.


Being accessible is a holistic principle that embraces not only the desire that _everyone can work with Gutenberg interfaces no matter their ability_ but also that the improvements made are _equitable_ and improve the experience for _every_ user. This is a lofty challenge and definitely hard balance to get right - but already there is fruit being born in the improvements that have been made to the user interface over the last few years.

Modern web application development brings its own set of accessibility problems around standards and consistent application between browsers which often requires some unique solutions that might not be apparent on the first attempt. So we acknowledge that accessibility is not something that can be implemented statically but instead is an ongoing part of the interface creation and refinement.


### Empowering

With delightful, consistent, and accessible interfaces we are aiming for empowering users to try and do things that they assumed were beyond their capabilities and reach before. We strive for those “Aha” moments of surprise and wonder as folks discover how they can unleash their creativity.

Example: https://twitter.com/colemank83/status/1371846826664591364


## Curated Extensibility

The use of the word _curated_ expressly refers to implementing extensibility in a way that prioritizes those _using Gutenberg interfaces to create their content_ over developers integrating with the system. As a result, every extensibility interface request is filtered through the question of how it impacts creator workflows.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm having a little bit of trouble parsing this paragraph.

In "using Gutenberg interfaces to create their content", does interfaces refer to UI/user interfaces, or interfaces as a whole, including APIs?

Assuming the prior, maybe "prioritizes those using Gutenberg user interfaces to create their content"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. Fixed in 9b4eade (which also clarifies the usage of interfaces elsewhere in the doc).

Copy link
Member

@getsource getsource May 25, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good; thanks much!

Expand All @@ -57,7 +46,7 @@ Extensibility interfaces in Gutenberg favor:

## Progressive Complexity
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be balanced a bit more with a general seek for "simplicity"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Content wise in the description of the principle, or reflected in the principle statement itself?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one was a bit difficult for me to address. I think in general I understand your feedback to mean we want to avoid the idea of complexity as a starting point for the interactions. I've made a few changes in e7b3960 which I think helps, but it still feels like it could be better expressed.


_“On the Layers of the Onion”_ (Matias - Gutenberg or the Ship of Theseus)
_“On the Layers of the Onion”_ (Matías - [Gutenberg or the Ship of Theseus](https://matiasventura.com/post/gutenberg-or-the-ship-of-theseus/))

There are two perspectives for this principle:

Expand Down Expand Up @@ -88,11 +77,11 @@ This also embraces the promise of the Web where content is replicable in multipl

Imagine a world where content created by Gutenberg can be consumed and read _anywhere_. This is largely why at the heart of the block structure, the format is largely an enhancement on top of HTML.

“Ultimately, choosing HTML means that — as with a painting or a sculpture — the editor’s final artefact is the canonical format of the content, not a byproduct thereof.” (The Language of Gutenberg - Miguel).
“Ultimately, choosing HTML means that — as with a painting or a sculpture — the editor’s final artefact is the canonical format of the content, not a byproduct thereof.” (The Language of Gutenberg](https://lamda.blog/2018/04/22/the-language-of-gutenberg/) - Miguel).

This manifests in letting machines do what machines are good for, and preserve content in a format that is readable to users.

Finally, the principle of ubiquitous and safe adoption is found in the way Gutenberg is being developed _incrementally_. WordPress powers over 40% of the Web and the changes that GB brings cannot happen overnight (Gutenberg or the ship of Theseus - Matías)
Finally, the principle of ubiquitous and safe adoption is found in the way Gutenberg is being developed _incrementally_. WordPress powers over 40% of the Web and the changes that GB brings cannot happen overnight (Matías - [Gutenberg or the Ship of Theseus](https://matiasventura.com/post/gutenberg-or-the-ship-of-theseus/))


## Resources
Expand Down