Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
Problem/Motivation
The Layout Builder alpha experimental module has the following terminology:
- There is not yet an overall term for the overall layout that the user builds (whether applied to an entity, entity display, page, etc.)
- The site builder adds one or more sections to the overall as-yet-unnamed-layout-thing.
- For each section, the site builder selects a layout (as provided by the
layout_discovery
module, e.g.onecol
orthreecol_25_50_25
). - The site builder then places one or more components (e.g. blocks) within regions of the section's layout.
There are a couple outstanding questions with this terminology:
- We need a name for the overall thing that contains sections.
- The word "component" is a bit vague and also used for a few different things already: the
\Drupal\Component
namespace, the "Component" field on Drupal.org, theme components, and, apparently, parts of entity view and form displays (a field and its display settings, I guess).
Proposed resolution
Discuss the correct terminology.
- I think a site builder would think of the overall thing they are building as the "layout" (and, after all, the module is called "Layout Builder"). However, the word "layout" is already in use for the layout plugins (from layout_discovery) that are applied to each section.
- Tim and I discussed that the things currently called "layouts" (the layout plugins) might actually be better described as layout templates (since they're just a pattern that gets filled in, not the actual layout as the end user would understand it). Tim also mentioned that there's a loose expectation they'll be rendered via a template. To adopt "layout template" for these things, we'd have to do some renaming and deprecation, since layout_discovery is stable.
- In HEAD, the only things used as section components are blocks, but other things might be placed in sections with contrib. (Example?)
Remaining tasks
TBD
User interface changes
TBD
API changes
TBD
Data model changes
TBD
Comment | File | Size | Author |
---|---|---|---|
#36 | 2929783-terminology-36.patch | 3.25 KB | tim.plunkett |
#32 | Choose-a-layout-for-this-section.png | 44.83 KB | bnjmnm |
#32 | Choose-a-section-layout.png | 44.43 KB | bnjmnm |
#29 | 2929783-29.patch | 793 bytes | MerryHamster |
Comments
Comment #2
xjmMade a picture.
Comment #3
xjmComment #4
xjmComment #5
ndf CreditAttribution: ndf at Dx Experts commentedGoogled a bit and read through some UI libraries.
For "Layout" or "Layout template" sometimes "Grid" and "Container" are used as synonyms.
For "Component" sometimes "Element" is used, but "Component" seems to be the most popular.
Regarding "Component a.k.a. Block"; isn't it already possible to add Fields?
With a word like "component" in the end I would expect a d7-Panels list with context-related things like "field-a", "node-title" (node context) and "site-header", "breadcrumb" (both global context) as components.
I would not mention the word "block", it's an implementation detail. Not sure if it is helpful when the component provider (block, field, layout) can be shown.
Regarding "The site builder adds one or more sections to the overall as-yet-unnamed-layout-thing".
I imagine you can have endless nested layouts. For example a node can a have an attached view. That view can again list nodes. And so forth. So a "Section/Layout" can be used as "Component". In d7-panels land those were called "mini-panels".
For the top-level "Layout" seems good.
Regarding "Layout" and "Layout template". The distinction is more clear. So +1.
Comment #6
xjmThanks @ndf. So it sounds like keeping "component" has merit. @tim.plunkett and I agreed that we can't use "element" because we use that for render elements which are everywhere and can show up at any level for the developer.
So I think we should look at what it would take to deprecate "layout" in favor of "layout template" while still providing BC (since we just marked it stable). Changing the UI is easy, but it'd be really confusing for code to call one thing "layouts" and the UI to call something else "layouts".
Thanks!
Comment #7
xjmAs above, let's discuss this before beta.
I think the terminology that's introduced in LB is fine (we're keeping "section" and "component") but I think we should try to get an idea of how we could adopt "layout template" (starting maybe with a list of what things would need to be renamed in both modules, and how easy or hard it would be to deprecate provide BC for them).
Comment #8
tim.plunkettComment #9
samuel.mortensonI like "Layout template" as a term, but even if we change the name we're going to end up saying Layout multiple times - i.e. "The page Layout uses Sections which each use a Layout template.". I almost wish Sections were a distinct plugin type similar to Layouts, but were explicitly flagged as being things that are meant to be embedded inside other things. Layouts were not originally designed to be nested within each-other, which is why this is awkward for me. There's value in knowing that some layouts are meant for embedding and others are meant for owning the entire page.
For component vs. block - do we have any future plans or example use cases for non-block components? In Panels IPE we chose to call blocks "Content", but consistently received feedback that we should not abstract the fact that blocks are what's used internally. One problem we ran into was that many Block Plugins had the word "Block" in their label, so you would go to add "Content", but it was obviously that blocks were what's used.
Comment #10
EclipseGc CreditAttribution: EclipseGc at Acquia commentedSo, I disagree that Layouts were not intended to be nested. We've been nesting them (in some form or fashion) for as long as I've been Drupaling and the Layout Discovery module was built on top of all that knowledge. Maybe you're saying it in the sense that we didn't build a UI for nesting them. That was a conscious decision. UIs for nested layouts are... awkward and difficult. I'm not sure I've ever seen one that I would consider "right".
In terms of the terminology problems here. I am a little hesitant. I don't have a problem with changing terms, I'm just unconvinced that any of the terms we've discussed are demonstrably better than what we have. That being said, I've mentioned before that these things that Layout Builder is building are Entity Layouts. I even suggested a module name change at one point (since if we want to get super pedantic here, Layouts are plugins and we've certainly not built a module which creates new layout plugins so... again terminologically, we have a problem).
I don't really like "template" but if everyone else is on board with it, I certainly won't be blocking any term. But to me, it's kind of like this:
An entity layout is a collection of sections. Sections each specify their own layout plugin and embed individual blocks into the regions of that layout.
That's the whole definition. Adding the word "template" to that doesn't really benefit the definition I don't think. If anything, I think it would make things more confusing because there IS a template involved, and that word means what it always means in Drupal 8... a twig template that drives the layout. I have enough overloaded words in my Drupal vocabulary (Hello Block and Context), and I realize there's a danger of doing that to Layout as well. I'd prefer to not endanger template while we're at it. But that's just my 2 cents.
Eclipse
Comment #11
samuel.mortensonI only meant to point out that the Layout Plugins in contrib were not designed (as in, designed by a frontend developer) to be nested. Not trying to assume anything about the intention of Layout Plugin's architecture.
Comment #12
DyanneNovaIf I were creating terminology from scratch I would say that inside of Content we have nested the Content Layout, Sections, a Section Layout, then Components.
I don't know that Layout Template helps to clarify things. I think picking a Layout for a Section is the most clear wording for a content editor. For storing the default content layout itself I think something like Content Layout or Content Display makes sense, to separate the concept of laid out content from the library of Layouts.
Comment #14
webchickFor this kind of "jargon/terminology" review, it can be helpful to get opinions outside the development team, so tweeted out https://twitter.com/webchick/status/951901240098566144 to use as one possible data point. We'll see if it gets any traction.
Crediting @DyanneNova and @kevincrafts for their help in the #ux channel with this.
Comment #15
tim.plunkettSome good replies among the snark:
A: page, B: section, C: row, D: column, E: item
https://twitter.com/kolearyUX/status/952229561512742913
A: page, B: region, C: row, D: cell, E: component/block/module/widget
https://twitter.com/codycraven/status/952034033298321408
A: Body, B: Page, C: Section, D: Card, E: Content
https://twitter.com/melchoyce/status/951964986175311872
A: Page, B: Content Container, C: Section, D: Subsection, E: Element
https://twitter.com/chicagomom/status/951908369098510336
A: Wrapper, B: Page, C: Section, D: Card, E: Content
https://twitter.com/karmatosed/status/951968068590333957
A: page, B: content, C: content sections, D: sub sections, E: content detail/the story
https://twitter.com/cferthorney/status/952099799976808448
A: Body, B: Wrapper, C: Section, D: Element, E: Content
https://twitter.com/_dotrex/status/951981755208265731
A: Page, B: Content, C: Regions, D: Component/Block, E: Content Item
https://twitter.com/ishanmahajan/status/951903069511602179
The actual terminology we're currently using:
A: Page, B: Content, C: Sections, D: Regions, E: Components
Originally E was going to be Element, but gave up on that due to \Drupal\Core\Render\Element\RenderElement
Comment #16
webchickOk, the Twitter discussion was interesting, in that it showed there's absolutely no consensus for this terminology outside of the over-arching wrapper "thingy" being called a Page. :) Also, that where possible, we should use modifiers (e.g. sub layouts, nested layouts, etc.) in favour of inventing new terminology for things.
However, what I found encouraging out of that discussion was to see that all of our existing terminology did get brought up by various folks, several of whom have extensive experience with content authors and data modeling.
So the summary of that conversation is there was no clear winner on what to call the "overall thing that contains sections," nor that "components" should clearly be called "shazbots" or whatever (and apparently they were already called components dating back to #1852966: Rework entity display settings around EntityDisplay config entity in 2012 (thanks, @tim.plunkett!), before Symfony was even a glimmer in young Dries's eye ;)). There's always a risk (as well as real, tangible work in the form of potential API breaks, documentation becoming outdated, etc.) in introducing or changing terminology, and it's best to only be done when there's a clear pay-off (e.g. "every design agency will understand Drupal 1,000% better if we use the 'shazbot' terminology").
So my recommendation would be to stick with what we've got, and revisit this only if/when either a) we see evidence that the terminology presents a significant enough hurdle to make it so content authors cannot use the UI, or b) a clear standard aimed at our target audience (which to reiterate is content authors, not site builders/designers/developers) comes out and we adopt that.
Comment #17
yoroy CreditAttribution: yoroy at Roy Scholten for Dropsolid commentedTo me the only missed opportunity would be to adopt Sub sections for D. It's C & D that are most similar to each other (see row/col, row/cell analogies people made) and I think there's value in linking them through naming instead of calling them different things. It would also get rid of "Region" which is not mentioned in any of the responses @tim.plunkett lists above.
Leaving at rtbc though :)
Comment #19
xjmSo:
Comment #20
xjmComment #21
tim.plunkettAfter further discussion, I think we're all agreed that there are no clear changes we should make before beta.
I'd like to repurpose this issue for a review of the terminology used in the UI, and as a stable blocker.
To start things off!
When adding a new section, you are presented with a dialog with the title "Choose a layout".
However, you are already editing "the layout" of the whole thing.
We need to differentiate between the layout of the section and the whole layout itself.
As surfaced by the above tweet thread, it might be better to add a modifier instead of devising a new term.
Comment #22
tim.plunkettComment #23
EclipseGc CreditAttribution: EclipseGc at Acquia commented"Choose a section layout"?? I like that term because it's internally consistent with what we're doing, and has the added bonus of not being mumbo jumbo to end users.
Eclipse
Comment #24
xjmI also think "Choose a section layout" would be better. "Sub-layout" is ambiguous, but the word "Section" is already used in the UI and clearly illustrated as a concept by the dotted line thingies.
Comment #25
tim.plunkettComment #26
pixeliteI showed the layout builder to some students with no Drupal knowledge. Here are some observations:
I looked at the terminology for some other page-builder tools, here's what I found:
Take-aways:
I have screenshots of all the above examples. If this is useful, I can do a more thorough write-up.
Comment #27
TheodorosPloumisJust a comment here in order to think "out of the box".
The "Section" (blue border area) and the "Component" (green border area) in pairs can be described like this in every day life (math, geometry, games, programming etc). In fact some pairs can be combined too.
In my opinion we should stick with the "table/matrix" terminology "layout > row > column". We should strictly avoid including terms like "page" for reasons. The reasons are:
That's all!
P.S. After writing all these I would prefer to call the term layout a "matrix" or a "grid" but this will cause another Drupalism I think :-P
Comment #29
MerryHamster CreditAttribution: MerryHamster at Skilld commentedreroll #21patch for 8.7.x
Comment #30
AaronMcHaleSome of my thoughts after reviewing the discussion:
For #26 some of the issues mentioned from the student focus group should be addressed soon: in 8.6 we’ll have the ability to add custom non-reusable blocks directly from the Add Block button, and #2994909: Highlight active element while working with dialogs in Layout Builder may help to address people being confused after clicking Add Section.
Comment #31
tim.plunkettAssigning to myself to fix the IS
Comment #32
bnjmnmIt's time to resume this discussion as Layout Builder approaches stable + there's been more time for users to work with it as an experimental module.
Upon reviewing the issue + other interactions with community users, it seems like there is largely agreement regarding how to name the top three layout-parts
(If I tallied this consensus in error, please speak up!)
I still see some compelling pros/cons for Components vs. Blocks and it doesn't look like a fan favorite has revealed itself. My personal preference is something other than Block, but it doesn't necessarily need to be Component.
This specific preference comes from writing documentation for clients. The same term describing multiple things (particularly when one can contain the other) makes documentation difficult, and I've found it contributes to negative perceptions of Drupal. As far as the (understandable) concerns regarding the addition of new, potentially confusing terminology, I think referring to it as a "Layout Block" (both words capitalized) instead of "Block" would significantly reduce documentation-confusion.
Finally, I see the merits of both "Choose a section layout" and "Choose a layout for this section", but lean towards the former as it's fully visible within the limited space provided by the off canvas dialog.
Comment #33
xjmI like the suggestion in #32. The one downside with "section layout" though is that those layout template things are also used outside of Layout Builder (e.g. for the Field Layout module which is currently the only way to give forms layouts, and for other things in contrib).
Comment #34
bnjmnmBelow is an attempt to summarize the suggestions thus far to make it easier to resume the discussion and present it to the UX meeting.
Places to consider the impact of the terminology choices
Summary of suggested terms
The absence of for/against for a particular term is not necessarily indicative of its popularity.
* = seems pretty close to being the agreed-upon term.
Top Level (thing that contains all the sections, currently unnamed)
From the comments here it seems like Page Layout is pretty much the agreed upon term.
Immediate child of #1 (currently called Section)
What #2 can contain (Currently called Layout)
From #35
#12
#30
#24
#30
#26
What a column in #3 can contain (Currently called Block)
On several occasions there have been people - including FT Drupal contributors - that thought that Layout Builder was only capable of displaying blocks - unaware that it fields and other non-block content could be just as easily used.
From #35
(fully prepared to edit this comment if I missed something)
Comment #35
tim.plunkett#34
3) The term "template" is being used in #2988970-36: Layout Builder should make it easier to modify the default layout for an entity type when viewing an entity to help differentiate between the default layout and per-entity layout override.
So "Layout template" is not a great choice here.
4) In code, this is represented by a class
SectionComponent
, often called "section component" or just "component".Comment #36
tim.plunkettHere's a patch that standardizes the current language to at least agree with itself, and puts the titles in the correct places.
The only meaningful change is from "Choose a layout" to "Choose a layout for this section" as suggested above.
Comment #37
bnjmnmAside from one small thing, I'm inclined to RTBC this based on the discussion of this issue at the Feb 19, 2019 UX meeting. The largest takeaway from that meeting is that nothing should be changed unless there is compelling evidence to do so. We have not encountered that compelling evidence. In the event that such evidence emerges post-stable, the fact that we would only be able to make UI changes as the terminology between UI and code is not fully in sync at the moment anyway.
My only concern is the visibility of "Choose a layout for this section", which is truncated to "Choose a layout for this...".
Could a followup ticket be created to address issues related to the limited space available in the dialog title bar? (this limited space also hides useful information in the Remove Block and Remove Section dialogs, so it would be nice to have in the queue)
Comment #38
tim.plunkettLinking to the existing major bug
Comment #39
bnjmnmBased on the feedback from the UX meeting mentioned in #36 and the existence of #3037124: Off-canvas dialog titles should not be visually truncated, this can move to RTBC.
Comment #40
xjmSo the user-facing changes here seem fine to me and I agree with the terminology choices. It looks like we're sticking with calling blocks "blocks", which works for me.
However, this doesn't address that blocks are called section components in the code. It's a year too late now to change that because the module is beta and requires BC, but should we have a followup to align the in-code terminology with the user-facing labels?
Comment #41
tim.plunkettThe in-code naming was kept generic because there was no reason that SectionComponents HAD to be blocks.
In theory, there still isn't.
But because they happen to all be blocks, it is worth calling them that in the UI.
Additionally, we have a lot of code like this:
In that example,
$plugin
is an instance ofBlockPluginInterface
.$component
is aSectionComponent
.Renaming that to block would be even more confusing, as we'd have something like
Section contains SectionBlock contains BlockPlugin
Comment #42
xjmHrm, OK, I still don't like using the word "component" because it's so terribly overloaded, but that's not a reason to block making the user-facing labels better.
It looks like I already required that the API documentation explain that SectionComponents are typically blocks, so that part's also taken care of. ;)
I know this was discussed in a UX meeting or two; are all the meeting participants already credited here on the issue?
Comment #47
webchickCrediting UX folks from the meeting where this was discussed: https://www.youtube.com/watch?v=EPM0K4hTo4k
Comment #48
webchickOk, thanks a lot everyone for all of the great discussion and deep thought on this issue!
The patch looks fine to me, and MUCH less hairy than I was expecting, which is great! I double-checked with @xjm and she's ok with me committing this, despite contributing to the end result which was basically to leave things more-or-less as-is, in absence of a compelling reason (user-driven, competitor-driven, etc.) to change.
I think once this awesome module gets out in front of more non-technical people we will likely find places where things could be improved, but I'd much rather any further terminology refinements be user-feedback-driven rather than "Drupal-contributors-who-are-insider-enough-to-stumble-upon-issue-2929783-and-know-how-to-leave-a-comment-driven." ;) This is a key UI for Drupal, so I suspect it'll get further refined in Drupal 9 and beyond, regardless.
Anyway, GO TEAM! Another stable blocker bites the dust! <3
Committed and pushed to 8.7.x. Thanks!