How Drupal Could Become Easy to Learn, Easy to Use

After some thought, I've come to the conclusion that Drupal's most significant usability problem is findability. Findability[1] is defined as:

a. The quality of being locatable or navigable. b. The degree to which a particular object is easy to discover or locate. c. The degree to which a system or environment supports navigation and retrieval.

The true seriousness of drupal's findability problem may not be immediately evident to expert drupal users. In addition, in various usability surveys, and studies, there is no immediate evidence of Drupal's findability problem.

Indeed, my conclusion is based entirely on indirect evidence. We have no good way to measure findability problems, so for now we can only observe them indirectly -- much like finding planets that orbit other stars. 

A good place to start indirectly observing findability issues in the user documentation: For example, take this quote:

You will want to start your configuration with your drupal site's basic settings can be found on the settings page, which you can reach by clicking administer » settings in the navigation block. 

I'm going to go out on a limb here, and suggest that the location of site settings like "name", "slogan", "footer", "frontpage" should not need to be documented. It should be self evident.

This happens to be a common question I get from people who I'm teaching drupal: "Where to I change the site's name and slogan?". Even when I answer this question, its not unusal for them to ask me again a few months later. 

Whenever one stubles upon a findability problem, one could reach any number of conclusions. Maybe users are idiots, or maybe drupal's powerful, and therefore inherently difficult to wrap one's head around at first. The most common reaction I've observed to findability problems is RTFM.

However, I see no reason to reach any conclusion other than "maybe we should think about why this is so difficult to find."

Precise Language is Everything 

In this case, the reason is obvious: "settings" is way to general of a word. And in the drupal adminsitration menu tree, "settings" does not appear to mean anything at all. Access controls, input formats, block configurations are "settings". It seems there is absolutely nothing to clue a user into where to find the place to change the site name. Especially seeing as how the "settings" are found under "administration".

Remember: when it comes to findability, precise words are everything. Changing the site name is a configuration task. Or is it an administration task?

Don't be embarassed if you find yourself visiting the dictonary when in doubt. 

Administration -- "Administration can be defined as the universal process of efficiently organizing people and resources so to direct activities toward common goals and objectives."

Configuration -- " Arrangement of parts or elements. "

While reading the definition, and discussion of the word, you probably noticed a huge distinction. Administration is a process.[2] Where as configuration generally refers to a static state(which can be changed). 

So a distinction is emerging here that may account for a great deal of confusion in drupal. Basically, the vast majority of things found under the administration menu shouldn't be there -- that is if we give a damn about the wording we use. 

And now the unexpected twist

But really, WTF cares about this distinction? Our users? Probably not -- moreover, the distinction above was important, but let's face it: its too subtle of a distinction for top level menus! Most importantly, the entire system of organization still has a major flaw:

Everything is organized in accordance to how it fuctionally relates to drupal. Not how it relates to a user's tasks, much less goals.


Moving in a new direction

If we're serious about a more user friendly drupal, we'll need to make some serious changes.

Death of Administration | Birth of Control Panel

For one, the administration menu needs to go; its too broad, people aren't instinctively aware of what it does, and drupal has grown out of it.

It should be renamed to something every single user will probably understand from the get go. Well, here's one: "control panel". On macs and PCs the control panel is where settings, preferences, and system details are stored. If a user needs to change the sites name, and they see "publish", "my account", "log out", "control panel", they will instinctively go to control panel -- they won't even have to think about it.( I still think something resembling the control_panel.module needs to find its way into the core. The menu trees just don't cut it. But for now, we're going to pretend the user is greeted with a page that resembles their desktop's control panel).

Help_hooks passed directly to links for popup help text on hover

Let's say they want to change the site's name. Well, how about renaming "settings" to "basic sitewide settings". I'll go you one further, when they hover over the icon, help text pops up that describes which field sets exist in that page. So if they are not sure what they want, they can just hover over all of the options until they see one that sounds closest.

Defining a user-centric organization

Its not enough to just put the old menu into a control_panel. What needs to happen is a shift of how modules link themselves into the adminstration menu. They need to be able to group themeslves into key tasks, a few of which include:

  1. Organization, navigation (admin/menu, admin/block, admin/category )
  2. Managing Users (admin/access. admin/user. admin/settings/profile)
  3. Configuring Content (admin/settings/node, admin/settings/content-type, admin/input, admin/settings/tinymce, admin/workflow )

The result of this would be better findability -- settings are organized by ideas, and words that relate to what the user is trying to do, not to terminology. Now, where to begin...



  1. Source:
  2. Now, one or two of you might say, "wait a second... what about SYSTEMS ADMINISTRATION?" i'd reply that applying technical language, and defintions to drupal's default menu system is a pretty stupid idea, especially considering its completely unnecessary. Common language gives us all the words we need. Okay?