Since Chromium became available in the Crunchbang/Debian repositories, I’ve pretty much switched away from Firefox entirely. Lately, though, I’m coming to realize the shortcomings of Chromium. If you’re an Emacs user, or if you appreciate software with great extensibility, I’d assert that Firefox has more to offer than Chromium. In fact, Firefox is a bit like the spiritual successor to Emacs in the web browser world. A great example of that modularity is the Conkeror web browser, based on Mozilla’s XULRunner. It’s a neat piece of software, but this post is about Firefox itself, and how its extensibility provides its users with a better experience than Chromium’s model can.
One example is in the growth of web applications. Many web apps rely on keyboard shortcuts to emulate the functionality of their native counterparts. Ymacs is a great example; it is a web-based editor that has an editing experience much like Emacs, but in a way that can be embedded in web pages, and it comes complete with a full complement of emacs shortcuts. Unfortunately, Chromium has no provision for overriding some of its built-in shortcuts, making web applications like Ymacs provide a crippled experience, at best.
My second example is the ability to rebind shortcuts not from within a webpage, but via browser add-ons. Firefox’s extension system allows for key rebinding, and though I’ve toyed with a few key binding add-ons in the past, none have ever been as good as KeySnail, which provides a full experience for Emacs users in the browser, often in subtle ways. Since I switched to touch typing in 2007, it irks me every time I have to move my hands off the home row to do anything. Using Ctrl-l to move to the address bar is fabulous, but as soon as I want to choose one of the comlpletions in Chromium, I have to move to the arrow keys. Firefox usefully allows me to use tab, but KeySnail restores the Emacs-like behavior that uses Ctrl-n and Ctrl-p to move down and up through the list. It’s hard to explain why that’s so refreshing, but it is small things like that feature that are bringing me back to Firefox.
Chromium doesn’t provide this extensibility, and does so primarily in the name of security. This is a valid position for an application whose sole purpose is accessing documents and running programs that are loaded from remote resources on an untrusted network. But there is always cost when you limit the extensibility of an application. This cost can be characterized primarily in terms of two dimensions:
- You are assuming, as an application developer, that you have made your application sufficiently accessible for your user base.
- You are assuming, as an application developer, that you have anticipated and accounted for all the ways your users might want to leverage your application.
Both of these assumptions are naive. In may case, I find that most browsers are far too mouse-driven, which results in RSI for me. Even most conventional keyboard shortcuts necessitate moving my hands from the home row, which I find difficult to sustain (e.g. navigating browser history with the arrow keys). That’s why KeySnail is such a boon for me; I keep my hands in a comfortable position but can still navigate with ease. Essentially, it ends up being an accessibility issue.
Similarly, I don’t imagine that the original developers of Netscape/Phoenix/Firebird/Firefox imagined that someone would extend the browser to become a full-fledged FTP client, IRC client or RSS reader, but Firefox extensions exist to build new applications inside of Firefox to accomplish all of these. If your application has a good API, people will find awesome things to do with it.
The most successful applications, both in terms of number of users at once as well as users over time (i.e. longevity) have consistently allowed extensive user modification, often in ways that would be considered unsafe. This is true across application types, including text editors, browsers, games, office software, graphics software, and operating systems. Because of this, I believe Chromium is actually limiting its long-term utility by adopting a strict security model that prohibits extensive user modification. One thing is certain, though: this approach hasn’t limited its uptake in the short term.