February 12, 2009

It's Alive!

Over the last couple of months, the group working on Mac Chrome (myself included) has shifted gears from layout tests and WebKit compatibility to getting the application user interface up and limping. That also means getting the separate WebCore renderer processes to communicate over IPC to the browser.

Last week, while I was in Cali, the entire team made a tremendous amount of progress getting the cross-platform model and controller classes scaffolded, topped off with a Cocoa UI (with similar strides on Linux using Gtk). We were at the point where you could create new windows and tabs (and close them too) using the shared code, which would spawn/quit associated renderer processes. It was pretty exciting to watch them come and go in Activity Monitor, knowing how close we were to getting bits on the screen.

This week, everything came together and we can now load web pages in the renderer processes and display them in tabs. Here's a screenshot of the very first time I ran Mac Chromium and loaded a webpage:

Now mind you, clicking doesn't work, and the renderers crash like nobody's business, but the other great thing is that the user interface stays running even if they do. Just open a new tab and keep going! It's important to point out that's part of what's taken us so long to get to this point. The WebKit that ships as part of Mac OS X can't run this way -- it took a lot of work to marshall it to do so. In addition, the UI clearly needs much love, but it's an indicator of the clean and simple direction we're heading.

If you can't tell, I'm really excited. We've got a very very long way to go (don't dare ask me to predict a date -- I won't), but it's progress indeed.