Deprecated: Assigning the return value of new by reference is deprecated in /home/bgoodger/bengoodger.com/wp-settings.php on line 512

Deprecated: Assigning the return value of new by reference is deprecated in /home/bgoodger/bengoodger.com/wp-settings.php on line 527

Deprecated: Assigning the return value of new by reference is deprecated in /home/bgoodger/bengoodger.com/wp-settings.php on line 534

Deprecated: Assigning the return value of new by reference is deprecated in /home/bgoodger/bengoodger.com/wp-settings.php on line 570

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/bgoodger/bengoodger.com/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/bgoodger/bengoodger.com/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el(&$output) in /home/bgoodger/bengoodger.com/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el(&$output) in /home/bgoodger/bengoodger.com/wp-includes/classes.php on line 1199

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/bgoodger/bengoodger.com/wp-includes/classes.php on line 1244

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/bgoodger/bengoodger.com/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/bgoodger/bengoodger.com/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el(&$output) in /home/bgoodger/bengoodger.com/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el(&$output) in /home/bgoodger/bengoodger.com/wp-includes/classes.php on line 1391

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el(&$output) in /home/bgoodger/bengoodger.com/wp-includes/classes.php on line 1442

Strict Standards: Redefining already defined constructor for class wpdb in /home/bgoodger/bengoodger.com/wp-includes/wp-db.php on line 306

Deprecated: Assigning the return value of new by reference is deprecated in /home/bgoodger/bengoodger.com/wp-includes/cache.php on line 103

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /home/bgoodger/bengoodger.com/wp-includes/cache.php on line 431

Deprecated: Assigning the return value of new by reference is deprecated in /home/bgoodger/bengoodger.com/wp-includes/query.php on line 61

Deprecated: Assigning the return value of new by reference is deprecated in /home/bgoodger/bengoodger.com/wp-includes/theme.php on line 1109

Strict Standards: Declaration of Walker_Comment::start_lvl() should be compatible with Walker::start_lvl(&$output) in /home/bgoodger/bengoodger.com/wp-includes/comment-template.php on line 1266

Strict Standards: Declaration of Walker_Comment::end_lvl() should be compatible with Walker::end_lvl(&$output) in /home/bgoodger/bengoodger.com/wp-includes/comment-template.php on line 1266

Strict Standards: Declaration of Walker_Comment::start_el() should be compatible with Walker::start_el(&$output) in /home/bgoodger/bengoodger.com/wp-includes/comment-template.php on line 1266

Strict Standards: Declaration of Walker_Comment::end_el() should be compatible with Walker::end_el(&$output) in /home/bgoodger/bengoodger.com/wp-includes/comment-template.php on line 1266

Strict Standards: Redefining already defined constructor for class WP_Dependencies in /home/bgoodger/bengoodger.com/wp-includes/class.wp-dependencies.php on line 31

Strict Standards: Redefining already defined constructor for class WP_Http in /home/bgoodger/bengoodger.com/wp-includes/http.php on line 61
millennium | The Legacy Straightjacket
A Weblog by Ben Goodger

September 23, 2009

I was reading the comments thread on Slashdot about the new Firefox UI design. One comment referenced a mozilla bug, “418864 - Bookmark contextual dialog is not resizable.”

One comment reads: “I think it’s a poor design not to provide the user an option to [..] revert things back to the way it was before in older Firefox version.”

Regardless of whether or not the bug itself is worth fixing or not, I think this specific sentiment is actually dangerous. I’ve noticed a growing amount of it in the discussion threads surrounding Firefox UI design.

It’s dangerous because it means for every new feature or modification to the UI, the cost doubles to include a legacy code path. Over time, the effect of this is that the codebase bloats without bound, beyond the capabilities of your testing staff and quality slips. It’s dangerous because this raises the opportunity cost to explore new UI designs. As a result things change less.

What has made Chrome successful I think in UI design is that we have pushed hard to retain a consistent core vision that the team at large understands but where the design is done by a smaller core group. Glen mentioned to me once that his theory is that the more people you add to a design process the slower it becomes and the less productive output you yield. This might seem at odds with Mozilla’s “inclusive” approach to software development but I’ll just note that in the early days of Firefox the team was much smaller, and as a result could make rapid progress. There were times when various elements within the community wanted something and the answer was simply “no” - no option for the old way, no promise to support it via extensions. If you can make it work, good for you. But that’s the cost of progress.

These days, Mozilla has some talented visual designers contributing to it. The challenge for them will be to give them the creative autonomy and the ability to say “no” so that the UX aspect of the project not to get mired in quicksand.

Comments

One Response to “The Legacy Straightjacket”

Comments are Closed