Opinion — When a user faces a difficulty, I only know of one suitable option when it comes to usability: It is to make the software take the decision for him (‘best default’). And when such a thing is not feasible, I only know of one fallback option: It is to make a button.
I’m aware this may sound silly to many a developer. Typically, they put the ‘freedom to decide’ or a ‘learning curve’ forward and miss the fact that they should be the ones who should need to make the extra step to use the tool in ‘expert mode’. Open source developers are generally hardly concerned with UI design issues. Even though there may be a lot of money to be made in the field of open source usability.
I’ve these thoughts because Matt Mullenweg, the lead developer of WordPress, triggered a lengthy thread in the WordPress hackers mailing list:
I’m curious how the list thinks the community could be improved to avoid the concerns voiced in comments like this
I found this amusing, in some ways. WordPress is possibly the most powerful distributed conversation tool there is, and this topic ends up in a mailing list. Sad.
This remark set aside, what have we got when we take a closer look at the critics?
- Users don’t want to look for plugins or themes
- Users are not even remotely interested in changing a simple php tag in their template files
- Users wouldn’t care much if someone tried to explain how to do this in a forum
In short: Users want a packaged product, with best defaults, and buttons. Incidentally, that is something akin to the CMS theme I am working on. Using it, Caroline could have added a feature such as ‘recent comments’ to her web site in one click. Not ‘add the following tag here’ (why not a relevant
do_action?) or ‘replace this tag by this new one’ (why not
add_filter?). Just one click in the plugin menu.
There’s not much more to usability besides best defaults and buttons. I should probably mention cancel buttons too. Cancel buttons don’t have to do anything, but it is basic usability to always provide a cancel buttons — Users are scared to death when none is around. Everything
beyond this is about auto-correcting common mistakes and making things look as usual, because errare humanum est and users spend 99% of their time somewhere else.
Consistent with these ideas, I suspect the following usability basics would be more interesting than trivial and/or meaningless details such as resizing the excerpt box and reorganizing the admin menu:
- Deliver a packaged WordPress install with a collection of plugins and pre-built themes that auto-detect said plugins on a
if(function_exists('plugin_blah_blah'))basis like the Semiologic theme and CMS — That way, a user can customize his theme in a mere few clicks and start blogging immediately.
- Deliver a hosted version of WordPress — Users pay to blog. The button should read ‘Buy a hosted WordPress’, not ‘Download WordPress’. Let the default class of users — the ones who pay for their hosting — buy their hosted version of WordPress as the default means of getting the software. Odds are very strong a host will be willing to sponsor WordPress bandwidth and more in exchange for this strategically placed button.
- Add a Preview button — Yes, I’m aware you can mimic this. But add the Preview button — that’s how it’s called. This, the spell checker and the wysiwyg editor are like the most basic features for a publishing tool. No credible usability expert should miss any of these three points in an audit.
- Add a spell checker — Yes, it’s bloat. Include the plugin and enable it by default.
- Hide all the HTML markup via a wysiwyg editor with a built-in image uploader — A debugged version of HTML Area should be present and enabled by default, and Markdown should be the default text rendering engine (textile is not intuitive enough) when HTML Area is disabled. And a hook should make these plugins mutually exclusive.
- Include inline post, comment, category and link editors in the default themes, i.e. a bit like WordPress Touched. Add a readily available new post, new category, and new link buttons, right-click blog components such as ‘Just Blog-it’ for Firefox for each of the main browsers, as well as a
decent search feature on the blog. And there’s hardly any need to go to the scary looking admin area anymore.
- Add an onunload event on editors to trigger a confirmation request when the user leaves without explicitly saving — I can’t be the only one who is losing drafts on Ctrl+w…. An autosave feature would of course be better, but it should not be an option unless you feel like programming a multiple undo button and storing the stack of changes since the post’s creation.
- Replace user levels with user groups — It is more natural and easier to understand. Suggestion: Administrator (may do everything), Editor (may publish and edit posts), Contributer (may submit drafts), Moderator (may edit comments), Registered User (has a login) and Guest (no login).
- Use natural language rather than URIs to insert links — No normal user in his right mind I know of spontaneously writes about
<a href="http://wordpress.org">wordpress</a>. URIs look like throw-up and taste like throw-up. This is because they are throw-up. I suspect users may spontaneously link to [WordPress->] if it results — as does on this web site — in a link to WordPress. My smart links plugin should be available with the release of WordPress 1.5.1.
- Get rid of trackbacks and pingbacks, and use an auto-discovery service instead — I’ve previously discussed what could be a credible alternative to trackbacks and pingbacks on this blog. Said post sucks, but the points remain.
Obviously, there would be a lot to add. Especially if you enter the realm of more complex UI matters. Like contextual help that changes links to the documentation based on what the user is doing, i.e. the context, in addition to being positioned where appropriate. Or posts that auto-discover related posts based on a graph analysis. But I guess the above straightforward and simple points are a good enough start for WordPress, and require little or no effort.
Update: Revisiting this three years after the post, many of these points have been implemented since.