Why WordPress Has Fewer Options, Not More

Andrew Nacin one of the WordPress core developers highlighted a philosophy that WordPress follows by providing decisions, not options. One of the documents linked to in the article points to the WordPress Release Philosophy and more notably, the section of text by GNOME contributor Havoc Pennington.

It turns out that preferences have a cost. Of course, some preferences also have important benefits – and can be crucial interface features. But each one has a price, and you have to carefully consider its value. Many users and developers don’t understand this, and end up with a lot of cost and little value for their preferences dollar.

  • Too many preferences means you can’t find any of them.
  • Preferences really substantively damage QA and testing.
  • Preferences make integration and good UI difficult.
  • The point of a good program is to do something specific and do it well.
  • Preferences keep people from fixing real bugs.
  • Preferences can confuse many users.

I find that if you’re hard-core disciplined about having good defaults that Just Work instead of lazily adding preferences, that naturally leads the overall UI in the right direction. Issues come up via bugzilla or mailing lists or user testing, and you fix them in some way other than adding a preference, and this means you have to think about the right UI and the right way to fix problems. Basically, using preferences as a band-aid is the root of much UI evil.

Andrew mentions that if he had the opportunity, there are at least a half-dozen options that he would remove from WordPress. I’m in that same boat but I of course would add in an option or two to control the behaviour of post revisions. After reading Andrew’s post and listening to Ryan Imel of WPCandy discuss how themes should aim for zero options, I’m beginning to get the feeling that there is a battle afoot. Developers are now being encouraged to aim for zero options. As an end user, I believe this is foolish. I agree that getting something that just works, out of the box with no fuss or muss is awesome. But plugins and themes don’t seem to fit the bill of doing one thing and then doing it well. It may be the case in the beginning of a plugin or themes life but over the course of time, users want more functionality, more customization, which eventually ruins any simplicity the plugin or theme originally had.

Thankfully, the following post by The Theme Foundry nails the point in that it shouldn’t be about Zero options. Instead, developers should focus on presenting the RIGHT options.

We left it in, and actually added a toggle for hiding the author and categories as well. It was sorta painful, but I was beginning to realize the flaw in my philosophy: It’s not about eliminating options, it’s about having the right options. I know, I know – hardly groundbreaking. It’s been said before by many wiser people than myself. But it’s very easy to get caught up in a philosophy without considering the real goal, which is making a pleasant experience for your users.

And this is why I wanted to write this post – to counter-balance the anti-options, anti-configuration sentiment. It’s too easy to get caught up in a cargo cult – I know I did, briefly. Instead of making a theme either fully-customizable or configuration-free, I’ve realized that the ultimate goal is to add “just the right options” to make the user experience more pleasant. I think everybody would agree with that sentiment – but it’s easier said than done

That is a point of view and philosophy I can get behind. Two years ago, I remember myself and many others in the WordPress community hammering plugin and theme developers, especially theme authors on needing to provide more options so that I didn’t have to dive into any code to make changes. They delivered, but now we want them to go back and have as few options as possible. Whatever that perfect balance is between which options are visually present and which are not is what will generated a “Just Works” experience. As a user, if I see too many options, I feel inundated and overwhelmed. If I see too few options, I feel as though I won’t get very far extending the functionality of the plugin or theme without having to know some PHP.

So at the end of the day, as just a normal user, I view all of this as a recipe that appears to be very difficult to get right. Here are a few ingredients to the recipe that I’ve though of.

Know your user base – The more information you have with regards to how users use and interact with your code, the better decisions you’ll be able to make.

I still don’t like to code – I still don’t like the idea of going back in time, 3 years ago where I had to follow instructions on modifying functions.php in order to configure something. So instead of loading up one options page, I appreciate a tab or sub-section with advanced options that I can wade through. I like having the OPTION to DECIDE on viewing the advanced OPTIONS.

The Best Defaults – While W3 Total Cache is an extensive plugin, I love the fact that out of the box, it’s configured by default for most applications. I’m not savvy enough to really dive in and mess with the various options so this is something I really appreciate. Having excellent default configurations I believe goes a long way in accomplishing the goal of “Just Works“.

The bottom line is, I don’t want developers to abandon all options for the sake of doing it. I don’t want to be handed a blank piece of paper and then be told to decide what to do with it. I’m counting on the developer to determine what’s best for me up front but also give me some options to play with on the side. The determination on what those options should be and how they’re presented is one of the key problems for that developer to figure out.

I wonder if developers make good fortune tellers?

10 Comments


  1. One side-effect left out of the discussion is the pain of maintenance that multiple options causes. For example, to provide for a single new option requires a new admin page field, a new admin page if one didn’t exist, and accounting for checks on that option all throughout your code. Reducing options = potential less work down the road.

    Report


  2. I have 2 WordPress powered sites and am beginning development of a third. I migrated to WordPress from Typepad and went to Typepad from Blogger and have been blogging since 2003 merely as a creative outlet so I have been a user for awhile.

    I agree that what we want to see as users are the right options as opposed to no options. I am not a coder, I am all about content. What I look for in any theme or plugin I use are (a) it scratches an itch and (b) it is configurable with plenty of options that may or may not be important to me now but will be perhaps down the line.

    I have always appreciated having an “Advanced Options” feature. It tells me that if the default functionality that I am using ever becomes limited I can customize the plugin or theme to better meet my needs.

    A lot of WordPress users I suspect are like me. They create content and they use WordPress because it is the best, most configurable tool out there. But what we appreciate is that it both works “out of the box” but still allows us to extend its use if we so desire. Taking away options might make sense from a developer standpoint (since I am not a developer I can’t be sure) do not often make sense from a user’s perspective.

    Most plugins that I use rely on the default settings with some advanced options turned on, usually after I understand what they do. This is something I would hate to lose. Simplicity is fine where it makes sense but removing options to me seems to be a retrograde step.

    As a user, I like my options, even if I don’t use most of them because ultimately, somebody does.

    Report


  3. Havoc is the real deal. I recall following his work very closely “back in the day.”

    For both coding and using, I prefer less options. Less options on the UI, less options in the API.

    Fewer plugins.

    My solution is wrapping the WP API calls that I use a lot into a file or files in a theme/lib directory, and load lib from functions.php.

    I’ve just started provisioning lib/ using the Rubygems system. It’s pretty cool to run Bundler and have your php files automatically installed. Or create a gemset targeted to a specific theme. So far, one small gem which is still really rough, but I’m liking how easy it is to use.

    Report


  4. @Matthew McGarity – Compared to the pain of handling the support requests for the commonly-used options that you left out, the pain of adding and maintaining an option is negligible.

    To make it even easier, like most theme shops we’re using an options framework that makes adding and using options super simple. The danger is that it’s actually TOO easy sometimes :D.

    @Jeffro – Thanks for the mention!

    Report


  5. Thanks for writing this post and being willing to publish a contrary opinion.

    As a developer I definitely agree that the trend towards fewer options is troubling. I think “less options” is a fad and too many developers just jump on the bandwagon rather than doing the hard work of implementing progressive disclosure and deciding which options to give. I also think it can be a form of self-centered developer rationalization; it’s easier on developers to provide end-users with less options than addressing legitimate needs or worrying about the moderate-to-advanced user frustration.

    I’m not pointing fingers at anyone in particular, just hoping those who read this and have been following this trend without thinking consider what makes sense vs. defaulting to the flavor of the month.

    Report


  6. Great post and great topic.

    I believe there is one critical point that you touched on gently but missed when it comes to WordPress. “Know Your Userbase” is a very tricky notion, especially with a diverse user base such as the WordPress userbase.

    However, beyond the diversity, I believe there is one user group which is most neglected in the WordPress community. For the sake of simplicity (and for now having to call them the most neglected in the WordPress community) Non-bloggers. I believe this is a huge majority group that includes people such as:
    – New users.
    – Users with low computer literacy (may have a blog but refrain from using it because they can’t get over the learning curve).
    – Users who prefer simplicity and go to something like Tumblr.

    With Non-bloggers you can’t really get to “know them” – they are a silent voice. You couldn’t get much out of them even if you could reach out to them. Yet I believe that failing to address Non-bloggers is a compromise on WordPress’ core mission to democratize publishing. I am under the impression that a core democratic feature is giving everyone (that wants it) a voice. WordPress comes up short as it gives a voice only to those who can figure it out. Unfortunately the deeper you delve into the WordPress community – and as your approach development circles the less interested they are in doing anything about this since they love WordPress as is (with all of its options and features).

    With this in mind I believe there is another critical group of WordPress users which are not even considered part of the WordPress community. This is people who have a commenting account at IntenseDebate. Though they may not consider themselves bloggers, they essentially are – their “blog” is distributed across the websites where they leave comments. Automattic is in a unique position to make build make a bridge between commenting and blogging because they do both (Disqus can’t do this because they only do commenting). Ultimately every IntenseDebate account has the potential to mature into a self-owned web-presence – a blog!

    Both of this groups are systemically alienated by the underlying qualities of the “knowing your userbase” approach. You need to design for them rather then study them … but as Matt himself acknowledges (http://gihyo.jp/dev/serial/01/software_designers/0033) WordPress is not (yet!?) good at doing this.

    Report


  7. If one must code/recode to get the options a site requires, one may as well code the whole site. Sometimes less really is less. Not everyone desires more “less”.

    While WP downloads may be inclining, generally blogging is declining. Are you reading more or fewer blogs these days?

    The WP download numbers are reputation driven. That reputation may not be sustained by offering less, .i.e., fewer options. Is WP becoming “McBlog” software??

    Report


  8. I wish that the ratings of the plugins wasn’t what I believe is arbitrary. I run a gaming website http://wheregamesarefree.com and spent a lot of time looking for the right plugins. I know they say that less is more but, it would be nice if many of these plugins were not so confusing. I am a simple person and prefer things to be easy for a noob like me to understand. I want to enjoy my hobby not kill myself in trying to figure out how to get it to work. Any plugin which the creator cannot sufficiently explain the features is not a plugin I will use. Talk to me like I am a baby.

    Report


  9. I agree. I think many theme options in premium themes can get bulky (load on the site) but then make it confusing on where to find things to make changes AND greatly minimize my option to customize things. A good theme options page does less than more.

    Report

Comments are closed.