Chromium

Few tools are as indispensable as the modern Web browser. With the development of groundbreaking interactive applications like GMail and Google Apps, the Web is turning into a remote application platform. As the facilitator of this, the browser is assuming a double role. It’s no longer just a hatch through which we passively view text and images, it’s rapidly becoming (and has arguably already evolved into) the window manager for the Web.

My browsing history goes back some fifteen years, to the early pre-1.0 versions of Netscape Navigator. It’s hard to imagine now, but there are Internet users — millions of them — who’ve never even heard of Netscape.

Actually, my first browser was the text-based Lynx browser, because I couldn’t afford a PC at the time and was still using an Amstrad PCW running CP/M Plus to dial into my Internet provider, where I’d run a remote instance of Lynx at the UNIX command prompt.

Back then, I didn’t even have VT100 emulation (I had only a very lame VT52), so I had to write my own EMUlator in Z80 assembly language. This allowed me to see the text of the pages I viewed without ugly control codes messing up the flow. I then added the ability to render bold and italics and I’d managed to cobble together what seemed at the time to be a half-decent browser.

Anyway, I’ve been a faithful user of the Navigator bloodline the entire time I’ve been on the Internet. That’s not servile brand loyalty speaking, simply the fact that Linux users had no other choice at the time. Development of Mosaic (from which Navigator was derived) ceased in 1996, because Netscape had rendered it superfluous.

Navigator would later be rechristened Communicator, but the browser was always commonly referred to by the company’s name. After the purchase of Netscape by AOL, the browser was later officially renamed Netscape before reaching its end of life as Navigator once again.

To add to the confusion, Netscape had been codenamed Mozilla whilst the initial version was still in development. It actually retained this name throughout its life in its User-Agent header.

When Netscape were painted into a corner by Microsoft and released the source code to Navigator, they named this stripped down version Mozilla. I compiled the source code on the historic day of its release, but it would be a some time before Mozilla would be usable.

Several iterations of Mozilla ensued, before ultimately evolving into Firefox. That brings us to the present day and Firefox 3.5.6, the version I currently use.

Enter Google Chrome.

A year ago, Sarah migrated to Google Chrome and has never looked back. I watched with interest, but found it too lightweight for my taste. It didn’t matter, anyway, because there was no version for Linux.

Google finally released a Linux beta in December of last year and I was eager to try it. Again, though, I was immediately struck by how many important features were missing. Most of these omissions were intentional, but one, the ability to remap keys via ~/.gtkrc-2.0 was an oversight. I filed a ticket about this, but it turned out to have been fixed already in the development version. This omission in the beta version caused me to close windows when I hit Ctrl-W, when I merely wanted to delete a word. This small detail rendered the browser too dangerous to use.

I subsequently checked the code out of SVN and set about compiling it. It’s quite a beast and there was some reading to do to discover how to correctly configure the build, but nothing too bothersome.

It was then time for a cup of coffee while the 16 hyperthreads of the 8 cores of my 2 Xeons went to work. This was the first time my new desktop had ever been put under significant load. I ran make with -j10, which was fun to watch.

Anyway, in a display of wanton disregard for good naming common sense, Google has chosen to call the open source version of their browser Chromium, whilst the version they officially support and make available, complete with company logos and who knows what other proprietary stuff, is called Google Chrome. Whilst they share a large common code base, if you install both, they will maintain separate configurations.

The exercise yielded a working browser with the keybinding problem fixed. This at least gave me something that wouldn’t result in lost work. I now had a platform I could test and attempt to configure into something suitable for daily work.

The biggest problem for me with Chromium is the lack of flexible tab management. To be fair, Firefox doesn’t have this out of the box, either. You need to install the Tab Mix Plus extension to get it. The trouble is, Firefox has such an extension, while Chromium doesn’t. I’ve come to regard it as indispensable, particularly the ability to wrap tabs onto multiple rows. This keeps the tab bars a constant width, which makes them both easy to find and keeps the titles readable. In Chromium, the tab bars shrink to create room for each newly opened tab, which soon renders them unreadable. I routinely have 30 tabs open and this is a real problem, because all that is left to identify the site contained in each tab is its favicon.

I looked around for an equivalent of Tab Mix Plus, but it appears that Chromium doesn’t expose as many of its internals as Firefox. Given what I know about the project, that’s almost certainly a conscious design decision to keep the browser from straying too far from its roots, even at the user’s behest. The developers of Chromium want to maintain a simple, slick UI with very few configuration and management options. They presumably also want extensions to enhance the user experience without radically altering the look and feel of the browser.

After trying an extension called TooManyTabs, I settled on VerticalTabs, which at least provides a drop-down menu with the titles of all of my tabs. Even that requires vertical scrolling of the drop-down box, so it’s far from ideal, but I can live with it.

Next problem: type-ahead find. It sounds picky, but I don’t want to have to hit Ctrl-F before I initiate a ‘find text in page’ operation. Firefox has an option (turned off by default) that allows you to type directly into a page to find text within it.

Chromium doesn’t support this, presumably because Google is pioneering the development of Web-based applications whose functionality almost necessarily involves binding keys to operations, so that the user can interact with the application from the keyboard. GMail is a good example of this.

These applications bind keys using JavaScript, a technique that would conflict with the ability to type a search string directly into a page to locate it. I wish the developers had chosen to simply allow JavaScript to override type-ahead when it needs to, but they chose instead to not implement the feature at all. There’s an extension that implements it, called Type-ahead-find, but it’s slow and suffers from some quirks. Still, it’s much better than nothing at all, so I have it installed and active.

A final indispensable extension provides a way to block all of the diabolical Flash animation so prevalent on today’s Web. Flash considerably lengthens page load times and consumes vast quantities of memory and CPU cycles, usually for no better purpose than to display garish advertising for products not available in this country or not desirable in any case. I never want to see any of that rubbish, nor any videos hosted by YouTube, nor any other Flash-based frivolity. Away with it.

Happily, there are multiple Flash blockers for Chromium, so it’s easy to find one that suits. Some are more configurable than others. I settled on this one

My bleeding-edge Chromium is version 5.0.308.0 (37390), which represents the latest code in SVN as of a few minutes ago. As long as you compile a release version, i.e. with all of the debugging code removed, you end up with a very fast browser. With the aforementioned extensions installed, it’s even usable.

I still can’t quite bring myself to abandon Firefox, but the speed of Chromium is a strong draw. It renders pages blazingly fast and is, for this reason alone, very impressive.

Each tab also runs in its own process, which means that an errant site or a bug in the browser that affects just one tab won’t hang the entire browser. Individual tabs can therefore be killed off without affecting the rest of the browser. This is a terrific design feature, as it renders the browser extremely robust.

Another nice feature of Chromium is the ability to resize the text entry boxes of forms. It provides a better overview of one’s work whilst composing a blog entry, if nothing else.

Other than that and a few annoyances arising from differences in tab behaviour between Chromium and Firefox with Tab Mix Plus, behaviour that can’t be altered in Chromium, there aren’t that many differences between the two browsers. Most of the fundamental differences are technical in nature and therefore located under the bonnet, but they’er no less impressive for that.

I’m therefore going to persevere with Chromium and see whether I can get used to it over the course of a few weeks. At the moment, it still feels rather awkward and there’s a strong sense of trying to hammer a square peg into a round hole. The hole in this case is my own habituation to certain behaviour, encouraged to for years by extremely flexible browser software. I can rationalise most of this desired behaviour with concrete examples, so it’s hard to let go of it.

Why bother trying? you might ask. Because I feel that Chromium has enough potential to warrant the effort. It’s just a shame that so few of those advantages, in my opinion, are in the most noticeable part of the browser, the user interface.

Given the browser’s design goals, that fact is unlikely to change, so I’ll just have to hope that extension writers provide the missing functionality. Whilst it may not be as radically reconfigurable as Firefox, it’s theoretically infinitely extendible.

This entry was posted in Technology. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *