Categories
Mozilla

No, we can’t give you the new *and* old UI

I’ve seen several comments all over the place asking why we couldn’t, in Firefox 3, provide an option for users to revert back to the old UI for many things; or, my personal favorite, default to the old UI and make the new UI optional. Today, my goal is to explain why we don’t do this.

I’ll start with the second one since I enjoy it so much. The thing with new software is that users expect something new. If you default to the old UI, your user base is going to wonder what exactly you did in this new release, and why they even bothered upgrading. This only applies to major updates though, as people generally don’t expect anything new out of security updates. This user expectation is why we’ve had some form of visual refresh in almost every major update (at least as long as I’ve been following the project).

Now, why don’t we provide a way to get back to the old UI via a preference (even if it is just a hidden one)? There are actually a number of reasons why this is a bad idea:

  • Performance
  • Code bloat
  • Test coverage
  • Feature bloat

Each time you add a preference, you make that code run a bit slower. In many cases the overhead of dealing with preferences can be dealt with more code, but then you end up with a new problem – code bloat.

Code bloat may seem insignificant to an end user, and it probably doesn’t matter too much to them. That is, until you factor in the fact that more code means more that the developers have to worry about. All that extra code means bugs are more likely to be introduced, and new features take longer to add. Extensive test coverage can help prevent the bugs from creeping in, but it won’t help with new features being developed.

Test coverage doesn’t seem like a big deal when it comes to optional features. “Big deal – you just have to have a few more tests for those options,” right? No, not really. In reality, the code better have every combination of options tested to make sure they work well together, otherwise the bug reports and complaints will come flying in. Now, my probability and statistics is a bit fuzzy, so I hope I’m getting this math right. Let’s say you have just four features, each with only two options. There are 24 possible combinations, or 16 possible combinations that you have to test for. You can see how quickly this will blow up once you start adding more features to test for, as well as more options per feature. It gets pretty ridiculous pretty fast.

I leave feature bloat for last because there are people out there that will disagree with me on this being a bad thing. Giving users lots and lots of choices can quickly result in confusion. Having confused users is a bad thing, because it will end up driving them away from your product. As a result, we try to keep things simple, but at the same time make them useful for the majority of people.

All is not lost, however! The beauty of Firefox (and the Mozilla platform in general) is the extensibility of it. Say you don’t like the new download manager UI – it’s pretty easy to create an add-on that uses a totally different UI. I made sure of this when we were doing these changes. It may not be as easy elsewhere in the application, but there is almost always a way to customize it with an add-on. This is what has made Firefox so successful – if you don’t like something that most people are OK with, you can change it. Keep in mind, there are many core features that were first developed as add-ons (like session restore, the new theme for OS X, the download information in the statusbar).

Categories
Mozilla

Asynchronous Storage API hg mq Repository

I figured it’d be a good idea to get more playtime, as it were, with hg, as well as host my asynchronous storage api stuff for other folks to use to provide feedback. I’ve created a repository based on our lovely documentation, and it is hosted here. Happy testing/playing!

I don’t actually know the best way to use this though, so you are sadly on your own there! (maybe one of our hg experts will come along and comment to help us all out!)

Categories
Mozilla

Asynchronous Storage API

As I’ve previously discussed before, I’m working on a new API for statement execution in our storage module for Firefox 3.1/Gecko 1.9.1 over in Bug 429986. While I got some good initial feedback, I haven’t heard much of anything. I’m getting much closer to being in a fully reviewable state (and I already have sections that I’ve broken off that are up for review), and would really appreciate some more eyeballs looking this over. Feel free to look over the wiki and provide feedback in the newsgroups (mozilla.dev.planning) about it!

Categories
Firefox Personal

A New Download Manager in Firefox 3 Brings a New UI

[I use a Mac, so all the images in this post are of the Mac user interface. The UI for other platforms will differ slightly. Click on pictures to view other sizes.]

Firefox 3 brings a brand new download manager to the scene. There were lots of issues that existed with the old download manager both in terms of the UI and in the code that made it work. So for Firefox 3, we redid the whole thing to provide a better experience all around. It’s one of my favorite features in Firefox 3, but then I’m a bit biased. This post discusses the new features of the UI.

Old Meets New – a UI Comparison

fx2-download

The Firefox 2 download manager (above) would display the download’s icon (but not on Linux), its name, its status, and two text links to open and remove the download. In contrast, the Firefox 3 download manager (below) displays the download’s icon (even on Linux now), it’s name, the time of the download, the download size, and where it was downloaded from. For an active download, the size of the download changes to the amount downloaded so far. The main goal was to provide more useful information to the user.

fx3-download

You might notice, however, that there is now primary UI to open or remove the download. The idea here was to provide a less cluttered UI. However, just like before with Firefox 2, you can open your download by selecting it and pressing enter, double clicking it, or selecting open from the context menu. In fact, the context menu has grown a lot too!

fx2-contextfx3-context

The middle two options provide functionality that was once available from the old properties dialog. That dialog was removed because it was out of place. One of the new features of the new download manager is the ability to select more than one download (as hinted to by the “Select All” entry in the context menu). You can select multiple downloads (below) to perform an action on them such as remove, pause, or resume.

fx3-activefx3-paused

Searching

The new download manager also adds the ability to search through your download history. Let’s say that you recently downloaded a bunch of pdf documentation from threadingbuildingblocks.org and want to open it. The folder where all your downloads go is hopelessly cluttered, so you open up the download manager, and search for “pdf threading”. In a matter of moments, you are presented with the documents you wanted so you can now open them, or if they were deleted, you can re-download them.

fx3-search

Status Bar Indication

Perhaps the most useful feature that has been added in Firefox 3 is a little status indicator that can be found at the bottom right of your browser window:

fx3-statusbar

Firefox will now let you know how much time is left for your active downloads. When you click on the indicator, it will open up so you can see more detailed information about your active downloads.

That wraps up the changes to the UI. Stay tuned for a post about what new features have been added to the download manager in Firefox 3!

Categories
Mozilla

mozStorage Async API

Over in Bug 429986, I’m working on an asynchronous API for storage statements. In an effort to get more feedback on this proposal (and more ideas and brains thinking about it), I’m posting this to Planet Mozilla. So please, take a look at the proposed API with code samples, and then provide some feedback in mozilla.dev.planning.