Firefox makes a decision, removes an option

Back in 2011, I wrote about how we need to make decisions in open source. This is not a new idea — it is rooted in the guiding philosophies for WordPress to make decisions, not options.

Perhaps unsurprisingly, Hacker News is now up in arms about Firefox 23 removing the “Disable Javascript” option. I’m really glad to see ex-Mozilla guy Gregory Koberger with the top comment there, linking to a fantastic piece called Checkboxes that kill your product. “A little historical baggage can be a dangerous thing when multiplied by a few hundred million individuals,” wrote Alex Limi, who does product design strategy at Mozilla. (I had a chance to meet Gregory at a conference in 2011 and he’s a great web dev follow on Twitter.)

In WordPress 3.5, I spearheaded a quiet but major purge of UI options. We removed ten of them. And we moved another off its own page, which let us drop down to six settings pages, down from eight in 2010. My napkin math shows we removed 15 percent of all settings. That’s a huge improvement. Some of these were break-your-site options. Others might cause confusion. And we have ongoing efforts to simplify or improve a few other settings as well.

When talking about decisions versus options, I often tell the story of Firefox 4’s change to tabs on top. I even watched a seven-minute YouTube video explaining exactly why this was a better user experience. (And I couldn’t agree more.) But then, at the end of the video, after all of the convincing arguments, they mention there is an option to put it back. My heart sank. It was a compelling video, but the community forced them to compromise by keeping in core a completely separate workflow, despite making a strong statement that it was clearly inferior. Firefox is highly extensible. An extension could have changed it back. By keeping it in Firefox core, you now have double the user flows to test, your QA testing suffers, users suffer, everything suffers.

Firefox may be the people’s browser, it may be the one true open browser project, but that doesn’t mean it is a kitchen sink. I didn’t actually realize that Firefox still had the Disable JavaScript option. I have been using an extension to toggle JavaScript in Firefox, as sometimes I have to test no-JS situations. The fact that I didn’t know the option existed, though, is only one indication that this is a problem. This single option enables a user to do so much damage to their web browsing experience that it is absurd for it to exist. This is Limi’s point.

I can’t quote from the writings of GNOME contributor Havoc Pennington enough. His posts did a lot to inform early development of WordPress, and continue to make an impact today. Here’s what I shared in 2011:

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.

For more written by Pennington, see these essays from 2002 and 2004.

Perhaps tellingly, I also wrote then “WordPress is known for its simplicity and usability, but I can still think of a half-dozen options I wouldn’t hesitate to remove under the right circumstances.” In WordPress 3.5, the circumstances were right. Promise kept!

Addendum: In that long Hacker News thread (300 comments and climbing) Gregory also commented:

Try an extension? Power users aren’t the target market for this decision, and that’s why add-ons exist.

This is also a great time to review the sections Designing for the Majority and The Vocal Minority on the WordPress philosophy page.

Published by

Andrew Nacin

Lead developer of WordPress, living in Washington, D.C. Follow me on Twitter.

17 thoughts on “Firefox makes a decision, removes an option”

  1. “But then, at the end of the video, after all of the convincing arguments, they mention there is an option to put it back.”

    Microsoft had choice to give users option to have start menu button in Windows 8, but decided to push it “the hard way”.

    At the moment Win8 adoption still struggles, most of the Win8 sales to enterprises are Win7 PCs with the option to upgrade, they received all kinds of negative impact from the bad press releases, etc.

    The moral – you don’t change major features without giving an option to revert. Let the users decide what is best for them.

    1. I don’t think Microsoft is a good example here. They removed an iconic user interface that everyone since 1995 was familiar with. Nothing was wrong with it, they just wanted to go in a different direction. There’s a huge difference between improving the user experience and innovating the user experience. Users should not be burdened with the decisions that we ourselves should make — that’s kind of the point of this post and the linked essays.

      1. Disagree. I think Microsoft is an excellent example. Decisions that affect the user experience are the very thing that this post is about, is it not? Whether it “improves” it vs. “innovating” it, that’s all a matter of opinion.

        1. You miss the point.

          It’s not about UX. it’s about developer experience.

          Re-read his post.

          By supporting multiple things, you fragment your testing and maintenance. That results in a fragmented project.

  2. My first reaction was a gasp, as I too need to test with and without JS. But then I realized the reason I have to test with and without JS. Because people turn it off! For no reason. And make my coding and testing much more complex.

    So I roundly applaud both this decision and your reasoning above. Making me rethink the options in my app now too…

  3. I agree with your basic sentiment – everything and the kitchen sink in options seems a bit much and programming for a large array of possibilities is surely expensive. But I completely sympathize with being able to disable scripts. I surf 100% of the time with scripts disabled via add-ons to my browsers. When I get to a site that I trust and that does not function well without scripts then and only then do I enable scripting for that site. In other words I use a white-list approach to scripting. Scripts have been one of the most potent vectors for trouble on the internet. More people should turn them off by default and Web designers should code so they are prepared for that. If I arrive at a web site that is really crippled without scripts, I am likely to just close it. Someone who cares so little for the user’s preference on this issue doesn’t apparently want my business very much.

    1. The point is, this is not something for most users. Users who actually know what JavaScript is and want to disable it can simply install an extension. You said it yourself: you disable them via add-ons to your browsers. I’ll also note “browsers” — how common of a use case is it for someone to use multiple browsers? Or to even understand that there are options available beyond what they’re using?

      Bottom line: Users should not be presented with options that they don’t understand. Or shouldn’t need to understand, either.

      1. I agree with your bottom line. Plus, turning on and off options is a pain, with so many who can remember where they are in the choices? Purpose built extensions are a much better way to accomplish the fine-tuning that power users want.

    2. Can i ask you why do you disable js by default? There are so many nice things around us because of js, you simply loose a lot of today’s websites because of this.

      1. JS gives too much power to the browser to make changes to my system without my permission. Malicious web sites, or non-malicious web sites that have been hacked, are a common vector for trouble on the internet. I spend most of my browsing time searching for solid information and often the “nice things” web site designers add to their sites with scripts are just useless distractions that get in my way. If I land somewhere with solid information and the lack of scripts gets in the way of functionality, I can turn them back on for that site with two mouse clicks.

  4. Good thing all of users can be reduced to a lowest common denominator, so I get to go find an extension or paste some code because Gertie Tuttle can’t figure out what something means on the nursing home computer.

    I used to report bugs in Seamonkey, but I stopped because instead of fixing it the problematic feature would sometimes be disabled or removed. You call it streamlining (and I get that it can be a good thing), I sometimes call it laziness and disregard for the competent user.

    Finding a plugin sounds so easy, but it’s often a brush-off: Because of Mozilla’s own version scheme, plugins would often stop working needlessly when the browser was updated, thus eliminating that solution, even though the plugin would be viable other than having the wrong version number. They took sweet time fixing that issue, guess they were too busy burning checkboxes.

    Your article, which is fine in many ways, doesn’t delve into programmer preferences; some bugs aren’t any fun and get little attention, despite exasperating users. Nothing on Firefox memory leaks mentioned here, sore subject and ignored for years if not a decade. They had time to delete features and have meetings and write articles and make videos and build a mobile OS, but they didn’t find time for memory leaks. Consider your true motives when acting.

    If you’re going to streamline, consider doing a follow up and make sure the competent user has a path to what they need to do. Maybe even offer up a simple plugin or some code on the wiki so the competent user who is not quite a programmer can get their thing done with a little cut/paste.

    The danger is becoming what Apple is now, a company that has so oversimplified things that core issues are ignored and so much functionality has been removed that I’m looking at a platform change next time. When it becomes easier to learn the competitor than use your product, you’re on your way to becoming Moveable Type.

  5. Javascript is about to join Flash in my list of permanently disabled browser features. I’m fed up with the thoughtless designs, pushy features and mass resource consumption design features. If FF23 won’t let me disable JS, no more updates.

  6. The third advantage to online advertising is your competitors.

    Use each of these objects. A common example for variable schedules of reinforcement can be combined with the reciprocation
    online advertising strategy. Now you might wonder as to what and how to leverage it.
    With this tactic, the idea is to present yourself in a better position.

    Here is my web page global ims media marketing

  7. This is an asinine comment:

    “This single option enables a user to do so much damage to their web browsing experience that it is absurd for it to exist. This is Limi’s point.”

    Are you going to decide that I’m not qualified to run my own life and subsequently attempt to do it for me? You’ve no right to people’s decisions. If they don’t want Javascript, they don’t want Javascript. If you want to give up your choice and personal responsibility to descend into permanent prepubescence then you’re free to do that. However, don’t expect me to follow you.

    1. Absolutely not. Feel free to control your browsing experience. The total control Firefox gives its users is very likely why you use it. There’s no good reason why this should be a user interface checkbox for the hundreds of millions of users who use Firefox. You can simply use a Firefox extension — and I’m going to guess you have a few installed already. Those who create software aren’t running your life just because they decide to ship opinionated software.

  8. I don’t agree.

    They are empowering the ones who make those “impossible” to close pop-ups. Users will start going to about:config and break things from there.

Comments are closed.