Thoughts on Pattern Library categories

Most of you probably know that one of the things we’d like to do for GNOME 3.x, alongside a refreshed HIG, is produce and maintain a GNOME UI Pattern Library. (An example of what we mean by a GNOME UI Pattern is this semi-fictional example.)

I’m thinking we’d probably want a homepage that both allows you to search by text/tag, and browse by category (something like this quick mockup.) Which would, of course, mean picking some categories.

From a quick survey of other pattern libraries (which are mostly geared to web design) and the type of stuff the current HIG covers, here’s a first stab at what that list might look like.

  • Feedback: Showing messages, notifications and progress indicators.
    Examples: Alert messages, notification messages, InfoBar usage, status bar usage, focus indication, audio feedback.
  • Input: Enabling the entry of different types of information.
    Examples: Sliders, audio input, video input.
  • Layout: Arranging information and controls in a window.
    Examples: Frames, grouping, spacing, anatomy of creation vs viewer vs browser vs utility apps.
  • Navigation: Enabling users to move around and between documents and different parts of the application.
    Examples: Tabbed windows, sidebars, location bar, zoom controls, media transport controls(?).
  • Search: Enabling users to find items or information that may not be immediately visible.
    Examples: Find dialogs, in-place searching, filtering, auto-completion, Boolean queries.
  • Selection: Allowing the choice of one or more items from many.
    Examples: Marquee selection, keyboard selection, pattern matching.
  • Social: Maintaining contact information, and interacting with other users.
    Examples: Adding information to address books and calendars, Showing online presence, Initiating chat.
  • Workflow: Relating to the process/mechanics of using an application to achieve a particular goal.
    Examples: Desktop integration, undo/redo, drag-and-drop, extending open/save/print dialogs.

Feedback welcome… any obvious ones I’ve missed, or ones that seem redundant?

FWIW, I’m not sure nailing the list now is either entirely necessary or entirely possible. There’s no reason we can’t adjust them as the library grows, and I hope we’ll have some sort of tagging capability to handle the patterns that don’t fit neatly in a single category anyway. But it’s always good to start from as solid a foundation as we can 🙂

8 thoughts on “Thoughts on Pattern Library categories”

  1. Not sure it deserves its own category, but setup/welcome/first-time experience Is something that might deserve some attention.

  2. Hey Calum. The documentation team is considering redoing our handbook and style guidelines, and I think we have some similar ideas about structure. Could we have a brainstorming/planning session together some time?

  3. Although I like the idea generically speaking, I think some of these are in different abstraction levels.

    How about a more hierarchical approach? Or perhaps orthogonal categories?

    Examples of orthogonal:

    Input vs Output (very low-level, Input can be subdivided to get Selection vs Action)

    Social vs Local vs Hardware (there may be overlap here too! Connecting your iPoS could broadcast your currently playing song if you don’t care about privacy at all)

    Workflow vs Presentation vs Behaviour (with Search being one of the standard behaviours)

  4. This is a very good idea.
    To me, it will accomplish 2 important goals:
    1) more coherent application design
    2) better and quickly application development

  5. i’m with Matthias Clasen.
    instructional communication deserves a category
    teach how to teach

    and Gustavo has a point there:
    polarizing things can fuel the illustrative powers.
    then, adding an additional axis opens an intuitive gateway to discovering details.
    extruding all knowledge from a single axis comes much closer to a sweet fractal style of formulation, than freestyled prose could possibly get

  6. p.s.: perhaps also add actual “tagging” as a method in the “search” category.
    the library itself should not only represent informative chapters of text but also function as an exemplary evolving implementation of its own postulates, much like what you started with your pseudo-real example 😉

  7. A Pattern Library is a really good idea, IMHO, I’d would be happy to search on a such website to develop my next applications.

Leave a Reply

Your email address will not be published. Required fields are marked *