WebKit/Gtk+ is coming

The WebKit Gtk+/Cairo port has recently had a burst of activity — it’s really starting to shape up. I’ve recently had the opportunity to coordinate my efforts on the port and in the last couple of weeks we’ve provided patches for over a dozen bug reports (often requests for enhancement) . Most importantly, we’ve decided to work with the WebKit team to keep contributions going directly into the upstream SVN repository — no more dead-end forks and “development branches”.

I started working on the port half a year ago after giving up on gtkmozembed in a fit of frustration and was immediately impressed by the competence of the WebKit team and the abstractions they’ve made on top of the browser core to make porting a breeze — WebKit boasts successful and actively maintained “ports” to Qt, Wx, Gtk+, Mac OS X and Windows. These guys know what they’re doing and have rapidly learnt how to lead a successful Open Source project. Porters often work together and each of the ports share various modules and backends — GNOME developers are known to work with qmake, KDE hackers have picked up amounts of Gtk+ knowhow and Apple engineers often provide build fixes and small feature enhancements for the contributed modules.

The engine is incredibly versatile, and, as the name suggests, one of its strong points is seamless integration into existing desktop applications. We are concentrating on the mobile GNOME platform right now, and even without any profiling, the prototype browser is competitive with Opera, particularly for complex interactive sites using AJAX and modern CSS features. Moreover, we see a future for WebKit as a component of new applications like Banter that are blurring the boundaries between rich Web content and the GNOME desktop.

One of our upcoming contributions will add support for WebKit’s KSVG2-based SVG functionality using Cairo:

WebKit SVG

This is distinct from existing Cairo SVG libraries like librsvg in that JavaScript has full access to the DOM here, much like the current Gecko development trunk.