Trees, TreeViews, and UI

March 23, 2005

Tree abuse

I somehow doubt this is what Joyce Kilmer was thinking of when he wrote the poem Trees:

I think that I shall never see
A poem lovely as a tree.

It's unfortunate that the treeview is one of the standard widgets in a usability designer's toolkit, because trees aren't usable. They're a pain in the ass. They may be necessary for developers who are forced to work in the strict, rigid world of software development, but they are unnatural, restrictive, and just plain unnecessary for average users. Where do I begin?

  1. Trees force a rigid hierarchy
    There's an episode of the old television show Gomer Pyle, USMC where the quartermaster gets sick and Gomer is put in charge of the Army PX. Gomer proceeded to reorganize every item in the PX into three categories: animal, vegetable, or mineral. Hilarity ensued. Lesson: rigid categorization may seem like a good idea, but it doesn't work very well in practice.
  2. Trees are difficult to browse
    Good luck finding anything in a tree; it's a navigational nightmare. Expanding and collapsing folders constantly causes items of interest to fall out of view, and loss of context in the hierarchy. Expand enough, and you'll end up scrolling not only up and down but also left to right. Interactively searching trees is awkward, if even supported.
  3. Categorization is an expert activity
    If left to their own devices, your users aren't likely to do any better than Gomer Pyle-- unless they happen to be experts in library science and information mapping. Categorization is extraordinarily difficult to do correctly unless you're an expert in the field. And even then, there is disagreement.
  4. Trees imply a parent/child relationship
    On top of all the rigid hierarchy baggage, there's an additional connotation of ownership-- both physical and logical-- that goes along with putting items a tree. Are you sure that item has one clearly defined owner and one clearly defined parent?

Any time you're tempted to add a TreeView to your application, consider carefully. Whenever I've encountered TreeViews, I've found that a flatter, less rigid representation of the data is almost always possible-- and much easier for users to understand and manipulate. Don't blindly fall back on a full-blown tree without weighing the alternatives.

It's true that treeviews are appropriate for a few specialized situations. A HR diagram of managers and employees, for example. In my experience, however, trees get horribly abused. The canonical example of unnecessary tree use is in email clients. Google has an excellent solution in Google Mail's labels:

The old way
You create an elaborate filing system of folders and subfolders, then decide where to file a single message.

The Gmail way
Instead of folders, Gmail uses labels to give you the functionality of folders, but with more flexibility. In Gmail, a single conversation can have several labels, so you're not forced to choose one particular folder for each message you receive. That way, if a conversation covers more than one topic, you can retrieve it with any of the labels that you've applied to it. And, of course, you can always search for it.
labels

I've aggressively adopted the label approach, because it's so much more reflective of the fluid way things are organized in the real world. Programmers may love rigidity-- to each item its appropriate folder and meticulously named class hierarchy-- but users prefer simple, flat lists.

Posted by Jeff Atwood
19 Comments

First Pee Wee, now Gomer. If my server weren't down I'd like totally link to you. Brilliant.

Damien Katz on March 24, 2005 1:09 AM

I suspect that if you're not careful, labeling systems can get just as complex as other classification systems. I think labels tend to shift the complexity towards maintenance and away from navigation. For small domains, this is a really good thing. For larger domains - maybe not.

In the end, you just have to know the customer (of course).

Jeff M on March 24, 2005 1:46 AM

I never use them (despite their apparent usefulness) because they are such a pain to setup - and then you have to actually remember to apply them.

Shouldn't incoming emails be tagged with 1 or more labels automatically based on rules you set up? This part is no different than folders. It's the after-the-fact flexibility that is superior.

Next time you are about to create a SQL table with a parent-child relationship to itself, just say no!

Yeah, a few of our apps have tables like this at their core, and I really don't care for them. In Oracle, you have to use a special join syntax (CONNECT BY) to join the table to itself. :P

Jeff Atwood on March 24, 2005 2:01 AM

I haven't used GMail, but labels appear to be similar to Outlook's search folders. I never use them (despite their apparent usefulness) because they are such a pain to setup - and then you have to actually remember to apply them. I suppose I could setup rules to apply the proper category - but that's more work! :) I get by with just a small set of special folders in my inbox for things I want to keep around.

How have you made the label management process easy for your users?

-Jeff M
Tree Hugger ;)

Jeff M on March 24, 2005 8:42 AM

I love labels! Adobe Photoshop Album is an example of an excellent implementation--the labels themselves can be arranged hierarchically, so that picture of Joe and Ted shows up when you click either the "Joe" or "Ted" labels, or their parent label "Friends".

Mike Powell on March 24, 2005 9:06 AM

I think it goes further than the treeview, to all classification systems. Too often, programmers will create complex heirarchical classification systems, when a much simpler "labelling" scheme would be easier to implement, and easier to understand for the user.

Next time you are about to create a SQL table with a parent-child relationship to itself, just say no!

Steve Campbell on March 24, 2005 11:40 AM

Even the example that you give of managers and employees breaks down in any situation other than the mythical "midsize organization" - in a small company you frequently have a flat heirarcy, and in any larger organization you'll get people reporting to a personnel manager for vacation scheduling, etc), possibly more than one project manager, et cetera.

I think the notion of a relative treeview is interesting - a way to say, "From the point of view of this node, this is what the rest of the tree looks like," but I'm not sure that its ever actually terribly useful as an absolute rooted view.

Richard on March 25, 2005 2:29 AM

Joyce Kilmer was not a she. He was a he.

http://en.wikipedia.org/wiki/Joyce_Kilmer

Mark Sicignano on March 25, 2005 11:06 AM

Thanks-- I made the correction.

Jeff Atwood on March 26, 2005 5:07 AM

This is not always true. Hierarchies are useful when users are looking at the content for the first time and a long list would make things hard to find, but navigating in the tree is easy because they know the criteria by which the content is categorized.
It becomes the opposite once they learn the content - now tree comes in the way, they learn how to search etc. So we have a problem - we need trees at a certain point in time, only to replace them later, preferably on the fly while users are becoming more experienced with the data.

Drazen Dotlic on March 26, 2005 5:35 AM

Google's War on Hierarchy, and the Death of Hierarchical Folders

http://www.microcontentnews.com/articles/deathofhierarchy.htm

Jeff Atwood on August 2, 2005 3:16 AM

I am a personal fan of the "Search Folder" type of functionality found on Outlook 2003 and Windows Vista. This lets me build flat lists of interesting information regardless of how it is stored.

Chris on August 25, 2005 2:58 AM

Here's an interesting take on email Folders: they're easy to abuse.

http://www.43folders.com/2006/08/10/folders-for-action/

Jeff Atwood on August 10, 2006 3:35 AM

With regard to Gmail's lack of folders, I actually find it to be a pain in the neck in the absence of the ability to filter my view by label.

For instance, my mailing list account gets around a hundred emails a day - and at times I'd prefer to remove the wxPython or Plone list emails from my view, reduce the visual noise.

At the moment, I can't do that. I can view one label specifically, but that's not what I'm after.

If I could use folders in conjunctions with Gmail's rules, I'd have no problems. Labels are great, but folders are useful too. :)

PS Is this an overaggressive spam filter?

"Your comment could not be submitted due to questionable content: blxgspot matching (blxgspot)" Argh, can't even submit this comment with the b-word intact.

No website for me. :(

Liam Clarke on November 22, 2006 12:00 PM

Liam, check out Gmail's filters (Next to the search button up top).

You can create a filter that applies labels and sends messages to archive instead of your inbox.

Then, you can find a message to wxPython using a search like:
label:wxpython

And if you only want to find labelled stuff in your inbox, it'd be:
label:plone in:inbox

Tada!

Jeremy Dunck on November 23, 2006 7:13 AM

Tags are a great way to categorise but older blogs that have hundreds of labels actually make me wish for hierarchy.

David Carr on August 19, 2007 10:02 AM

Unfortunately, one of the sections of our application deals with merchandise taxonomy. You know how you can go to your favorite electronics chain website and it let's you search under electronics-computers-notebooks-blah blah blah. Yeah that's the type of stuff that our application does. So I guess the treeview is the best widget in this case ;)

Mike Brown on September 7, 2007 3:13 AM

Unfortunately the same applies to file systems: the "transitivity" of the hierarchy is an advantage, but without some kind of property/label/tag management, it quickly becomes very limited.

thSoft on June 4, 2009 4:49 AM

Agree. This gets into the whole "folksonomy" thing a bit, which drives the purists crazy. I think it's great.

I came to this realization when catagorizing digital photos - the is a photo of me, AND it's a photo of Tommy Lasorda, AND it's in 1985, AND... So a photo has many attributes, all of which are useful in decribing it. The best information systems, then, are ones which allow me the flexibility to tag my information, and query based on tags.

A trick, or course, is that eventually it's nice to have some standard categories. An example there is the Genre categories in MP3 ID3 tags.

Jon Galloway on February 6, 2010 9:29 PM

The comments to this entry are closed.