Jun 11, 2013

For the last few months my team (OpenBossa) at INDT (Instituto Nokia de Tecnologia) have been working on WebKitNix (Nix for short).
WebKitNix is a new WebKit2 port, fully based on POSIX and OpenGL.
We also use CMake build system (like GTK and Efl), GLib, libsoup (networking) and Cairo (2D graphics) as dependencies.
It also uses Coordinated Graphics and Tiled Backing Store from WebKit2.
Many of its building blocks are shared with others ports already
on trunk.

The Nix port offers a C API for rendering a WebView within a OpenGL context, based on WebKit2 API.
You can use Nix to create applications such as a web browser or a web runtime.
WebKit2 run the context for each web page in a different process.
This process isolation keeps the UI responsive, with smooth animations and scrolling, because it does not get blocked by Javascript execution.

We want to ease the work of Consumer Electronics developers who wants to have
a web runtime in their platform, without the need to create another WebKit port.
That is why Nix has less dependencies than Efl, GTK or Qt, which should also be ported to the target platform.

Nix API also enables the application to interact with the Javascript context.
So it is possible to add new APIs, to handle application specific features.

How did it started?

The OpenBossa team used to maintain the Qt WebKit port for years, helping Nokia/Trolltech.
But then, in the last years, from the experience gathered with the Snowshoe browser, handling
with dependencies (such as QtNetwork) that were much bigger than we really needed.
We tried to replace some dependencies of QtWebKit and later Efl to see how minimal WebKit could be.
So we took some steps:

Initial idea: platform/posix or platform/glib (share code)

Ivolved problem: we wanted to have different behaviors for QQuickWebView -> Qt Raw WebView