When Google's Chrome web browser debuted with much fanfare last year, it was Windows-only and not cross-platform compatible. The developers soon began working on Linux and Mac OS X ports of the browser's underlying open source Chromium code base. These ports are beginning to mature and could soon be ready for regular users.

We took a look at the Mac OS X port of Chromium a few months ago, but the Linux port was still barely functional at the time. A lot of progress has been made since then and the Linux version is now in the alpha stage. We tested it on Ubuntu 9.04 to see how it compares with the latest release of Chrome for Windows. There are still missing features and lots of rendering bugs, but it is clearly moving in the right direction.

Early challenges

When the Linux porting effort first began, the Chromium developers were not certain how to best translate their user interface vision to the Linux platform. The diversity of the Linux desktop development ecosystem and the lack of universal consensus around a single toolkit or API can make the platform seem like an intimidating target for third-party application developers. Committing to any single toolkit could potentially marginalize other segments of the community, so it's not a decision that can be made easily.

In an early discussion thread about the strategy for porting the Chrome user interface to Windows, Google Chrome developer Ben Goodger expressed frustration with Linux user interface toolkits and commented that the platform's lack of consistency makes it difficult to know what to target.

In an update that was posted a month after the initial discussion, Chrome developer Evan Martin described the Linux port as a "511MB executable that brings up an empty window."

"First of all let me generally comment that this entire situation is a clusterf*ck. I am not happy with the technical constraints imposed by Linux and its assorted UIs on Chrome's UI and feature set," he wrote. "There isn't dominant consensus around toolkit and HIG, there seems to be variance in commonly used software as to how it's constructed and what it matches, and I've not heard anyone glow about how they can create the coolest looking UIs with GTK."

For those who are unaware, Ben Goodger is a former employee of Mozilla and used to be the lead developer of the Firefox project. In his work on the Chrome browser he is drawing from his extensive experiences with the Firefox codebase. In his comment in the discussion thread, he suggests that Mozilla's approach--where a single user interface toolkit is made to reflect the native look and feel of each platform--is always going to produce imperfect results.

After extensive discussion, the Chromium developers decided to build the Linux port with GTK+, the toolkit that is used by the popular GNOME desktop environment. This will eventually make it look and feel somewhat native on GNOME-based Linux distributions, such as Ubuntu.

Progress was initially very slow. In an update that was posted a month after the initial discussion, Chrome developer Evan Martin described the Linux port as a "511MB executable that brings up an empty window." The pace picked up, however, and the browser eventually began to take shape.

Since the beginning, the Linux port shipped with an ominous startup message which declared that "This browser is not ready yet!" This warning was accompanied by messages that encouraged users to refrain from blogging about the software and to resist the urge to file bug reports. This message has been removed in trunk, replaced by a message which informs users that they are using an alpha build.

Chromium alpha on Linux

The latest alpha build of Chromium provides basic browsing functionality and a few of Chrome's other features. I was able to load pages, open new tabs and windows, use the browser's full-page zoom, download files, view and manage history, and run the Incognito privacy mode.

The rest of the features were only partially implemented. It is possible to reorder tabs in each window, but you can't snap out a tab yet or move tabs between windows. Bookmarking basically works, but with several limitations. Clicking on the bookmark star icon doesn't pop out the bookmark editing bubble. The bookmark manager is also not implemented yet. Users can, however, toggle the visibility of the bookmark bar and edit its contents.

The developer tools are also not fully implemented yet. Users can view the HTML source of a page, but the task manager and JavaScript console do not launch. I was also unable to get the web application shortcut and browser settings import features to work. Some parts of the user interface are still incomplete. For example, the Options dialog exists, but it does not contain any preferences.

The options dialog on Windows and Linux

Page load performance is pretty good, as we have come to expect from Google's browser. Rendering quality, however, still needs some work. Font rendering in particular is still not quite on par with Firefox yet. There are also some minor glitches, such as noticeable flickering in the top left corner when the cursor moves over page elements that change on rollover. A few occasional anomalies also surfaced, like improper CSS application in some cases. Browser plugins are also still not implemented, so Flash won't work yet. On the Acid 3 test, the browser gets 100/100.

The user interface largely matches the look and feel of the browser on Windows, but the dialogs and menus are clearly built with GTK+ and matched my system's underlying GTK+ theme. It's not clear if the GTK+ look and feel will eventually be extended to the entire browser. It seems likely that the developers will retain the basic tab style of Chrome as they have in their Mac OS X port, but will match native system colors.

Conclusion

The Linux Chromium alpha is shaping up nicely. Despite the missing features and rendering glitches, it is relatively usable and maturing at a reasonable pace. The developers still have a lot of work to do, but the portability challenges no longer seem insurmountable. Users who want to test the latest version of Chromium on Ubuntu can take advantage of Fabien Tassin's daily build package archive.