Dear Mozilla: Fix Your Damn Browser Already

Longtime Readers of this blog will be aware that I have been a fan of Mozilla for a long time. There’s nearly ten years of Mozilla advocacy tucked away in the JWM archives. I’ve been on the Mozilla fanboy train since before Firefox even existed — all the way back to the original Mozilla Suite’s Milestone 17 release, the first version after the Netscape exodus I used regularly, which Wikipedia tells me shipped on August 7, 2000. That’s back when Bill Clinton was president. So I don’t like that I have to write this post, but I calls ’em like I sees ’em.

And on the subject of Firefox as it exists today, the way I sees ’em is this: Mozilla, you need to fix your damn browser.

Firefox, on Linux at least, is busted. It’s busted so bad that it’s painful to use. And it’s been this way ever since Firefox 3 launched — three years ago.

The culprit, I believe, is the mechanism that modern versions of Firefox use to keep track of your bookmarks and browsing history. Before Firefox 3, bookmarks and history were stored in separate places; your bookmark list was stored as an HTML file — an approach that went all the way back to the original Mosaic browser of the early 1990s — and history was stored in a custom database called “Mork“, whose design was memorably described by Jamie Zawinski in 2004 as “the single most braindamaged file format that I have ever seen in my nineteen year career.”

As Zawinski’s testimony should make clear, working with those old tools was painful for the programmers involved, and as the browser grew in complexity the limitations they imposed became more and more acute. So for Firefox 3, Mozilla scrapped them both, replacing them with a new, unified system known as “Places.”

The key shift that Places embodied was that instead of being scattered across multiple poorly-documented data stores, history data (including bookmarks) would now be stored in a single data store, running on the popular embedded database SQLite — which meant that all that data could now be queried in more or less the same way as any other relational database. That opened up a whole new range of feature possibilities, such as Firefox’s Awesome Bar, which also shipped with Firefox 3; the Awesome Bar put your browsing history at your fingertips in a way that the old systems could never have supported.

Which was great! Until it slowly began to become clear that Places brought with it a bunch of problems of its own. From Firefox 3 on, I began to notice that Firefox was hanging, and hanging a lot. Worse, it was hanging more and more as time went on. And the hangs tended to pop up when doing something history-related, like clicking the Back button, or typing something into the Awesome Bar.

The culprit, as far as I can tell, is Places — or, more specifically, Places’ SQLite backend. I’m not enough of an expert on either Firefox or SQLite’s internals to know which one is really responsible. All I know is that, once you made the move to Firefox 3, you started to notice the browser getting slower and slower, and hanging more and more; and the advice you got on how to fix that kept coming back to suggestions like “use SQLite’s VACUUM command to remove empty space from your Places database” and “your Places database is fragmented; delete it and start over with a clean one“.

Which, not to put too fine a point on it, but what the hell? I’m running a Web browser here, not an Oracle cluster. I shouldn’t need to be a freaking DBA to keep my browser running. And that’s not even the worst part; the worst part is that the only advice that really stops the problems — blowing away your Places database altogether and starting fresh — totally kills the value of the Awesome Bar. The Awesome Bar is awesome because it uses Firefox’s memory of your history to supplement your own; it helps you find sites you visited long ago and only vaguely remember now. Every time you blow away the Places database all that memory is wiped clean, which makes the Awesome Bar pretty non-Awesome.

Mozilla clearly knows these problems exist; mentions of them have popped up periodically in various Firefox blogs and forums ever since Places landed. And various people make noises about fixing them. But they never seem to get fixed. I’m on Firefox 7 now, and Firefox 8 is coming next month, and yet I’m still suffering from these painful performance issues that have lingered since Firefox 3.

That’s unacceptable.

There’s lots of great stuff coming down the pike in upcoming versions of Firefox. I find that I don’t really care about any of them anymore. What I care about is a browser that doesn’t require me to muck about with SQLite terminal commands, or manually erase history files every six to eight weeks.

A browser, in other words, that’s usable. A browser that isn’t constantly hanging.

Can Mozilla deliver that browser? For the first time in almost a decade, I’m starting to doubt it.

UPDATE (December 20): Things have gotten better since I wrote this post, thankfully.