Platforms and Priorities

Tuesday, September 02, 2008 at 12:13 PM

The initial public beta release of Chromium (the open source project for Google Chrome) builds and runs on Microsoft Windows, but we are actively working on versions for Mac OS X and Linux as well. I'm one of the people focusing on the Mac version. In this blog post I'll explain a bit about how we're approaching the challenges of building a product on multiple platforms and what our goals are.

In some ways, working on Chromium is coming full circle for me. I started my career writing Internet & web software for the Mac in the very early days, and it's been exciting to get back to my roots as an engineer.

One overriding goal we have had from the start has been to build the best browser we can. When it comes to Mac and Linux versions, this means that our goal is not to just "port" a Windows application to these other platforms--rather, our goal is to deliver Chromium's innovative, Google-style user interface without rough edges on any of them. Chromium's overall design has been multi-platform from the start, but we are also committed to getting the details right for users on each platform. For an application that most of us "live in" most of the day, rough edges in the user experience or operating system integration are like having a stone in your shoe no matter how well the rest of the product works.

One application, one team

In order to make sure Chromium feels right, each platform's version is being built by people who live and breathe that platform; the engineers working on these versions are long-time Mac and Linux engineers who are just as picky about the details as anyone. It's also not just the engineers; Macs and Linux machines are very popular at Google at all levels, so progress is already being followed avidly across all levels of the company.

These versions are not being built by separate teams, however. Everyone working on Chromium can and does contribute to all platforms, in order to keep things from diverging too far, and all versions are built from the same sources. You can see the first steps of this in the source tree right now: you can already build some modules (and run unit tests!) on the Mac and Linux, and more will be landing in the tree as we move forward. Our build infrastructure also notifies everyone when a change on one platform breaks the build on another, which keeps everyone in sync.

As the bigger pieces come together, parts of the existing Chromium code will need to be refactored or rethought, of course. Sometimes even code written with multiple platforms in mind (as much of the Chromium code already is) will turn out to have embedded assumptions that aren't valid once it's actually running on the other platforms. The team is fully aware of this and is prepared for it, rather than dictating that everything accommodate to how things work on Windows.

That's all very nice, but when do we get them?

We can't make concrete predictions yet; the Windows version is going into beta first, simply by virtue of having had a head start. For a number of reasons, much of the initial prototyping and design was done for Windows. We wanted to make sure that the user experience was very smooth for Windows users as well, and when you're hashing out and testing ideas it can be helpful to not have to do so on three platforms simultaneously. However, once the design started to settle down, we started adding Mac and Linux engineers to the team, and they started getting the ball rolling on those platforms. Since they are in many respects more similar to each other than either is to Windows, we've ended up being able to share code between them, which has sped up development a bit.

Right now, both are in the "pieces build and pass tests, but there's no Chromium application yet." While we're working hard and fast on catching up to the Windows version, we're not setting an artificial date for when they'll be ready--we simply can't predict enough to make a solid estimate, and we expect to learn a lot from the Windows public beta as well. On the plus side, since the project is now public, you'll be able to watch (and maybe even contribute to) the progress from week to week. As these versions stabilize, we will create official betas, much as we are now for the Windows version. While we can't give any dates yet, we'll keep everyone informed as we get closer.