LWN.net Logo

Waiting for Google Chrome

June 3, 2009

This article was contributed by Bruce Byfield

When Google Chrome was released for Windows on September 2, 2008, it attracted instant attention. With increased speed, security, and stability, Chrome seemed every bit the modern rethinking of the web browser that Google proclaimed it. But despite the fact that Chrome is an open source project with different portions of it released under a variety of free licenses, the GNU/Linux version is still in early development. However, the recent availability of regular builds in Ubuntu packages promises to make casual experimentation with Chrome much easier, and revived the original interest. Unfortunately, the current state of the GNU/Linux version seems unlikely to satisfy the level of interest, as the development team continues to struggle with unexpected challenges.

Asked how many people were part of Chromium, the Google team that is building Chrome, and how many were working on the GNU/Linux version specifically, Mike Smith, Product Manager for Google Chrome, declined to give numbers. "We don't go into details about the number of Google employees on any particular product," he explained. However, an unofficial list of those working on Chrome in September 2008 included 42 names, 3 of whom had Linux listed as an area of expertise. This number, which has probably changed in the last nine months, is supplemented by several developers with experience in writing cross-platform applications, including Firefox alumnae Darin Fisher, Pam Greene, and Ben Goodger, Chrome's technical lead. In addition, the Chromium tasks in the 2009 Summer of Code include nine possible GNU/Linux-related improvements that students might undertake.

Another reason that the numbers are fuzzy, Smith pointed out, is that Chromium works closely with other Google teams, including Gears, a plug-in that enhances both online and offline performance of web applications; Native Client, whose goal is to allow traditional applications to run as web applications; and O3D, which seeks to add 3-D capabilities to web applications. When such considerations are taken into account, it seems that, while the Windows version seems to have highest priority, since it was released first, the GNU/Linux one is still far from being neglected.

The challenges of designing for GNU/Linux

So far as possible, the code for the GNU/Linux, Mac, and Windows versions of Chrome "share as much as is possible — not only in terms of core aspects share with other source projects, such as with the Webkit team, but also from UI [User Interface] design choices and other implementation aspects of the technology," Smith said. However, as the Ars Technica highlighted in a review of a pre-alpha release, the sheer variety of options under GNU/Linux can often prove a challenge.

For example, Smith mentions the difficulties of implementing sandboxing — the running of applications in restricted environments as a security precaution:

On Windows, getting a process sandboxed in a way that's useful to us is pretty complicated — the relevant source code consists of over 100 files and is located under the sandbox directory in Chromium's Open Source repository. But on Linux there are a number of different sandboxing mechanisms available. Different Linux distributions ship with different (or no) sandboxing APIs, and finding a mechanism that is guaranteed to work on end-user's machines is a challenge.

The issues include whether to use ftrace or a modified version of Seccomp to intercept system calls for sandboxing, and whether system call interception is necessarily the best mechanism for sandboxing.

Other challenges in GNU/Linux include the lack of a standard developer's toolkit, the variety of software available for the same purpose, and the limitations of the GTK+ toolkit. In the Ars Technica review, the frustrations with these limits were attributed to Goodger alone. But if you look at the original discussion thread, working around the conditions in GNU/Linux are a challenge for all the Chromium developers. At the very least, the team felt the need for common standards to simplify their work.

Goodger explained:

Google Chrome's visual style was designed with the assumption that the window manager is a stable target. On Windows and Mac, we have used this assumption to allow the tabs to blend seamlessly into the window title bar, creating Google Chrome's distinctive skyline. We also use the dominant system theme (the blue Luna theme on Windows XP, Aero Glass on Windows Vista, and the standard grey appearance on OS x) to inform the general appearance.

Building an application with these objectives in mind is much more challenging on Linux because of the lack of general consensus as to what the default user interface toolkit, theme system, and window managers are. Because of how extensively the system can be customized and how frequently this is actually done by a large number of Linux users, many of the assumptions that drove the design of Chrome's UI are more challenging to apply. That said, the Linux team has some clever ideas for how they may be able to support the best of both worlds, and so I look forward to these being implemented.

At least part of the time, the solutions that emerged were a compromise or stopgap measure. For example, despite the team's reservations about the ability of GTK+ to produce an interface comparable to those on Windows or OSX, Smith says that "In the end, we decided that GTK+ gave the best compromise in terms of being able to deliver a quick, clean user experience that was clearly still Google Chrome."

In much the same way, Smith described the release of nightly builds for Ubuntu as being due to the fact "that we have to start somewhere," even though the plans are to support "multiple popular distributions." He added that, "Being open source means we're happy to have volunteers provide support for other, potentially less popular or more specific distros that we may not get around to for a while."

Looking ahead

The Chromium team declined to give an exact road map for the GNU/Linux version. However, Smith did say that "We hope to release a version of Google Chrome for Linux on the developer channel very soon." Those who are interested in tracking Chrome's progress can track it on the developer site.

Still to come are an extensions platform intended to give Chrome the rich ecosystem of development enjoyed by Firefox. Smith also suggested that Chrome's ability to quickly render JavaScript should make it ideal for the recently announced Google Wave, an online collaboration and communication system. "We certainly expect Wave to work best in modern browser environments which have good support for open web standards," Smith said.

Meanwhile those wanting to investigate Google Chrome on their own can download packages from Ubuntu's Launchpad site, which include packages for the last three Ubuntu releases as well as the upcoming Karmic Koala release. However, if you do, be warned that, at this stage of development, there is no guarantee that you will actually be able to run Chrome. On three separate machines with several different builds and packages, I was able to install the browser, but received only an "Illegal instruction" message when attempting to run it.

Such failures are not surprising in software in such an early stage of development. No doubt, too, the particular hardware and builds figure heavily in them. All the same, they suggest that the Google could be hard-pressed to deliver on its promise of a GNU/Linux release in the first half of this year. At the most, an early beta might be ready by that deadline.

Meanwhile, users can keep trying the Ubuntu packages. They might also try compiling the source code, or downloading Crossover Chromium, which runs under the WINE code. The only other alternative is to wait for the still-indefinite final release.


(Log in to post comments)

Waiting for Google Chrome

Posted Jun 4, 2009 21:00 UTC (Thu) by jimparis (subscriber, #38647) [Link]

Google Chrome's visual style was designed with the assumption that the window manager is a stable target. On Windows and Mac, we have used this assumption to allow the tabs to blend seamlessly into the window title bar, creating Google Chrome's distinctive skyline.
...
Building an application with these objectives in mind is much more challenging on Linux because of the lack of general consensus as to what the default user interface toolkit, theme system, and window managers are.
No, it's much more challenging on Linux because I don't want you to come up with your own "distinctive skyline". I want your program to behave like all other programs on the system, or if it's got a custom look, it's because I've configured my window manager to give it a custom look. They seem to be missing the concept of "freedom" in free software...

Waiting for Google Chrome

Posted Jun 4, 2009 22:50 UTC (Thu) by smoogen (subscriber, #97) [Link]

No they aren't. The Freedom of Free Software is you can mess with it to make it look like how you want it. However it also is the freedom of a developert to say "I want it to look like X no matter what."

Waiting for Google Chrome

Posted Jun 6, 2009 13:56 UTC (Sat) by Los__D (guest, #15263) [Link]

That is very true, but it is also a bit sad that they are spending extra time to remove the best thing about GTK+ (and QT for that matter); making things look consistent.

Now Chrome looks alien, and so less will want to use it (at least I know that I wont).

Waiting for Google Chrome

Posted Jun 6, 2009 20:33 UTC (Sat) by k8to (subscriber, #15413) [Link]

You're right, it's not a freedom issue.

It's just a stupid UI decision issue.

Waiting for Google Chrome

Posted Jun 4, 2009 21:27 UTC (Thu) by ajross (subscriber, #4563) [Link]

Other challenges in GNU/Linux include [...] the limitations of the GTK+ toolkit.

[...]

despite the team's reservations about the ability of GTK+ to produce an interface comparable to those on Windows or OSX

This surprised me a lot. Not so much because Gtk+ is perfect, or better than Qt, or Cocoa, or whatever. But because relative to win32, the UI toolkit for which Chrome is actually targetted, it's quite literally a paradise.

So I clicked on the links, looking for what the complaints were, and couldn't find anything at all. The closest technical issue I could find was a mismatch between the X11/ICCCM window management mechanism and Chrome's desire to put tab controls in the window's title bar. While real, it's also an issue that effects every other toolkit on the platform.

So I'm honestly curious: what needs to be fixed in Gtk+ for Chrome's needs?

Waiting for Google Chrome

Posted Jun 6, 2009 7:07 UTC (Sat) by dododge (subscriber, #2870) [Link]

The closest technical issue I could find was a mismatch between the X11/ICCCM window management mechanism and Chrome's desire to put tab controls in the window's title bar.

Yeah, this seems to be the biggest issue. On Windows and MacOS there very few "usual" window decoration styles, and chromium is able to mimic them well enough that users don't really notice that it's not using the native controls. On Linux this is a hopeless situation because of all of the window managers and theming systems in play; and as they note some of the window managers don't even have title bars.

It should be noted that even on Windows it breaks if you adjust the desktop appearance sufficiently. For example Issue 758 was opened the day after the beta came out and shows that chromium retains the rounded-blue look when you change the rest of the desktop to classic style. It was quickly marked "WontFix" and gets bumped occasionally by people complaining about it (or most recently someone noting that Safari beta on Windows 7 does it better).

Issue 92 is perhaps an even better example, because it affects accessibility. Apparently if you set the Windows desktop to high-contrast mode, parts of chromium start rendering as black-on-black and white-on-white. This one has been submitted several times and remains open.

Personally I really don't like it when applications do their own window management, so if Google insists on pulling these title bar shenanigans on Linux I guess that's one more reason (beyond the non-64-bitness) to avoid it. I saw way too much of that crap from commercial vendors back in the 90s (such as Photoshop on Solaris or PowerAnimator on IRIX) and they always screw it up somehow, such as stealing focus or autoraising at the wrong time or breaking window resizing or ignoring window manager keyboard shortcuts, etc, etc.

Waiting for Google Chrome

Posted Jun 6, 2009 20:37 UTC (Sat) by k8to (subscriber, #15413) [Link]

> I saw way too much of that crap from commercial vendors back in the
> 90s (such as Photoshop on Solaris or PowerAnimator on IRIX) and
> they always screw it up somehow, such as stealing focus or autoraising
> at the wrong time

Hmm.. autoraising at the wrong time... You mean Firefox 3?

Though certainly Chrome's goals sound even less palatable.

Waiting for Google Chrome

Posted Jun 7, 2009 20:18 UTC (Sun) by dododge (subscriber, #2870) [Link]

> Hmm.. autoraising at the wrong time... You mean Firefox 3?

Oh Firefox 3 definitely popped into mind as I was writing that. It's usually pretty well-behaved even when I stress it with 10+ windows and hundreds of tabs, but maybe once every few days it does get confused and go on a brief auto-raising focus-stealing rampage.

Some of the older versions were much worse; I can recall having to kill the X server to get things unstuck.

Window management

Posted Jun 7, 2009 0:10 UTC (Sun) by man_ls (guest, #15091) [Link]

Yeah, stupid window management (just to stick tabs on the title bar) looks like a deal breaker to me. Let us hope that people will port the V8 JavaScript engine to other browsers, and that Firefox devs will copy the best bits: e.g. one process per tab or detachable tabs.

Waiting for Google Chrome

Posted Jun 11, 2009 21:12 UTC (Thu) by docomo (guest, #32926) [Link]

The closest technical issue I could find was a mismatch between the X11/ICCCM window management mechanism and Chrome's desire to put tab controls in the window's title bar. While real, it's also an issue that effects every other toolkit on the platform.
That's not an issue. That's an advantage that Chrome can't break the consistency of the desktop. This should mean that Chrome will be better on Linux because it won't have the stupid tabs in the title bar (which would break my ability to have a choice in window managers, especially tiling ones that have no title bar at all) and hopefully it will prevent other non-standard stuff as well.

Waiting for Google Chrome

Posted Jun 5, 2009 19:03 UTC (Fri) by amaranth (subscriber, #57456) [Link]

You're getting the "Illegal instruction" error because your systems do not support SSE2. In order to
fix a rounding bug that was making some of their automated unit tests fail they started using SSE2
instead of the x87 for floating point math. If you modify the build system (to remove the call to gcc)
and build it yourself it'll work.

http://code.google.com/p/chromium/issues/detail?id=9007

Waiting for Google Chrome

Posted Jun 7, 2009 14:17 UTC (Sun) by pflugstad (subscriber, #224) [Link]

Wow, they are doing an extension system, and on first look, it seems it might actually be possible to do an AdBlock style extension... (yes I know there are other solutions and AdBlock style javascript exists already).

I might actually have to start testing the Linux version.

What about Systrace for security?

Posted Jun 14, 2009 17:59 UTC (Sun) by gmatht (guest, #58961) [Link]

Personally I am a fan of the Plash style of sandboxing. I don't think it is suitable though, as it is chroot based. I like it because it can dynamically add rights on the fly, e.g. the GTK file dialog box is replaced so that if you open a file, the application is given rights to just that file.

Perhaps more suitable would be Systrace [0]?

As has been discussed the Systrace does security is very difficult to do right since possibility of a process changing its argument after sending it to the kernel. The last time a vulnerability was found was 2007 [1]. However AFAICT changing an argument is not a problem for Chrome since they would just ban the syscall entirely (or if not use message passing/chroot based solution like Plash to provide this security).

Systrace is here, doesn't require any weird kernel patches, is portable across Linux and BSD, and supports both 32bit and 64bit. It isn't as easy to set up as Plash, but it isn't that hard either [2]. Systrace + Chroot seems good enough to get version 1.0 out the door.

[0] http://en.wikipedia.org/wiki/Systrace
[1] http://www.usenix.org/events/woot07/tech/full_papers/wats...
[2] http://www.linux.com/archive/feature/51359

Copyright © 2009, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds