The WebKit Open Source Project

Adding a feature to WebKit

WebKit is a large project, with many consumers. We have a large set of optional features, subsets of which are used by many different ports.

For the purposes of this discussion a feature is defined as follows:

  1. Ports of WebKit (new architecture, toolkit, etc.)
  2. Build systems for WebKit.
  3. Optional #define (ENABLE_, etc.)
  4. Web-content-facing interface (elements, CSS properties, CSS values, DOM APIs, etc)
  5. Dependencies on external libraries.

Additions/modifications to the native (embedding) API for WebKit layer for a single port do NOT count as features for our discussion.

Adding a new feature to the project is a welcome addition! However, the following guidelines are expected to be followed:

  1. All bugs which add features, are expected to be announced on webkit-dev. Features impose a small cost on every contributor, and thus we attempt to notify every contributor of the addition of new features to the project. An example announcement:
    Subject: Adding ENABLE_SVG to WebCore

    Hi webkit-dev!

    I wanted to let you know that I plan to add SVG support to WebKit.
    This support will be behind the ENABLE_SVG feature define. See:

    We'll be setting up a buildbot to track then ENABLE_SVG build shortly. We expect this feature to be eventually enabled by all ports. Looking forward to your comments.
  2. All features/ports are expected to covered by a buildbot at within six months of their addition. We want to encourage experimentation, but it's important to make sure we can maintain our experiments, buildbots allow us to do this.

Reviewers are expected to remind contributors when making feature additions to follow these guidelines.

These guidelines were created in response to the "Can WebKit Say No?" session at the 2011 contributors meeting. These guidelines should be regarded as "experimental" as we plan to review their effectiveness (and possibly amend/remove them) at the 2012 contributors meeting.