Announcing new port: Nix
Luciano Wolf <luciano.wolf <at> openbossa.org>
2013-05-17 12:41:27 GMT
The openBossa team at INdT Brazil is proud to announce “Nix” - a new
WebKit2 port based on POSIX and OpenGL. Nix stands for “WebKit for
unix-like platforms” and, if you consider the German meaning of the
word "nix", it can be taken as “WebKit plus nothing”. We are looking
forward to upstreaming and maintaining this port. Below you will find
a brief history about Nix, besides its main goals and motivation.
:: A little bit of history ::
The first of Nix basic ideas arose from a conversation between Kenneth
Rohde Christiansen and Noam Rosenthal, who were wondering about the
idea of having a “platform/glib” or platform/posix”. Other ports such
as EFL, GTK and Qt would then be able to develop themselves on top of
it, having a common source core.
While QtWebKit’s QQuickWebView is great for embedding web content into
QtQuick, a few people felt they needed more freedom to implement a
different WebView behavior than the one being provided by Qt. Behavior
more suitable for tricky use cases like embedding web content in a 3D
world, for example. A private API called QRawWebView was implemented
to fulfil this gap.
Motivated by the 2 aforementioned concepts and by the idea of having a
“lightweight” GL based port for developing some prototypes on a
RaspberryPi, in August 2012 Caio Oliveira and Jesus Sanchez-Palencia,
long term WebKit developers and former INdT employees, kick-started
what they called WebKitNix. They started from the EFL port, took out
every EFL-specific piece of code, implemented a “raw” GL-based
WebView, provided a C API in the WK2 fashion and a set of
platform/device APIs based on the former Chromium’s Source/Platform.
We can summarize its evolutionary process as:
1. Initial idea: platform/posix or platform/glib (share code);
2. Evolved problem: we wanted to have different behaviors for
QQuickWebView -> Qt Raw WebView
3. Network: QtWebKit + Soup experiment
4. Efl Raw WebView experiment
5. Efl Without Efl :)
6. Nix was born.
:: What is inside it? ::
Most of Nix’s building pieces are shared with other existing ports:
CMake build system, GLib, libsoup and Cairo. Also, it uses Coordinated
Graphics, Tiled Backing Store and existing WebKit2 C APIs. Having such
a tiny WebKit API means that Nix has the smallest possible footprint
on the rest of the WebKit project.
We take seriously the notion that the WebKit project is for a web
rendering engine and nothing else, and try to develop as much of the
auxiliary features as possible outside the WebKit project, on top of
the API or in the injected bundle.
Nix is already covered by Layout Tests, API Tests (TestWebKitAPI) and
Ref Tests which are run by our buildbot. Perf tests are supported
but we don’t have a buildbot ready for them at this time. Pixel Tests
are on the way. Today we have around 75% of layout tests coverage.
We have been merging Nix with webkit.org three times per week so it is
kept up-to-date. There is a public repository with the original git
history and we are looking forward to upstreaming it. (Yes, we fulfill
all the “requirements” defined by the “Successful Port How To”
:: Who should use it? ::
It targets whoever wants to have a hardware accelerated WebKit2 port
on UNIX based devices, with a minimum effort. Nix is now running on
x86 and ARM (Raspberry Pi is a supported platform).
Flexibility and freedom is guaranteed: you can define your WebView
behavior and there’s no toolkit attached, so it may be used with EFL,
GTK, Qt or even no toolkit at all.
:: Who’s working on it now? ::
This port was made in openBossa - an open source research group in
Brazil. Nowadays, the team comprehends 5 WebKit committers and 4 more
developers. In January, several contributors from the university of
Szeged have joined the project as well, and are responsible for many
valuable contributions like the current work to switch to libcurl.
:: Past and Future ::
- 2012 -
- August/September: Lab phase, lots of experiments;
- October/November: Branching;
- late November: test infrastructure running;
- 2013 -
- January: public repository;
- May: comments/discussions/objections -> upstreaming;
-June & beyond: maintenance, expand test coverage, focus on the web
platform (contributing to WebCore).
:: Where can you find it? ::
contact: nix <at> openbossa.org
IRC: #webkitnix at freenode