The Inside Track on Firefox Development.

Main | July 2003 »

January 26, 2003

Blood On My Hands

Last night I published a lengthy, rambling piece describing what I saw to be wrong with Mozilla today, from horrendous UI offenses to the more minor. The more observant (and bonsai-equipped) among you may say, "but Ben, you wrote some of those!" For the record, I want to state that in no way did I want to absolve responsibility for my part played in those things. If so, why would I mention them? My memory isn't that short. But, for the interested, from the list that I rattled off here are the things I have been involved with, and the extent of my involvement:

  • "When Mozilla starts, open..." Fonts and Colours and Cache control. - During my early days as preferences Front End owner, I revamped the preferences dialog several times, which included touching and updating panels.
  • "Languages and Content Packs" - much of the logistical work regarding bundling and packaging of these components was done by me, (although let the record also show, against my wishes, you can check the debate out for yourself in the relevant bug, the number of which I do not have on hand)
  • Search tab opening/Sidebar Search Preference. I'm not going to go into this in detail but let's just say I was there as this one played out.
  • Form Manager - I have in the past devoted numerous hours to FE development for this broken form-fill model, not all of it has been checked in however.
  • Mousewheel preferences - I designed this panel originally and stubbornly defended it for a while.
  • I remember doing something on "System" but I can't remember what.

As you can see, at least some of the problems or excess was created by me, and if not created, then certainly opportunities to clean up were missed in various rewrites. I am as deeply entangled in this mess as anyone, and I would like to play a part in fixing it, if the opportunity presents itself. If that weren't the case, I really would have "given up", and gone to use Internet Explorer.

Posted by ben at 12:25 PM | Comments (2)

January 25, 2003

Why the Mozilla Browser Sucks

I just downloaded my first Mozilla build for a long while. While I only recently leapt from the formal umbrella of the 'browser group' at Netscape, in reality I haven't worked on the Mozilla/Netscape browser since early 2002. As a result, I have used Mozilla and Phoenix in solely in a user-level capacity for the past while. The last build I downloaded was on the 21st of November, 2002. I use that build for mail only, and Phoenix as my web browser.

Mozilla was never a perfect browser, its UI always somewhat cluttered and inconsistent, designed by many people for many purposes. I had heard mutterings in the past couple of months that it was becoming worse, so eventually I had to download it and see for myself. I won't say I was shocked - too melodramatic - rather, I am a little sad to see that Mozilla has not learned the lesson that many of us had hoped Phoenix would have taught it.

The best demonstration of this is the preferences dialog. The preferences dialog has been a ground for many a battle over one feature or another. Over-zealous engineers and power users slog with user experience staff and those wishing to keep fringe material out of the application. Despite best efforts, today Mozilla's collection of preferences remains one of the largest, most unwieldy and ultimately least useful of any in a browsing application.

Take a look at Mozilla's undisputed target on Windows - Microsoft Internet Explorer. I haven't really done a study on all of IE's preferences, but I can tell you one thing: it puts all the preferences that you commonly want to use on the first tab. Setting your home page, removing traces of your browsing (cache and history) are well represented. Some other display options are farmed out to separate dialogs and tabs take care of the more advanced and esoteric options, such as they are.

Mozilla's preferences opens with a selection of options for the browser window, including the useful homepage (but saddled with a useless set of options specifying whether or not the browser starts with a blank page, the home page or, most idiotically, last page visited). Default browser selection - something that is done only once if that often, receives prominent treatment.

To cover all of the Mozilla Browser's unnecessary preferences here in detail would take pages, so instead I'll simply list a few, my guess at how they came to be included, and my suggested remedy.

  • "When Mozilla starts, open..." (4.x legacy, possibly for installs that start mail by default? Solution: use shortcuts, or separate application stubs and GRE)
  • "Show Web Site Icons" (Some whiny little bitches put up the fight of the century when this useful and appealing enhancement was added a year or so ago, and so now we have to deal with an extra preference. Solution: a raised middle finger)
  • The whole fonts and colours settings should be compacted. (Fonts was always a separate panel in Netscape 4.x, colours used to be in the Navigator panel but an abundance of preferences there forced them out. Solution: see Phoenix as a reference).
  • Languages and Content Packs (Let me explain this one to you in a little detail. A "content pack" is a set of factory defaults, e.g. localized search engine URLs, default bookmarks, etc. The content pack UI allows you to switch between these defaults. Note that as soon as you edit your bookmarks, a content pack switch will never affect them. It is perhaps marginally conceivable that some small subset people might want to change languages dynamically. But content packs boggle the mind. That there is a market that regularly finds time to switch search engine URLs in their browser suggests that there are people out there that need to be drafted. Solution: Long walk off a short pier.)
  • Netscape Plugin Finder Service Checkbox. I'm not quite sure what this does or why it's here, but Internet Explorer manages to find plugins dynamically without any checkboxes, so I'm sure it's some sort of cop-out. I bet this is shipped default to on in Netscape builds (I don't know, I haven't looked) to force people to visit Netscape.com.
  • Domain Guessing - Why?
  • Location bar autocomplete - defaults are great, no preferences necessary.
  • Search tab opening. Bah. Sidebar Search tab preference. BAH! Marketing vs. Engineer! Fallout! Worp! Worp! Worp!
  • Download manager offers a set of window controls and yet no control for a default download directory so as to facilitate automatic downloads.
  • I'm sure some people find image blocking useful, but it, and the animated gif controls are things that probably belong in add-ons.
  • Popup Window controls are relatively hidden, and the sound selection feature makes no mention or enforcement of what type of sound should be picked, and no defaults are offered.
  • Form Manager Must Die.
  • Encrypting vs. Obscuring? You've got to be kidding me.
  • Master Password? Huh?
  • "SSL Protocol versions"? And better yet - Edit Ciphers! I am SO glad that I can choose to disable the 256-bit AES encryption with RSA, DHE and SHA1 MAC! My browsing experience would have been ruined otherwise. Sheesh.
  • CRL? OCSP? What's wrong with this browser! Jesus H. Christ!
  • Quicklaunch becomes redundant when the browser models itself after Phoenix.
  • Keyboard Navigation - oy. Add on.
  • Cache control by KB seems a little too pedantic. How about a %age slider like IE, or at least control by megabyte?
  • HTTP Networking! Hahahahahahah!
  • Mousewheel preferences -> Add on.
  • System - unnecessarily fine granuality. I can't imagine anyone wanting this in an add on. All of these items should be set automatically when the user sets their default browser. Having both these options and the conceptually simpler "Default Browser" button seems redundant.

OK, so that's quite a few, but be thankful I spared you a tour of the rest of the app.

How did we get here?

Other people have said it before, in more compact pieces, but I think it merits saying again because apparently no one is listening:

Basically it was too many engineers over-engineering their features, designing for every possible use (and some not-possible uses), even if the number of people who would actually consider doing that tends towards zero. No real checks and balances, and no real means of implementing such checks and balances. (Believe me, it's been discussed, ad nauseam. I was there. I had the misfortune of owning Mozilla UI for a while, and fighting the tidal waves of crap that regularly smashed against the rocks of cvs.mozilla.org)

Too many stuck up PLBs who think that their worthless feature simply must get in, or that their opinion must be heeded. Don't get me wrong, I'm as arrogant a son of a bitch as the next guy and I've made my share of mistakes in the past when developing UI, but at least I'm not arguing for a preference to toggle view-source syntax highlighting or trying to needlessly complicate UI because I can't find a job/girlfriend/real hobby, etc.

Thirdly, concerns of stakeholders that are, when the big picture is considered, really rather over-inflated. Many features are added in the name of some subset of international users, or some subset of people wanting fine control over security (see "Cyphers" above). Considering that Mozilla distributors (or at least, Mozilla's largest distributor to date - Netscape) target consumers, it would seem appropriate that these additional components be optional accessories. Custom installs for companies and international markets could easily be produced that feature these controls.

Resolution

It's so hard to control, revise and keep tabs on UI development as it occurs. Even the most innocent looking XUL or DTD change can have far reaching implications and dramatically affect usability. Really what is necessary is either a small group of developers with a well understood and focused vision, or a set of UI specs up front. The latter is hard to come by but Phoenix has largely proved the former is possible.

Political problems can be solved according to the above described vision/UI specifications by the aforementioned raising of the middle finger.

Stakeholder requirements can be solved with the creation of add-on packages and custom distributions on a need-to-use basis.

The Great Tragedy

Is that what I've described in the Resolution section is very possible. It's a bit of work, most of it tedious, but the lifting has been done by the talented engineers that have made Mozilla and the XPToolkit one of the most flexible application development platforms today. It is so frustrating to see Mozilla hobble along like this when paradise is within grasp. I figure it'd take a few competent and motivated engineers no more than 4 months to sort this out, if given free reign.

But it won't happen, and that's the tragedy. At least not soon. I've got more to say, but I feel this has dragged on far enough, and if I still have the attention of any of you, congratulations on making it through what probably is my longest journal entry.

Posted by ben at 10:33 PM | Comments (9)