Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename "auto inserting blocks" to "block hooks" #54147

Merged
merged 37 commits into from
Sep 6, 2023

Conversation

ockham
Copy link
Contributor

@ockham ockham commented Sep 4, 2023

What?

Rename "auto inserting blocks" to "block hooks".

Additionally, this PR contains two minor, unrelated changes:

Why?

See #53987 (comment):

I've seen anecdotal feedback that autoInsert is not the clearest of descriptions. I'd like to propose renaming to the more familiar hooks terminology—and "block hooks" in more general terms—to help folks understand the mechanics and purpose more rapidly.

How?

Replacing strings, of course. Furthermore, by hopefully picking the right replacements for different nouns and verbs previously used for auto-inserting blocks with their block hook counterpart.

For one, while hooks is a familiar concept in WordPress, it's not really used in Core's functions names (we have add_filter and add_action but not add_hook); we might want to consider this for our block hook related function names.

For example, should gutenberg_register_auto_inserted_block become gutenberg_add_block_hook? That seems misleading, like it would actually add the block hook -- i.e. the location where it is inserted -- rather than the block. So maybe just gutenberg_add_block? That will become add_block_hook in Core 😕 I ended up using gutenberg_register_hooked_block in this case.

Or: in block.json, should the field be called blockHooks or just hooks -- since implicitly, block.json is always about blocks?

Testing Instructions

Note that you have to re-enable the experiment, as its name has changed as well!

You can use v0.3.1 of the Like Button block plugin for testing (it's been updated to use __experimentalBlockHooks instead of __experimentalAutoInsert).

Verify that auto-inserting blocks block hooks work as before.

@ockham ockham added [Feature] Block API API that allows to express the block paradigm. [Type] Experimental Experimental feature or API. labels Sep 4, 2023
@ockham ockham self-assigned this Sep 4, 2023
@ockham ockham mentioned this pull request Sep 4, 2023
19 tasks
@github-actions
Copy link

github-actions bot commented Sep 4, 2023

This pull request has changed or added PHP files. Please confirm whether these changes need to be synced to WordPress Core, and therefore featured in the next release of WordPress.

If so, it is recommended to create a new Trac ticket and submit a pull request to the WordPress Core Github repository soon after this pull request is merged.

If you're unsure, you can always ask for help in the #core-editor channel in WordPress Slack.

Thank you! ❤️

View changed files
❔ lib/compat/wordpress-6.3/rest-api.php
❔ lib/experimental/class-gutenberg-rest-block-patterns-controller.php
❔ lib/experimental/editor-settings.php
❔ lib/experimental/rest-api.php
❔ lib/experiments-page.php
❔ lib/load.php
❔ lib/experimental/block-hooks.php

@github-actions
Copy link

github-actions bot commented Sep 4, 2023

Size Change: -31 B (0%)

Total Size: 1.52 MB

Filename Size Change
build/block-editor/index.min.js 215 kB -12 B (0%)
build/block-editor/style-rtl.css 15 kB -10 B (0%)
build/block-editor/style.css 15 kB -8 B (0%)
build/blocks/index.min.js 51.4 kB -1 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 955 B
build/annotations/index.min.js 2.69 kB
build/api-fetch/index.min.js 2.28 kB
build/autop/index.min.js 2.1 kB
build/blob/index.min.js 451 B
build/block-directory/index.min.js 7.01 kB
build/block-directory/style-rtl.css 1.02 kB
build/block-directory/style.css 1.02 kB
build/block-editor/content-rtl.css 4.25 kB
build/block-editor/content.css 4.24 kB
build/block-editor/default-editor-styles-rtl.css 381 B
build/block-editor/default-editor-styles.css 381 B
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 126 B
build/block-library/blocks/audio/theme.css 126 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/block/editor-rtl.css 305 B
build/block-library/blocks/block/editor.css 305 B
build/block-library/blocks/button/editor-rtl.css 584 B
build/block-library/blocks/button/editor.css 582 B
build/block-library/blocks/button/style-rtl.css 629 B
build/block-library/blocks/button/style.css 628 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 113 B
build/block-library/blocks/categories/editor.css 112 B
build/block-library/blocks/categories/style-rtl.css 124 B
build/block-library/blocks/categories/style.css 124 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 421 B
build/block-library/blocks/columns/style.css 421 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 199 B
build/block-library/blocks/comment-template/style.css 198 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 647 B
build/block-library/blocks/cover/editor.css 650 B
build/block-library/blocks/cover/style-rtl.css 1.63 kB
build/block-library/blocks/cover/style.css 1.62 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 98 B
build/block-library/blocks/details/style.css 98 B
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 126 B
build/block-library/blocks/embed/theme.css 126 B
build/block-library/blocks/file/editor-rtl.css 316 B
build/block-library/blocks/file/editor.css 316 B
build/block-library/blocks/file/style-rtl.css 280 B
build/block-library/blocks/file/style.css 281 B
build/block-library/blocks/file/view-interactivity.min.js 317 B
build/block-library/blocks/file/view.min.js 375 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 B
build/block-library/blocks/freeform/editor-rtl.css 2.61 kB
build/block-library/blocks/freeform/editor.css 2.61 kB
build/block-library/blocks/gallery/editor-rtl.css 947 B
build/block-library/blocks/gallery/editor.css 952 B
build/block-library/blocks/gallery/style-rtl.css 1.53 kB
build/block-library/blocks/gallery/style.css 1.53 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 654 B
build/block-library/blocks/group/editor.css 654 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 336 B
build/block-library/blocks/html/editor.css 337 B
build/block-library/blocks/image/editor-rtl.css 834 B
build/block-library/blocks/image/editor.css 833 B
build/block-library/blocks/image/style-rtl.css 1.42 kB
build/block-library/blocks/image/style.css 1.41 kB
build/block-library/blocks/image/theme-rtl.css 126 B
build/block-library/blocks/image/theme.css 126 B
build/block-library/blocks/image/view-interactivity.min.js 1.83 kB
build/block-library/blocks/latest-comments/style-rtl.css 357 B
build/block-library/blocks/latest-comments/style.css 357 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 478 B
build/block-library/blocks/latest-posts/style.css 478 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 505 B
build/block-library/blocks/media-text/style.css 503 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 712 B
build/block-library/blocks/navigation-link/editor.css 711 B
build/block-library/blocks/navigation-link/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 296 B
build/block-library/blocks/navigation-submenu/editor.css 295 B
build/block-library/blocks/navigation/editor-rtl.css 2.26 kB
build/block-library/blocks/navigation/editor.css 2.26 kB
build/block-library/blocks/navigation/style-rtl.css 2.23 kB
build/block-library/blocks/navigation/style.css 2.22 kB
build/block-library/blocks/navigation/view-interactivity.min.js 988 B
build/block-library/blocks/navigation/view-modal.min.js 2.85 kB
build/block-library/blocks/navigation/view.min.js 469 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 401 B
build/block-library/blocks/page-list/editor.css 401 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 235 B
build/block-library/blocks/paragraph/editor.css 235 B
build/block-library/blocks/paragraph/style-rtl.css 335 B
build/block-library/blocks/paragraph/style.css 335 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 508 B
build/block-library/blocks/post-comments-form/style.css 508 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 588 B
build/block-library/blocks/post-featured-image/editor.css 586 B
build/block-library/blocks/post-featured-image/style-rtl.css 319 B
build/block-library/blocks/post-featured-image/style.css 319 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 314 B
build/block-library/blocks/post-template/style.css 314 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 69 B
build/block-library/blocks/post-time-to-read/style.css 69 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 335 B
build/block-library/blocks/pullquote/style.css 335 B
build/block-library/blocks/pullquote/theme-rtl.css 168 B
build/block-library/blocks/pullquote/theme.css 168 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 302 B
build/block-library/blocks/query-pagination/style.css 299 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 450 B
build/block-library/blocks/query/editor.css 449 B
build/block-library/blocks/query/style-rtl.css 370 B
build/block-library/blocks/query/style.css 368 B
build/block-library/blocks/query/view.min.js 559 B
build/block-library/blocks/quote/style-rtl.css 222 B
build/block-library/blocks/quote/style.css 222 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 149 B
build/block-library/blocks/rss/editor.css 149 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 178 B
build/block-library/blocks/search/editor.css 178 B
build/block-library/blocks/search/style-rtl.css 607 B
build/block-library/blocks/search/style.css 607 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/search/view.min.js 631 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 234 B
build/block-library/blocks/separator/style.css 234 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 323 B
build/block-library/blocks/shortcode/editor.css 323 B
build/block-library/blocks/site-logo/editor-rtl.css 754 B
build/block-library/blocks/site-logo/editor.css 754 B
build/block-library/blocks/site-logo/style-rtl.css 204 B
build/block-library/blocks/site-logo/style.css 204 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 B
build/block-library/blocks/social-links/editor-rtl.css 682 B
build/block-library/blocks/social-links/editor.css 681 B
build/block-library/blocks/social-links/style-rtl.css 1.44 kB
build/block-library/blocks/social-links/style.css 1.43 kB
build/block-library/blocks/spacer/editor-rtl.css 348 B
build/block-library/blocks/spacer/editor.css 348 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 432 B
build/block-library/blocks/table/editor.css 432 B
build/block-library/blocks/table/style-rtl.css 639 B
build/block-library/blocks/table/style.css 639 B
build/block-library/blocks/table/theme-rtl.css 146 B
build/block-library/blocks/table/theme.css 146 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 403 B
build/block-library/blocks/template-part/editor.css 403 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/term-description/style-rtl.css 111 B
build/block-library/blocks/term-description/style.css 111 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/editor-rtl.css 552 B
build/block-library/blocks/video/editor.css 555 B
build/block-library/blocks/video/style-rtl.css 185 B
build/block-library/blocks/video/style.css 185 B
build/block-library/blocks/video/theme-rtl.css 126 B
build/block-library/blocks/video/theme.css 126 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.1 kB
build/block-library/common.css 1.1 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 12.2 kB
build/block-library/editor.css 12.1 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 203 kB
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 13.8 kB
build/block-library/style.css 13.8 kB
build/block-library/theme-rtl.css 688 B
build/block-library/theme.css 693 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/commands/index.min.js 15.5 kB
build/commands/style-rtl.css 932 B
build/commands/style.css 929 B
build/components/index.min.js 247 kB
build/components/style-rtl.css 11.8 kB
build/components/style.css 11.8 kB
build/compose/index.min.js 12.1 kB
build/core-commands/index.min.js 2.6 kB
build/core-data/index.min.js 16.8 kB
build/customize-widgets/index.min.js 12 kB
build/customize-widgets/style-rtl.css 1.46 kB
build/customize-widgets/style.css 1.45 kB
build/data-controls/index.min.js 640 B
build/data/index.min.js 8.38 kB
build/date/index.min.js 17.8 kB
build/deprecated/index.min.js 451 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.64 kB
build/edit-post/classic-rtl.css 544 B
build/edit-post/classic.css 545 B
build/edit-post/index.min.js 35.3 kB
build/edit-post/style-rtl.css 7.62 kB
build/edit-post/style.css 7.62 kB
build/edit-site/index.min.js 90.8 kB
build/edit-site/style-rtl.css 13.2 kB
build/edit-site/style.css 13.2 kB
build/edit-widgets/index.min.js 16.9 kB
build/edit-widgets/style-rtl.css 4.52 kB
build/edit-widgets/style.css 4.52 kB
build/editor/index.min.js 45.5 kB
build/editor/style-rtl.css 3.53 kB
build/editor/style.css 3.52 kB
build/element/index.min.js 4.82 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 7.73 kB
build/format-library/style-rtl.css 554 B
build/format-library/style.css 553 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 448 B
build/i18n/index.min.js 3.58 kB
build/interactivity/index.min.js 11.2 kB
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.72 kB
build/keycodes/index.min.js 1.87 kB
build/list-reusable-blocks/index.min.js 2.2 kB
build/list-reusable-blocks/style-rtl.css 836 B
build/list-reusable-blocks/style.css 836 B
build/media-utils/index.min.js 2.9 kB
build/notices/index.min.js 948 B
build/nux/index.min.js 1.99 kB
build/nux/style-rtl.css 735 B
build/nux/style.css 732 B
build/patterns/index.min.js 2.71 kB
build/patterns/style-rtl.css 240 B
build/patterns/style.css 240 B
build/plugins/index.min.js 1.79 kB
build/preferences-persistence/index.min.js 1.84 kB
build/preferences/index.min.js 1.24 kB
build/primitives/index.min.js 943 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 958 B
build/react-i18n/index.min.js 615 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/index.min.js 2.7 kB
build/reusable-blocks/style-rtl.css 243 B
build/reusable-blocks/style.css 243 B
build/rich-text/index.min.js 11 kB
build/router/index.min.js 1.78 kB
build/server-side-render/index.min.js 1.94 kB
build/shortcode/index.min.js 1.39 kB
build/style-engine/index.min.js 1.85 kB
build/sync/index.min.js 53.8 kB
build/token-list/index.min.js 582 B
build/url/index.min.js 3.73 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.8 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 958 B
build/warning/index.min.js 249 B
build/widgets/index.min.js 7.16 kB
build/widgets/style-rtl.css 1.15 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.02 kB

compressed-size-action

@ockham ockham force-pushed the rename/auto-inserting-blocks-to-block-hooks branch from 83f4bd3 to 2e4749f Compare September 4, 2023 12:42
@github-actions
Copy link

github-actions bot commented Sep 4, 2023

Flaky tests detected in ca5331b.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/6097680830
📝 Reported issues:

@gziolo
Copy link
Member

gziolo commented Sep 4, 2023

I agree there are some things to consider with the revised name would be whether it should be blockHooks or just hooks in block.json. I'm more in favor of hooks if is won't be too confusing. The other aspect is how we convey the same meaning with a more general name:

Before:

"__experimentalAutoInsert": {
	"core/comment-template": "lastChild"
}

After:

"hooks": {
	"core/comment-template": "lastChild"
}

Would it be better to go with something more detailed and should we make the hook type the key? Example:

"hooks": {
	"autoInsertLastChild": "core/comment-template"
}

Other than that, I think this PR isn't complex so we can always split the decision process into two steps as soon as we agree on the UI aspect, and cover the rest in a follow-up.

@ockham
Copy link
Contributor Author

ockham commented Sep 4, 2023

Would it be better to go with something more detailed and should we make the hook type the key? Example:

"hooks": {
	"autoInsertLastChild": "core/comment-template"
}

I considered something like this when first working on #51449 but decided against it. The main reason was that I thought it's possible (and not even entirely implausible) for a block to be auto-inserted next to various different blocks; e.g. a Like block as a Comment Template's last block, and after Post Content:

"__experimentalAutoInsert": {
	"core/comment-template": "lastChild",
	"core/post-content": "after"

}

Now we could of course achieve the same with the key and value flipped, if we allow arrays as values:

"__experimentalAutoInsert": {
	"lastChild": "core/comment-template",
	"after": [ "core/post-content", "core/other-block" ]

}

... but that's more complex, so I thought why bother 😬


Note that the opposite scenario -- auto-inserting a block in various different relative positions next to the same block -- seems unlikely enough that I don't think we'll need to consider it:

"__experimentalAutoInsert": {
	"core/post-content": [ "before", "after" ]
}

array(
'schema' => array(
'description' => __( 'Block types that may be automatically inserted near this block and the associated relative position where they are inserted.', 'gutenberg' ),
'description' => __( 'This block is automatically inserted near any occurence of the block types used as keys of this map, into a relative position given by the corresponding value.', 'gutenberg' ),
Copy link
Contributor Author

@ockham ockham Sep 4, 2023

Choose a reason for hiding this comment

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

See #52969 (comment):

BTW while working on #54147, I discovered that my original description was inaccurate [...]: The field isn't for block types that are automatically inserted next to this block, but the other way around: we're inserting this block next to those block types 😬

I'll update, probably as part of #54147.

cc/ @dmsnell for wording 😊

@ockham ockham marked this pull request as ready for review September 4, 2023 16:50
@ockham ockham requested review from gziolo and ndiego September 4, 2023 16:50
*
* @package gutenberg
*/

/**
* Return a function that auto-inserts a block next to a given "anchor" block.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Note that the two helper methods that used to be located at the top of the file were moved further down.

@dmsnell
Copy link
Member

dmsnell commented Sep 4, 2023

I'm confused by the term "block hooks" as it has lost its specific meaning, which is inserting blocks in relation to others. I understand some relationship to WordPress hooks, but WordPress hooks are also "fire and forget" in that they are more about running code as an announcement of activity. If anything, auto-inserting blocks is closer in semantic to filters since we're discussing modifying the content passed into the filter.

@ockham you had some use of "anchor" that I think could be a clue to a more descriptive name.

Using "block hooks" seems so undefined to me, and the kind of thing we could easily add later for more generic purposes than auto-inserting them. Can we find something that links back to familiar terminology without matching an overly-generic name with an over-specific behavior?

  • block anchor points
  • phantom blocks
  • related blocks
  • implied blocks
  • implicit blocks
  • block attachments (attachment points)
  • block snapping
  • auxiliary blocks

@gziolo
Copy link
Member

gziolo commented Sep 5, 2023

Would it be better to go with something more detailed and should we make the hook type the key? Example:

"hooks": {
	"autoInsertLastChild": "core/comment-template"
}

I should clarify that better. My only concern was that hooks is a very general term, and by using it with a quite specific auto-inserting feature, we would limit options for future expansion. What I was wondering about could be represented also with the following examples:

"insertHooks": {
	"core/comment-template": "lastChild"
}

or

"hooks": {
	"insert": {
		"core/comment-template": "lastChild"
	}
}

I didn't refer to how the connection between blocks and the insertion place was shaped.

@ockham
Copy link
Contributor Author

ockham commented Sep 5, 2023

I should clarify that better. My only concern was that hooks is a very general term, and by using it with a quite specific auto-inserting feature, we would limit options for future expansion. What I was wondering about could be represented also with the following examples:

"insertHooks": {
	"core/comment-template": "lastChild"
}

or

"hooks": {
	"insert": {
		"core/comment-template": "lastChild"
	}
}

I didn't refer to how the connection between blocks and the insertion place was shaped.

Ah, gotcha! My apologies, I was misreading you.

I see now what you mean. While I think it's a valid concern, I'm a bit worried about YAGNI: I'd rather not introduce e.g. a nested hooks: { insert: {...} } field when it's not clear if we're ever going to need anything else inside hooks (or -- maybe worse -- people might shoehorn another feature into hooks "because it's already there"). For this scenario, I'd go as far as to say if we end up needing something like that after all, it's probably fine to bump the API version.

A similar argument applies to a "flat" insertHooks field -- we'd kind of suggest that there will be someOtherKindOfHooks someday -- plus it feels a bit random if we don't call them "insert hooks" anywhere else in our docs and code 😅

<InspectorControls>
<PanelBody
className="block-editor-hooks__block-hooks"
title={ __( 'Plugins' ) }
Copy link
Member

Choose a reason for hiding this comment

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

Should it be renamed to "Block Hooks"?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think I'd leave it as is. "Plugins" was originally suggested as the name of this panel when the feature was still called "Auto-inserting Blocks", so arguably, we have precedent that the panel name is disconnected from the feature's name. My understanding is that "Auto-inserting Blocks" or "Block Hooks" is developer-oriented terminology, which we don't want to necessarily burden the user with; for them, it's enough to know that, "Hey, there's this plugin that would like to insert a block here."

@ockham
Copy link
Contributor Author

ockham commented Sep 5, 2023

@ndiego Can I ask you to look this over (from a documentation POV)? 🙌 (Plus native language background and all 😬 )
There's a few questions in the PR desc and in GH comments I left; would be curious to hear your thoughts on those 😊

'gutenberg-auto-inserting-blocks',
__( 'Auto-inserting blocks', 'gutenberg' ),
'gutenberg-block-hooks',
__( 'Block hooks', 'gutenberg' ),
Copy link
Member

Choose a reason for hiding this comment

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

An important note: remember to enable the experiment again before testing these changes. It took me a while to realize that.

@ockham
Copy link
Contributor Author

ockham commented Sep 5, 2023

@nerrad In case you'd also like to weigh in on nomenclature 😊

For context, this is what prompted this change:

I've seen anecdotal feedback that autoInsert is not the clearest of descriptions. I'd like to propose renaming to the more familiar hooks terminology—and "block hooks" in more general terms—to help folks understand the mechanics and purpose more rapidly.

Copy link
Member

@gziolo gziolo left a comment

Choose a reason for hiding this comment

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

I approve this PR, assuming "block hooks" is the final term. I like the changes applied to code occurrences of the old name in the variable or function names and to code comments that received a bit of clarification as part of the process. I can confirm that everything works as expected when you follow the testing instructions in the PR description.

@ockham
Copy link
Contributor Author

ockham commented Sep 5, 2023

I'm confused by the term "block hooks" as it has lost its specific meaning, which is inserting blocks in relation to others. I understand some relationship to WordPress hooks, but WordPress hooks are also "fire and forget" in that they are more about running code as an announcement of activity. If anything, auto-inserting blocks is closer in semantic to filters since we're discussing modifying the content passed into the filter.

Not totally sure I follow/agree 100% 😅 The most canonical sources I've seen seem to define hooks as the union of actions (that's what you meant with "fire and forget"/announcement of activity?) and filters:

There are two types of hooks: Actions and Filters.

I agree however that auto-inserting blocks are closer in spirit to filters than actions (and thus, than their union). Still, they're dissimilar enough from filters to warrant different nomenclature; and since "hooks" is already used to denote the set of existing extension mechanisms, it might be okay to re-use them here. I guess my mental model would be that per their introduction, block hooks extend (heh) the set of extensions mechanisms:

There are three types of hooks: Actions, Filters, and Block Hooks.

@ockham you had some use of "anchor" that I think could be a clue to a more descriptive name.

Yeah, that one came rather naturally when I was looking for a way to describe the relevant function arg in some PHPDoc. I have admittedly been struggling a bit with the fact that I haven't been able to reconcile that name with "block hooks" -- I continue to call the function arguments "anchor blocks", since "block hook" doesn't quite seem to work there. The way I've been thinking about it is that if anything, a block hook is an insertion point defined by an anchor block plus a relative position; I've actually added one sentence to that effect as part of this PR.

Using "block hooks" seems so undefined to me, and the kind of thing we could easily add later for more generic purposes than auto-inserting them. Can we find something that links back to familiar terminology without matching an overly-generic name with an over-specific behavior?

  • block anchor points
  • phantom blocks
  • related blocks
  • implied blocks
  • implicit blocks
  • block attachments (attachment points)
  • block snapping
  • auxiliary blocks

I like "block anchor points" (which is probably no surprise since it aligns with what I landed on earlier 😅 ), and also "implied/implicit blocks" (though I'm not quite sure they express strongly enough that these blocks are actually rendered and present in the editor 🤔 The others are a bit too vague IMO or have too much potential to be confused with other concepts. Based on what I wrote above, I'll throw "block insertion points" in the mix.

On the note of naming things overly generic when they have overly specific behavior: I get that concern (and have voiced a variant thereof in early discussions on the renaming), but I do think that this mechanism will indeed be one of the more generic ways to extend a block theme, so I'm not that worried that its behavior is that specific.

Anyway: The main reason for this PR was to get rid of the "auto-inserting" moniker which doesn't seem to have resonated with people (maybe it sends the vibe that some blocks are forcefully inserted, and they can't do anything about it?), and to do so in time for GB 16.6 (to be released tomorrow) so that there can be some user testing of the feature before the WP 6.4 Feature Freeze (in three weeks from now). Since the name was suggested by Matías, I'm inclined to land the PR; I believe that the planned Call for Testing could also serve as a testbed for the name of the feature, and since we still have the __experimental prefix, we'll still be able to make some tweaks before GB 16.7/WP 6.4.

I really appreciate your thoughts and suggestions ❤️ I'm mostly trying to bridge the gap between some urgency for changing the name in time for wider testing, and wider discussion. Maybe we can explicitly ask users how they like the name and provide some alternative suggestions as part of the Call for Testing? cc/ @annezazu

@ockham ockham added the Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) label Sep 5, 2023
@ockham ockham force-pushed the rename/auto-inserting-blocks-to-block-hooks branch from 5dafcb3 to ca5331b Compare September 6, 2023 13:20
@mtias
Copy link
Member

mtias commented Sep 6, 2023

Thanks fro the feedback @nerrad—naming things remains one of the most challenging parts of API design :) Hooks is still a familiar term in WP parlance to signify "attach to" and it still feels adequate beyond WP. It somehow resembles the little hooks lego pieces have to combine with each other (I believe they call them studs). There might be a better name we can settle on during testing, but I want to avoid shipping with auto-insert for the initial round.

@ockham
Copy link
Contributor Author

ockham commented Sep 6, 2023

Okay, thanks all for weighing in! Going to merge this so it'll make it into GB 16.6, as originally planned 😊

@ockham ockham merged commit 3fb1400 into trunk Sep 6, 2023
50 checks passed
@ockham ockham deleted the rename/auto-inserting-blocks-to-block-hooks branch September 6, 2023 14:01
@github-actions github-actions bot added this to the Gutenberg 16.7 milestone Sep 6, 2023
ockham added a commit that referenced this pull request Sep 6, 2023
See #53987 (comment):

> I've seen anecdotal feedback that `autoInsert` is not the clearest of descriptions. I'd like to propose renaming to the more familiar `hooks` terminology—and "block hooks" in more general terms—to help folks understand the mechanics and purpose more rapidly.
@ockham ockham modified the milestones: Gutenberg 16.7, Gutenberg 16.6 Sep 6, 2023
@ockham
Copy link
Contributor Author

ockham commented Sep 6, 2023

Cherry-picked to the release/16.6 branch in d62508d, and changed the milestone to Gutenberg 16.6.
cc/ @vcanales

@ZebulanStanphill
Copy link
Member

"Block hooks" sounds awfully vague and liable to be confused with a number of existing things like the block editor PHP hooks or the React hooks used by blocks.

Additionally, it seems weird to leave "insert" entirely out of the naming, since that's all this feature is about.

Why not call it "default insertion points" or "default insertions"? That would avoid the negative connotations of "auto" ("default" implies it can be changed) while also clarifying the "when" of the block insertion.

@Mamaduka Mamaduka removed the Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) label Sep 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Block API API that allows to express the block paradigm. [Type] Experimental Experimental feature or API.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants