Gtk+ WebCore Project Documentation

Gtk+ WebCore consists of three different packages and a reference browser implementation:

Gtk+ WebCore Components

JavaScriptCore, package containing KJS JavaScript interpreter.
Package contains KJS component responsible for execuring JavaScripts embedded in HTML pages. Based on JavaScriptCore-146.1.
NRCore rendering engine.
Contains KHTML html rendering engine KWIQ -Qt adaptation layer and bridge classes for WebKit controls. Based on WebCore-146.1
NRCit embeddable browser component
Library which implements functionality needed to build an browser. Encapsulates the core HTML rendering engine.
osb-browser reference browser.
A simple web browser using interfaces provided in NRCit to render and display web pages.

Basic guidelines

The core of Gtk+ WebCore is the WebCore distribution by Apple. The major goal of the port is to stay source level compatible to the that code if possible. Otherwise we try to remain compatible at "concept-level". This means that most of the interfaces inside the code are from the code Apple has released.

Quick build how-to

First, satisfy dependencies: glib, GDK, Pango, Gtk+, libglade-2, libcurl.
Second, obtain source distribution (JavaScriptCore, NRCore, NRCit, osb-browser). Untar each source package.
Third, build each package with following procedure:
./configure
make &&
make install
Fourth, you can run the sample browser with command
osb-browser
Note: the Gtk+ WebCore library layout is subject to change. It may be a good idea not to pollute your system with unneccessery libraries. You can install the project to a private directory, which can be later cleaned more easily than system directories. One option is to install the project in your home dir. This is accomplished by building the project packages with following commands
PKG_CONFIG_PATH=$HOME/lib/pkgconfig ./configure --prefix=$HOME
make &&
make install

TODO

While the KHTML rendering engine provides rich set of features, building a usable browser component library and browser is a big and timeconsuming task.
Following list contains a few main areas where more work should and will be done related to Gtk+ WebCore.
  • Implement WebCore DOM API
  • Fix crashes (crashes occur in day to day browsing)
  • Define proper C++ API. The current is a quick rip-off of Apple WebKit
  • Define proper C and Gtk+ API. The current is far too simplified.
  • Http subsystem should be replaced with more powerful one and it should be integrated to the APIs
  • Cross-platform compability improvements. Currently only tested platform is RH Linux 9
  • Improve testability, other testing related work (code level, web standards' level)
Known distinct problems with the current code:
  • Implemented widgets are not working properly (size, fonts, focus etc. behaviour)
  • Some widgets not implemented (textarea, file upload, canvas)
  • Text rendering bugs (small caps not implemented, text measurement not right)
These two lists are not complete.

More documentation

More documentation including API's, architecture description and motivational introduction will follow soon. Until that time, if you are running in to problems or have questions, please post them to the mailing list.