2006-01-17

On Firefox extensions, stability, and standardization

I was very long overdue starting fresh with a new firefox profile, my prior one having made my installation very prone to frequent browser crashes, which isn't something you should just accept and live with. Firefox installations, much like Windows installations, have a tendency to rot and degrade with time, especially if you try out software by third party sources (which equals "not from the Mozilla foundation", in the case of firefox and "not from Microsoft", for Windows).

This is, of course, a natural phenomenon, and not just bashing programmers in general. All programmers makes mistakes, once in a while, and without quality control you know you can safely place your trust in, every piece of software you install on a computer system may jeopardize the stability of other related software. In a playful environment such as an open source browser that pretty much invites the world to poke about with it, or in an operating system used by a large part of the desktop machines throughout the world, the overall effect is more or less inevitable. Especially given my computing habits.

So I started a new profile. To those of you who take on the same procedure for the same primary reasons, I would recommend doing what I first thought I would: to not look at your former list of extensions, when reinstalling. Only pick the select few you know you use and without which you just don't feel comfortable. In my case, those would be something like


-- those being the ones I really wouldn't want to live without. (Nor migrate to competing browsers who lack their functionality.) Some of them, like the Google Toolbar and keyconfig, only very recently made the list; the Google toolbar for having previously been a big ugly beastly thing rather than a set of slim, independently draggable widgets to have just where I want them, for instance. Stylish, for being a relatively obscure sister of Greasemonkey, for installing user css just as conveniently as user scripts with Greasemonkey (never again shall I touch a Greasemonkey script that just adds styling to a site) and keyconfig, for plain not working in my probably severely bitrot ridden former configuration.

Stylish is worth mentioning a bit more in-depth, by the way, as I believe user css is still not a very familiar concept in large circles. First off, there are two domains for user css, at least in mozilla descendants: the HTML namespace, where web sites specify styles and layout for their page markup bone structure to make the colorful, pleasant eye candy web we see, and the XUL namespace, where browser developers style the bone structure of the browser interface itself -- the looks of buttons, bookmarks and menus, for instance. Stylish lets you add your own configuration on/off toggles to restyle either, and in the case of HTML, to do it on a site by site basis, just as does Greasemonkey for javascript code. And, hopefully, eventually to share them as *.user.css files we could set up a whole new section on userscripts.org for.

This way, I can quite comfortably remove the (to me) completely useless Go and Help menus, and get some more space for gadgets I do use, such as the Web Developer toolbar toggle, the Google search field and a GMail icon. And a slew of other things too, at least until I figure out how to add keyboard shortcuts to generic widgets in my browser interface, so I can for instance zoom up a directory level in the URL without clicking the Google Toolbar provided "parent directory" button, which recently succeeded my minimal ".." bookmarklet (which you might opt to bookmark; click it, and you will presently come to a non-existant page, since this blog lives in a place where I can't make a proper site structure with index pages strewn throughout it in suitable spots in URL space).

Input on how to add such key bindings is highly welcome, by the way. In this department, competing browsers such as Opera are still light years ahead, having long ago standardized and centralized all key bindings configuration. Keyconfig doesn't solve more than making it possible to add new keyboard shortcuts; for some things that already was bound, a clashing shortcut you add will not replace the old binding, but trigger both functions. Let's hope that solutions are not all too far off.

Anyway, I did not opt to installing the bare minimum extension set. Where I had previously had perhaps a screenful, say twenty, extensions, I now browsed through the first fifteen (of 97, at present) pages of popular firefox extensions at Mozilla Update, installing those I deemed interesting and useful enough to merit a peek. This yielded a much larger list of (mostly very light-weight) extensions, now closer to 50, all in all. I'll share some tips as I start to discover which ones are the true gems.

If you do this at home, you should first be aware of one thing: extensions typically add lots and lots of status bar buttons, Tools menu items, submenus, and web page context menus, especially when you install them by the dozen. You will end up with an overstacked browser interface that hits usability hard. And on the status bar front, Mozilla development has not matured nearly as much as on the toolbar front, which unfortunately are two very different fronts, so you won't be able to click and drag to relocate or completely drop the bits you want elsewhere, or not at all. Only the really good ones, such as that of Adblock.

Reordering the list of extensions may change the order of icons in your status bar, but it's neither easy nor necessarily possible to get them how you want them, if you have strict preferences about looks.

I would like to take this opportunity to recommend all mozilla extension authors to make the things you add to menus and the status bar, to provide an option not to in your extension's configuration dialog, the one available from the Extensions menu. The good thing about that route to configuration, as compared to, for instance, adding it to some menu or keyboard shortcut, is that it is standardized across all extensions, so your user base will be able to find it, and it will neither pollute key binding nor menu space for your users.

It also will not make those bindings clash with those of other extensions that also chose Ctrl+Shift+P for preferences. Pardon me for stating it in this not very flattering way, but when you think about it, it really is kind of an obvious source of trouble, wouldn't you say?

Another thing worth doing, usability wise, is trying to go with how applications usually behave. If your status bar icon has a menu you can access, it very frequently sits on the right mouse button, for instance. Similarly, if it has an on/off toggle bound to same icon, it very frequently sits on the left mouse button. And if you have a mode toggle that does not live in the status bar, try making it a widget that can be dragged to a toolbar somewhere, or in any case at least resist the temptation of putting it in a context menu. Imitating how others do lowers adoption thresholds and improves usability. Mainstream is good, in this context.

Thanks. (Your less outspoken user base will also silently be very thankful to you.) Now I'm looking forward to a few days of adding user styles to filter out some not very wanted recent sightings in my Tools menu, also conveniently made available from my Extensions menu where I roam in times of need. Or, actually, looking forward to having already done that and moved on to the pleasant experience of a slim weasel of a firefox, packed with a feature set very hard to beat. Without coming up with new and extraordinary yet-unthought-of extensions.

And do take inspiration from other extension wrights living in the creative field between excellence of design, visualization and use case, such as the just recently announced Safari Web Inspector, if you have a mac around (via Ajaxian). You can be as good, or better. It looks good on your CV list of accomplishments, too.
blog comments powered by Disqus