Thinking Through the WordPress Admin Experience

These are some very early concepts around evolving the admin interface which are meant to spark conversations towards defining the outline of Phase:3. Some of the ideas presented here emerged when trying to solve problems around the site editor but have much wider breadth and consideration.

Given the third phase of the current WordPress roadmap has a focus around workflows and multiplayer, considerations around the various admin flows become all the more important. Also, as the component language introduced through wordpress/components becomes more established, we need to contemplate its coherent expansion outside the editor views.

Please, note that nothing here is meant to be settled in any way; it’s just a gathering of thoughts and possible paths to be explored in the future for early feedback.

The Shell and the Canvas

The blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor introduced a full-screen view as the default experience. Any such presentation faces the challenge of how to contextually access information outside the main frame. In the site editor context, this meant accessing templates and navigation. For the post editor, it might be accessing the list of posts or pages. This is generally characterized as “going back” but such a characterization falls a bit short and should be challenged.

One idea that has been surfacing is that we are dealing with two materials at different layers of focus or distance: the admin frame (or shell) and the canvas that contains the content or site representation. The canvas could be in a zoomed state — essentially taking the available space of the screen — but it doesn’t mean the navigation tools are in some “back” state, they are just off view at the present moment. If we were to zoom out from the full-screen state we would naturally get to see where we currently place in the stack.

Two materials: the shell (wayfinder with drill-down panels) and the canvas (the place to browse, manage, edit, customize).

For a practical application of some aspects of this idea see: https://github.com/WordPress/gutenberg/issues/36667

Articulating these materials in ways that can go from an edge to edge screen representation to complementary partial displays within one system becomes an interesting way of thinking through the problem of achieving focus, context, and clarity. This obviously has further implications on how we reason about keyboard navigation and screen regions.

In the context of the block editor, the canvas is naturally a representation of the site or content, but the canvas frame should be flexible enough to accommodate other types of admin views that are oriented towards management or settings. This also has implications for backwards compatibility since the expectation is that existing views can be automatically accommodated.

The Home Button

Since we are articulating different levels of focus, the home button (represented by the site icon on these prototypes) aims at being a permanent fixture that allows escaping the inner most level of focus and jump upwards in the navigation stack as needed.

When in full-screen, the home button reduces the frame to a smaller footprint and displays the current level of navigation within the shell. The home button is thus defined as a contextual interface element, that can be pressed further to go all the way back in the stack to the initial dashboard. The aim of this interface element is to both give control and build familiarity to navigate away from any context. There are some details of this mechanic to consider and refine if it were to serve its purpose.

Make it ExtensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software.

The system needs to be naturally extensible. The basic mechanisms for registering menu items are already in place, but we’d need to reason and give more formal access to the canvas and shell properties, as well as the ability to model its various states.

There are many ideas left to explore here. For example, plugins that might need to operate like applications could colorize different sections. They’d get access to the frame in its various configurations so it can use it as primary UIUI UI is an acronym for User Interface - the layout of the page the user interacts with. Think ‘how are they doing that’ and less about what they are doing. for management views, or as an editor canvas, etc.

Worth noting that some activities — like dealing with the theme design, for example — might clash with user chosen color schemes on a fundamental level. However, given the shell is adaptable, sections such as “design” could establish themselves with its own muted palette, either dark or light variants, and so on.

Make it Personal

Almost every computing context of sufficient scope and generality would eventually recognize that to be the best experience for every user it needs to allow some degree of personalization. The WordPress admin has allowed this primarily through code APIs and in ways that are not generally the most intuitive or that require effort to coordinate. This brings a tension in discoverability and how overwhelming the navigation experience might get to be.

One important idea embedded in this proposal is allowing the set of main navigation items to be configurable, either as shortcuts or as pinned items, similar to how the block editor handles pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party extensions in the headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes.. This would allow a more systematic and maleable approach to choosing what are the most important items for a given site or a given user flow.

A corollary is that different users could have different admin experiences based on what flows they use and care the most within the same site.

There and Back Again

There are various cases where jumping transversally from one area of the admin to another become important. It’s not generally convenient to map all the path combinations for going from point A to point Z (and everywhere in between) without also exploding the cognitive complexity.

It would be interesting to consider recently visited areas as some sort of stack, similar to Command/Control+Tab interfaces in operating systems, but operating for recently visited sections of the admin interface. This is just a the pie in the sky thing for now, but imagine if the few places you visited where represented in the frame stack somehow (as dots, as stacked frames, etc) so you could easily swap places without having to traverse layers of menus each time if you need to be bouncing between a couple specific flows.

Search

The ability to jump to a section, plugin area, or content piece is a powerful model that has become more ubiquitous in modern applications, often in the form of a “command palette” or equivalent quick-access interfaces. It’d be worth mapping how a feature like this could work in WordPress and how it could leverage the very same APIs we use to define menus, locations, settings, and content types to become extensible. While this is becoming a more familiar pattern for going to a specific location or entity, it’d probably remain an advanced feature in nature and thus a secondary affordance.

Multiplayer

When Phase:3 is mentioned there is a strong emphasis in the ability to work with others. This means both real time collaboration as well as asynchronous ongoing collaboration by multiple user roles. Taking these capabilities into account into the very fabric of the admin experience is one of the reasons for considering the admin flows as all encompassing. Multiplayer might be reflected in both the editor frame and the management views. Imagine not just being able to collaborate on a page or a design but to also be able to follow the avatarAvatar An avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name. of a person and jump straight to where they are in the admin so you can collaborate on any activity. There’s a lot there left to explore and unpack.


Thanks to @jameskoster and @joen for the work on some of these early prototypes.

#gutenberg, #phase-3

THX (Themes) Update

The past week we’ve been committing significant updates to the pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party.

Screen Shot 2013-10-12 at 3.19.55 PM

Here’s a list of the changes that went in for version 0.7 (major props to @shaunandrews):

  • A lot of work went into rethinking how modal-overlay works and looks for showing the expanded theme view.
  • Adds keyboard navigation (with arrow keys) to quickly browse through themes while on details/modal view.
  • Significant JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com/. refactoring and cleanup.
  • Adds “delete” theme functionality.
  • Implements theme updates notices on theme grid, and update info on modal view.
  • Adds a theme count to the section title that updates immediately with search.
  • Several style improvements: theme blocks on grid view, add new theme, hover indicators, active theme more prominent, screenshot gallery with thumbnails, responsive styles, and a bunch more.

The keyboard navigation is becoming a pretty nice way to quickly flip through themes.

Screen Shot 2013-10-12 at 3.20.05 PM

What’s left?

Functionality wise it’s getting there, but we still have to keep polishing. (I’m being told modals are broken in Firefox.) We are a small team, so any reviews and suggestions are welcome — code or otherwise. Next up for JS rendering is looking into scaling issues (when, say, you have 200+ themes).

#core-plugins, #thx38

THX38 Update

We’ve been busy building and improving the plugin. We are approaching the point of a full feature prototype, which will allow us to start testing smaller incremental changes.

I committed the first pass at the browse themes screen based on the mockups we’ve discussed before:

Screen Shot 2013-09-24 at 4.30.13 PM

By the way, we are running a bit short on development resources, so if you are proficient in PHPPHP PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. http://php.net/manual/en/intro-whatis.php. and/or JS and want to contribute to this project, please, either chime in to one of our weekly chats or pingPing The act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test it’s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of “Ping me when the meeting starts.” me directly. We are using Backbone to build all the theme views. We started a short document with the current tasks.

Screen Shot 2013-09-24 at 4.29.43 PM

We have two tasks going on: make theme switching work with the current prototype, and finish implementing theme fetching to the install-themes screen.

#core-plugins, #thx38

Update on THX38

Things have been in motion for the themes project. I’ve been working on making the pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party prototype ready for some initial testing. It’s looking like this:

@shaunandrews ran a test with it, and here’s the video.

Compared to how bad last test went, it’s pretty cool to see the dramatic effect the “add new theme” blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. had. (Also helped by the removal of the tabbed interface and extra information.) The user grasped immediately that she was seeing some themes that were already available to her blog, and how she could add more. Fairly straightforward, which is all this test was about.

Then, of course, as soon as she got to the filters page everything went down again, but we already expected that — still good to have one more test showing the same fundamental problem there.

Directions

On last Tuesday’s meeting we discussed the different mockups that were shared so far, apart from the plugin ones.

  • Shaun: http://cl.ly/image/0p3Z2y3r0U14/o
  • Emil: http://index56.com/wp-content/uploads/2013/08/quick-draft.png
  • Paal Joachim: http://easywebdesigntutorials.com/wp-content/uploads/Theme-Browser-Mockup-1024×704.jpg

It seems we have mostly two directions to try for themes.php. The one the plugin is building (simplify the screens, remove the tabs, but keep a distinction between “your themes” screen and “installing new ones”), and one that merges installing new themes with your currently installed themes on the same screen. As a quick analogy, themes.php as your apps folder, or themes.php as an app store. Another possible outcome is that this screen could render a specific experience for new users alone.

Shaun is polishing his prototype so we can test it. We argued that it would be hard to know which of these two was the better one, since we would also need to test with people that already have a bunch of themes installed and don’t care much about the discovering new ones part. But having some insight is still good.

Finally, we talked briefly about multi-screenshot support. The plugin has a proof of concept implementation, showing the screenshots on the expanded view of a theme as a gallery. To test it, add a screenshot-2.png image to the root of a theme (up to five). Also relevant coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. ticket: #19816.

#3-8, #core-plugins, #thx38

Team THX38 had its first formal meeting last…

Team THX38 had its first formal meeting yesterday. See logs.

We talked about the things we see as more problematic, and spent some time discussing Filters/Search, as we identified that as an area with huge room for improvement. If you have read Dave’s post on design processes, this in area where we would benefit from exploring a bunch of quick directions that we can later test, so feel free to submit ideas.

Shaun also shared the usertest video he ran. Some interesting points from the video:

  • It was pretty clear that discovering new themes was not easy at all. The amount of time between arriving at themes.php and actually seeing new theme screenshots was huge. (The direction of the initial concepts I posted before address this issue by putting a new empty theme-blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. at the end of the grid of currently installed themes that says “Add new theme”, and gets rid of the tabbed interface. That would be something to test.)
  • “I was thinking I would have a screen with a bunch of themes to look at”. This is a nice way to put it. 🙂 She says this when clicking on “install themes” and seeing the entire screen covered with checkboxes. It seems we have this backwards with “search” being the first tab selected, you should be able to get into screenshot-browsing right away and maybe refine with searches and filters along the way. (Another thing we discussed were “categories” like photography, food, etc.)
  • Filters names don’t mean much visually — or rather, they mean different things to different people — so it’s a rough place to start with. The user later mentions she just wants to browse through images and see what jumps at her.
  • While browsing, it would be a nice experience if installing a theme was not disruptive — you click install and maybe see a progress bar on top of the screenshot, but you can still keep browsing and installing other themes.
  • Once you installed a theme, the message and screen you are sent to is a bit underwhelming.

Comparisons to existing theme/template showcases were brought up: WP.com themes, Squarespace, Tumblr, Weebly, to name a few. The plan is to report back the findings at next meeting, so those interested, please, grab one and research what you like and don’t like (with images!) for the discussion. Put your name in the comments so we know we have things covered.

PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party

I set up an initial plugin for the project that you can grab at https://wordpress.org/plugins/thx38/. Note: it currently makes themes.php unusable, it’s only meant for us to play with as we go. It setups your theme collection in Backbone.

Change of meeting time

We are switching the day of our chats to Tuesdays. So next gathering will be on August 27th at 18:00utc.

#core-plugins, #thx38

THX38 project and weekly meetings

Hello all. Team THX38 will be working on the Theme Experience project, spanning the theme admin screens as well as improving the .org directory. Check our initial overview for information on our goals and the pain points we want to address. We also have some visual concepts there to start the conversation.

Weekly office hours

We’ll be meeting in #wordpress-coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.-plugins on Monday, August 19 18:00 UTC. If this works out we’ll keep this time going forward.

Current Team

@matveb (lead), @samuelsidler, @melchoyce, @shaunandrews, @jacobdubail. The following people have also expressed interest in helping when time permits: @helen, @bpetty, @sabreuse

If you’re interested in contributing to the project, leave a comment here and let us know!

Next steps

For next week, Shaun will be working on running some tests around themes.php, and we’ll also be setting up a pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party soon so we can start playing with these ideas. See you around!

#3-8, #core-plugins, #thx38