D8 UX Analysis – Layouts, IA Spaces and the Principle of Definition-Usage Pairs

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
User Advocate's picture

One of the key ideas behind the new D8 architecture is that of resources being identified by unique URLs. It sounds simple enough but, behind it, I think there are some exciting potentials for transforming Drupal’s UX strategy. I want to share some ideas about that kind of transformation here and I’ll tackle it from a few angles: ‘what is a page’; the principle of definition-usage pairs; and IA Space and URL semantics.

What is a Page?

In the ‘What is a Page’ BoF at Drupalcon Denver, I presented the idea that pages are essentially defined by URLs. In the follow up discussion on this BoF, EclipseGc adds the Context and Layout factors to the equation for content assembly in Drupal 8.

“(url + context) determines the layout, which defines the components, which assembles into a page.”

So I see the Layout selection being like this:
Only local images are allowed.

and the Layout itself being something like this (correct me if I've got this wrong.)

Only local images are allowed.

Behind the D8 thinking, which is conceptually based on the Panels approach to content assembly, there is a critical shift from a ‘push’ model to a ‘pull’ model. Currently we tend to ‘push’ content out into the web site by assigning menu settings from within the node creation page. We could say that we do the same thing by defining a url for a page output from a View.

On the contrary, the Page Manager allows a site builder to create a ‘custom page’ and assign one or more mechanisms to ‘pull’ content into that location. The simple, but important, concept question behind the ‘pull’ model is:

“What are we pulling content into?”

The simple answer is: some sort of space. More specifically, I would argue that this is an Information Architecture Space, or ‘IA Space’.

Logically, this means that mechanisms such as Page Manager, are creating IA Spaces, based on URLs, and then assigning one or more ‘recipes’ for page assembly within each of those locations.

As I understand it, the attraction of the ‘pull’ model is that it could/should be easier for site builders and content managers to produce and maintain their web sites. I agree 100% with this objective and want to explore some more ideas about how we can take advantage of the WSCCI-based architectural shifts to produce a superior UX interaction strategy. To start, I want to outline here a concept that I call the ‘principle of definition-usage pairs’.

The Principle of Definition-Usage Pairs

As we explore the requirements for a UI system for Drupal 8 we often come across scenarios where we envision components being used to build up larger ‘chunks’. Once again, let's look at EclipseGc's summary about how the Layout Manager will assemble pages:

“(url + context) determines the layout, which defines the components, which assembles into a page.”

From the UX point of view, this implies that the Layout Manager is a mechanism for assembling components. This in turn implies that the components already exist, probably having been defined elsewhere – e.g. nodes, user objects, Views, etc.

Behind this functionality there is the notion that things are defined (e.g. as ‘components’) in one context and then used (one or more times) in a different context. Definition-usage pairing is a principle that I’ve derived to create the backbone for many types of UI systems.

The definition-usage pairing idea fits nicely into the concept of IA Spaces. Web sites, as we know, consist of collections of public and non-public URLs. With that in mind, here’s a diagram showing the very broad IA Space division that distinguishes the public facing web site from its administrative areas. It can be thought of as simply grouping two kinds of URLs.

Only local images are allowed.

So we can think of any page that is used for administrative purposes (in the very broad sense of the word) as being essentially some sort of ‘definition’ of a ‘resource’ that is ultimately ‘used’ when presented via the publicly accessible pages. The concept of a ‘resource’ is useful when thinking about the general workflow of things being first defined and then used. For example:

  • Resource definitions - where the stuff ‘lives’ as a data source. This resolves to a single address (URI).
  • Resource usage - where the resource data is presented to a user. This could be multiple usage contexts and is dependent upon Role (site builder usage is different from end user usage)

So now these questions emerge:

  • Which user defines a resource?
  • Which user uses a resource?

And this takes us into the area of Role divisions. Let’s look at the same diagram with the ‘back end’ IA Space being further subdivided into pages that are used by Content Managers and pages that are used by Site Builders. Notice how the definition-usage pairs begin to chain.

Only local images are allowed.

Note: To be consistent with the ‘resource’ terminology, we could even think of nodes as ‘content resources’ that are ‘defined’ via the node creation/edit page.

So we can look at the Site Builder’s Role as being oriented around providing the various resources required by a Content Manager. For example they define content types, Views, input filters, Layouts and so on. Many of the ‘resources’ that the Site Builder defines are available for the Content Manager to use or build upon.

There is one more intriguing Role that seems to arise in real life scenarios: that of the Layout Manager. This Role is interesting because it can be looked at from two perspectives: the Site Builder and the Content Manager.

From the Site Builder point of view, the task of defining Layouts might be seen as a strategic step. In other words the Site Builder might want to identify and build all the possible Layouts that can be used for assembling content.

But I’ve often heard of scenarios where the Content Manager/Editor wants to build a tactical Layout to handle a special case in order to amplify the impact of some topical content. (The examples I’ve heard about came from news oriented and grocery store web sites.)

Given that, we could theorize that there is another intermediate Role, the Layout Manager, that could be responsible for the creation and management of Layouts. The definition-usage chaining is still in effect.

Only local images are allowed.

IA Space and URL Semantics

With these very different contexts for task sets in mind, let’s reflect back on the semantics of the URLs themselves. Starting from the front end, the URLs exposed to the public should ideally have some sort of hint about the meaning of the pages. This also came up in our BoF at Drupalcon: the idea that the meaning of the public facing site can be probably expressed by the site owner (client) in terms of the intent behind each of the front end pages.

Theoretically, it should be possible for a Site Builder to have a conversation with the Client (directly or via a Product Owner) about the purpose of the site and the intent for each individual page. Ideally the Site Builder might be able to create a set of URLs that reflect this in some semantic form.

(As an aside I want to point out an interesting implication of this ‘outside-in approach’. It is also possible to create an entire front end IA Space simply by defining locations as the set of business-semantic URLs. In other words, there is no technical reason why a node has to exist before the IA Space location is defined. These ‘placeholder’ locations can then be filled in with the proper recipes for content assembly as part of the site building process. This is an outside-in approach to web site creation that uses a ‘pull’ model which I believe is compatible with new WSCCI based architecture. There are other implications for improved workflow UX that I’ll go into another time.)

So what about the semantics for the path ‘node/1’? I think it’s a perfectly acceptable URL for a back-end IA Space location. In other words, it is a clear way to identify uniquely the place where the content for the given node is defined. But I also think the semantics for ‘node/xyz’ is quite meaningless in the front end, business oriented context.

In the past we’ve found a workaround for this awkward semantic dilemma via the path alias feature. But even with a semantically clean alias, we still have the underlying principle that the web page consists of a node that is ‘decorated’ with other bits and pieces to make a complete page. This is the way things are done using the ‘push’ model. I think in D8 we can do better than that.

What’s Down the Road?

Combining the concepts of Role-oriented design, definition-usage pairs, intentional web page design, core context, web services and IA Spaces into an overall UI strategy can, I believe, lead to outstanding improvements in UX for all types of users of the Drupal platform. We may or may not be able to achieve all of this in the D8 timeframe but I think it will serve us well to discuss these concepts and issues with an eye to establishing a core-UI strategy that can support our UX designers and core developers for years to come.

What do you think?

Comments

Feedback

Bojhan's picture

Let me start by thanking you for such a thoughtful topic!

This is really interesting, I always love when system thinking is applied to complex domains such as layouts & blocks. Could you explain more what you mean by an "IA Space" to me it looks like a collection of related concepts?

It definitely helps to break down context into manageable parts, so far I have been struggling with what to design for. While components are really defined by there usage and in which context they live - as you correctly note.

I am afraid the differences between site builder, layout manager and content creator are too strict. Drupal is build around the idea of empowering its users, sometimes exposing tools that only make sense in a certain context (see our permission system). I do not like to see them as seperate systems, or flows but rather as shared activities - where we design for disconnected tasks (e.g. being able to edit the layout, but not the content).

How does this all tie in with the idea of IA spaces? Because the idea of WSCII is about the pull model, this seems to counter that of separate IA spaces. I already have a lot of trouble explaining this pull model to users, they call it as they see it - a block on page A, which they now also have on page B - the idea of contexts and URL semantics is often completely alien.

Can you ellaborate more on "whats down the road", you note that taking a more system design approach (Role-oriented design, definition-usage pairs, intentional web page design, core context, web services) will do much help. But do not note specificly, how we can make this happen and what this could result into?

Bojhan, thanks for these

User Advocate's picture

Bojhan, thanks for these questions. They will help sharpen the analytic tools we're using for this project so I want to make sure they get answered properly.

The first question 'what is IA Space' is a big one so I've started a separate discussion just for that. It's at http://groups.drupal.org/node/222609

Can you expand on your statement "I do not like to see them as seperate systems, or flows but rather as shared activities - where we design for disconnected tasks (e.g. being able to edit the layout, but not the content)."

Also, can you tell me more about why you see the Role differences as being too strict? I want to be sure I understand what you have in mind before I attempt to answer your question about how Roles tie into the IA Space concept.

The 'what's down the road' question is also rather big so I think I'll launch another discussion about that too rather than de-focus this thread. My hope is that if we can get consensus on the core concepts behind a UI systems approach then we can work towards pulling them together into a comprehensive vision.

Michael Keara
User Interface Systems Architect,
The User Advocate Group

Avoid fragmentation

Bojhan's picture

I would avoid fragmenting the discussion to much, lets keep discussing "whats down the road" here too until we feel it needs a separate thread.

From my view you are describing the domain that we are designing for as, different layers or parts to get a more holistic view. This is something we have done in the past as well, but we have also experienced that its very important to design for disconnected flows. In Drupal most "activities" are separated by permissions, therefor a user can have access to a tiny piece of functionality without touching anything else. For example, only allowed to make components but not allowed to place them in a layout. But also the entry point is one to consider, we are moving more and more towards contextual administration where you quickly pop in and out of the admin UI - this will mean the experience is more and more like a website.

I see the roles too strict, when you draw lines between what they do. I would prefer a more "acitivty centerd design" approach for this, mapping out what it is people do regardless of roles. That to me sounds like a more sane approach, to tackle this rather than starting to draw lines in the sand as to what it is a site builder vs. a content manager does..

Regarding "whats down the road". I think we all just want to know what the end goal/result we are aiming for. This sets a frame to the discussion, but also the expectation we will get somewhere beyond discussions.

Very insightful!

btopro's picture

I think the abstraction in the final chart of back vs front end makes sense, but I also think that roles really start to fragment that backend far more then permissions. As I see it in building a system / site there are really many different layers of UX (which each are a configuration of the last visual you have there).

Going a step deeper then back-end it starts with the developer and the UX that we provide coders via APIs, hook structures, object structures and so on. Then we get to site admin, which has what you are talking about above. An often overlooked group that I still haven't seen handled in a consistent manner are the admin-lite / content-managers that so many of us have to "deal with".

This becomes very apparent when developing distributions that what you work with is not what you necessary want intended audiences of site-builders / content-authors to have to work with from an experience side. I've seen a lot of people start cobbling together almost a different user experience per major content authorship role because the output makes sense as a website and the backend makes sense to developers / drupal-heads but no one in between that populate the site (my stab at this: https://drupal.psu.edu/blog/308 ).

Does backend layer then replicate per role or do you adapt a new tiered approach per role? Permissions can show/hide things but what we're really talking about is tiers of different user experiences based both on what you have access to and what you are presented with.

Thanks for that video!

User Advocate's picture

Great stuff in your video. I think it explores some interesting possibilities along the lines of an 'application' UI for site admin tasks.

Regarding Roles and permissions, I think it's important to note the differences. For a given logged in user, the permissions never change. That means the UI control can only be done in terms of showing/hiding things based on their global access rights. On the other hand, Roles (as I use the term) are about specific user goals. This can change constantly through a given logged-in session as the user goes about doing various tasks.

Each Role requires a set of tools to carry out the associated tasks. Therefore, I do believe it is beneficial to change the tools that are present to the user as they change Roles. This does mean that there has to be some form of Role selector, either implicitly or explicitly. In the past, I've done this through such things as option menus or tabs but it could be really any selection mechanism - as long as it matches the user's intent and feels easy to switch.

I see this as being doable within the WSCCI paradigm because this definition of Role could be another core-contextual parameter and thus could be harnessed to drive the active admin UI. I think this is what you mean by a 'tiered' approach.

FYI, at Myplanet we've also used this Role-oriented approach to guide the workflow and textual prompts for shared interfaces. I described this in my Drupalcon talk.

Michael Keara
User Interface Systems Architect,
The User Advocate Group

Yes!

metzlerd's picture

This concept solves a UI problem that I was battling with in a contrib module. I could see developing an Active Role module that would replace menu user_access function to help facilitate this, and might help figure out how this plays out.

Does anyone know if this has already been built? If there's interest, I'm happy to help out in this regard.

crossposted

yoroy's picture

Used my g.d.o. superpowers to crosspost this to usability and scotch groups as well.

Thanks

User Advocate's picture

Thanks Yoroy. It's a bit tricky to know where to post these discussions because they are targeted at the space between the dev and UX perspectives.

Would you mind doing the same for all of the discussion that we preface with 'D8 UX Analysis'? I think that could help us target these bridging topics for everyone concerned.

Michael Keara
User Interface Systems Architect,
The User Advocate Group

you can do it too :)

yoroy's picture

Shift-select all the groups in the 'Audience' multi-select box on the edit form for your post. https://skitch.com/royscholten/8x6wk/d8-ux-analysis-layouts-ia-spaces-an...

Interesting

effulgentsia's picture

Thanks for this post. I'm very interested in these concepts and seeing how they progress.

In the past we’ve found a workaround for this awkward semantic dilemma via the path alias feature. But even with a semantically clean alias, we still have the underlying principle that the web page consists of a node that is ‘decorated’ with other bits and pieces to make a complete page. This is the way things are done using the ‘push’ model. I think in D8 we can do better than that.

Right, so one question with the D8 work in progress model, is what should a user see when they type "http://example.com/node/1" in their browser? One option is an access denied page, if we want to think of "node/1" as a back-end resource that isn't part of the public-facing "front-end IA space". Another option is a Wikipedia-style disambiguation page with links to all the pages with usages of node 1. And another option is the Drupal classic approach (and therefore, what we're going with until an alternate proposal is presented and accepted) of showing a page with a bunch of blocks and node 1's content somewhere in the center.

I agree that "node 1" serving double duty as "a resource that can be used by many pages" and "a primary page containing itself plus site branding, navigation links, ads, and other stuff" gets problematic, especially when path alias hacks get pushed to extremes. If we can resolve this in a way that makes sense to people, supports the complex use-cases of many-to-many relationships between usages and definitions, and also makes it easy for someone managing a simple site to quickly submit an article/blog post/whatever and automatically have an appropriate page created for it, that would be awesome.

Interesting thoughts

User Advocate's picture

Hmm, yes how would we politely (and meaningfully) tell a user they shouldn't be on a given page? I think it's directly analogous to trying to get to an admin page without access rights. Currently we get a terse message "You are not authorized to access this page" which I suppose does the job, but your idea of a disambiguation page certainly raises new possibilities.

I suppose I'm wondering what the scenario would really be. Why did the user wander into this administrative area? I can imagine a couple of scenarios:

  • If the user has a preference to type addresses rather than follow links in the UI, they presumably end up in forbidden or non-existent places on a regular basis and this may not be a severe problem for them (not that this lets us off the hook.)
  • If the user had some sort of information about the nid and believed they could go directly there as they could always do in Drupal then there are entitled to a polite message to explain how to get that content (maybe that's like your disambiguation idea.)

I'm going on the assumption that if we can clearly define the IA Space and its interpretation for different objectives (Roles) then perhaps, maybe, this isn't a likely scenario.

As I understand it (and I could be wrong) the implications of a contextually aware page assembly mechanism (Layout Manager) are that the same front end location could look and act differently according to various contextual factors. If we look at the relationship:

"url + context > assembled page"

the predictability of well defined IA Space locations (URLs) combined with the power of variable contexts is really nothing less than phenomenal and could yield results that we haven't really imagined. The mechanism is not unlike the circuitry of a transistor in which the input voltage can be used to dramatically and precisely alter the output voltage.

Hmm...

Michael Keara
User Interface Systems Architect,
The User Advocate Group

my most common 3rd scenario

NWwaterboy's picture

I most often end up at permission denied url error is when I have followed a posted link, when I am not logged in or do not have permissions equal to the person posting the link.

Great Post

drclaw's picture

This is great. Thanks for this post! I've been hesitant to engage in some of these UX/IA/WSCCI (that's a lot of acronyms...) conversations but you've inspired me to get into it. =)

I think your examination of role divisions is spot on. Or at least inline with how I want to set up roles for users of the sites that I build. I'd love to see Drupal core acknowledge more than just the "Authenticated User" and "Administrator" roles. I think a lot of that probably comes down to permissions, but there's a UI/UX aspect to it as well. For example, most administration interfaces now are for the Administrator role and often come along with the ambiguous "Administer (something)" permission. This is usually tied in directly with a single administration page with every configuration option in one place. Administrators configure everything, those configurations define how the content editors (Authenticated Users) enter content and subsequently where and how that content is displayed. Consider the "Blocks" administration page. It's all or nothing. Either you can Administer Blocks or you can't. Of course, most of us use Context these days for block placement, but that's a whole different conversation (personally I wouldn't want to send my site managers to the context admin page, but that's just me)

Usability

Group organizers

Group categories

UX topics

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: