Tuesday, June 16, 2009

WebKit/EFL 0.1 released

The Browser team at INdT's OpenBossa Labs is proud to announce the 0.1 release of WebKit/EFL, a development milestone targeted the Enlightenment community.

We hope the release will give feedback about the overall usage of the web runtime and embedding API, as well as encouraging people in contributing to the port. Due to a change in focus, our team at INdT will have to minimize our envolvement somewhat, but we will still do maintenance and patch reviews.

Since the first announcement of the port during December last year, the code has been refactored in many of its crucial parts, resulting in good performance improvements. Now, six months later, we believe the project is mature enough to gain wider testing.

Quick start

1) About WebKit

WebKit is an open source web contents engine powering products such as Google Chrome and Android browser, Apple's Safari and iPhone browser, as well as Nokia's web runtime for S60.

2) About EFL

The Enlightenment Foundation Libraries (EFL for short) are a set of graphical libraries intended to provide easy-to-use resources for building rich user interfaces based applications. It is the core of the Enlightenment window environment. As mentioned in its official web site, "the libraries are meant to be portable and optimized to be functional even on devices such as mobile devices". Its core components are:
  • Evas: Highly optimized raster canvas
  • Edje: Declarative UI library
  • Ecore: Event loop and utility classes
  • Eina: Basic data types
  • Embryo: Scripting

3) About the port

WebKit was born to be toolkit independent: "WebKit's HTML and JavaScript code began as a branch of the KHTML and KJS libraries from KDE. As part of KDE framework KHTML was based on Qt but during their porting efforts Apple's engineers made WebKit toolkit independent". Currently there are browser components based on WebKit for the following toolkits (officially upstream only): Qt, Gtk+, wxWidgets, Windows, among others. This port is about adding EFL to the list of supported toolkits, providing an easy-to-embed browser component/widget into EFL based applications. As the developers also work on the Qt port, we try to keep the implementation as close as possible to that of QtWebKit. The build system was based on Gtk+'s though.

WebKit/EFL currently compiles and runs on Linux, and is not yet upstreamed, however tries to follow WebKit trunk as much as possible, though it might be a week or two behind.


Painting is performed using Cairo on an offscreen surface, thus all painting is double buffered. For this to work on 16 bit devices such as the Nokia Internet Tablet, some patches needs to be applied to the shipped Cairo version.


Networking is based on Libcurl, which is used elsewhere by EFL, and was thus a natural choice. Cookies are supported.

What is in this version ?
  • API for navigation browsing (back, forward, reload, stop), session and global history, zooming, among others. See API here.
  • Configurable flash plugin via the "--enable-glib-integration" configure option. Default: true.
  • Configurable Windows like panning support via the "--enable-pan-scrolling" configure option. Default: false.

In order to better demostrate its performance (which is just great on Desktop), we have ran it on an Linux embedded device (in our case, an n810 running manoma). Alecrim, also from INdT, has written some nice blogposts about it. Below are two of the videos he made showing WebKit/EFL running on a n810 with mamona.

Andre Pedralho is also updating EVE browser to work with this version.

Some highlights about the performance is the startup time: ~3 secs on cold launch and ~1 second on hot launch.

Known issues

  • Flash crash on GMail.
  • Flash content not zooming synced with page content zooming (This has been disabled due to Flash Player issue (FP-2140).

Building and Running WebKit/EFL (trunk)
  • git clone git://gitorious.org/webkit-efl/webkit-efl.git webkit
  • cd webkit
  • git checkout origin/master
  • git checkout -b <> # e.g. webkit-efl
  • get all dependencies installed - run |configure| to get a list of needed packages
  • WebKitTools/Scripts/build-webkit --efl --makeargs=<-s -jXX> --no-video # OR ./autogen.sh --with-port=efl --disable-video
  • WebKitTools/Scripts/run-launcher --efl
This 0.1 release has been tagged to "webkit-efl-0.1". Feel free to use it as well.

Where to get in touch

Join #webkit-efl channel on irc.freenode.net, send patches and emails ... Your contributions are be very welcome.

About the Development Team

  • Kenneth Christiansen (lead programmer) - kenneth dot christiansen at openbossa dot org
  • André Pedralho - andre dot pedralho at openbossa dot org
  • Antônio Gomes - antonio dot gomes at openbossa dot org
  • Diego Gonzalez - diego dot gonzalez at openbossa dot org
  • Afonso Costa - afonso dot costa at openbossa dot org
  • Marcelo Morais - marcelo dot morais at openbossa dot org