The WebKit Web Browser Engine in Google Chrome for Linux

Page content

As its Web browser engine for Google Chrome on Linux, the Chromium Project has adopted WebKit. As a key component, with enough breadth and depth for its own article series, here WebKit is framed in the context of Google Chrome for Linux.

Overview of the WebKit Project

“Web browser engine” is, frankly, a vague term. And as this thing known as a “Web browser engine”, WebKit continues to evolve. For these reasons, it makes sense to set the stage for the WebKit Project by summarizing its goals:

  • Be focused on, and able to, process Web content - e.g., markup, scripts, etc.
  • Be embeddable in other applications - be an engine, but not a browser
  • Be Open Source - in terms of development, support, licensing, etc.
  • Be compatible - from the user’s perspective and with existing Web content
  • Be standards compliant - by engaging directly in the standards process, and implementing against standards
  • Be stable - a production-ready engineering solution, not a research project
  • Perform well - by adopting an always-room-for-improvement attitude
  • Be secure
  • Be portable - by leveraging, not reinventing the platform, and by providing APIs
  • Be usable - acknowledge being one-step removed from interface design … but be respectful of that
  • Be hackable - in addition to principles surrounding Open Source development, deliver code that can be understood by mere mortals - abstracting rocket-science code through usable interfaces

Mindful of these goals, WebKit continues to evolve. Significant efforts are organized into projects that broadly fall into two categories:

  • General Projects - Compatibility and performance lead the list of projects in this area. Based on their stated goals, plus references peppered-to-detailed elsewhere on the Project’s Web site, it is fair to state that WebKit is obsessed with compatibility and performance. And why not! These are excellent obsessions that I’m sure (in part) account for WebKit’s adoption (please see below). Other projects in this category are addressing the cleanup of code, portability and documentation.
  • Specific Projects - A number of the projects in this category aim to improve WebKit’s implementation of various mark-up and scripting languages. Not surprisingly, one of the projects focuses on improving WebKit’s existing JavaScript engine. And eventhough it is claimed that this JavaScript engine already performs well, it is noteworthy in the context of Google Chrome for Linux, that the Chromium Project has developed its own JavaScript engine. (The Chromium Project’s JavaScript engine, V8, will be the subject of a subsequent article in this series.) Finally, there are a number of early stage projects on XML itself, XPath and XSLT.

In transitioning from goals to projects, you might be getting the impression that WebKit is not quite ready for prime time. As the next section demonstrates, nothing could be further from the truth.

WebKit In Practice

Today, WebKit represents the cumulative efforts of individuals to Open Source (e.g., KDE Project) and commercial (e.g., Apple, Google, Nokia and Torch Mobile) entities. As one of the commercial entities involved in the WebKit Project, Google’s contributions have been in support of Chrome and Android - including work on portability, bug fixes, security improvements, and various other contributions. Owing to this investment, WebKit is indeed production-ready and seeing adoption in:

  • Web broswers - Other than Google Chrome, Apple Safari is a notable adopter of WebKit. And though not explicitly identified by the WebKit Project, Mesa Dynamics Stainless (Apple Mac OS X Leopard only) has also adopted WebKit.
  • E-Mail clients - Commercial offerings for Apple Mac OS X from Apple (Apple Mail) and Microsoft (Microsoft Entourage) are particularly notable WebKit adopters.
  • Instant Messenger/Chat Clients - Again, commercial entries from Microsoft (MSN Messenger) and Yahoo! (Yahoo Messenger) top this list, along with one of my favorites (Adium, for the Mac OS X platform).
  • RSS readers.
  • Web development applications.
  • Blog and text editors plus viewers.
  • Kiosk software.
  • Media players - Including adoption by the highly popular RealNetworks Real Player.
  • Desktop wallpaper browsers.
  • Miscellaneous - Even though a catch-all category for WebKit adoption that doesn’t fit elsewhere (above), included in here are staples for the Apple Mac from Aperture to desktop applications/utilities/widgets/etc. to Xcode plus a number of other Open Source and commercial entries.

Although Google Chrome is casting even more attention on WebKit, it is quite clear that there is vested interest from a number of additional perspectives and players. And to state the obvious, for WebKit, that is also a good thing.

WebKit and Google Chrome

WebKit can be obtained directly from the Project. And because its source code is available, WebKit can be ported to different platforms. For those interested in WebKit solely in the context of Google Chrome for Linux, it is recommended that use is made of the version of WebKit that is bundled with Chromium Project’s tarball. This bundled version of WebKit has been tweaked for Linux. Additionally, this bundled version of WebKit has been tweaked for use as the Web browser engine in Google Chrome. Interestingly this latter tweaking has disabled WebKit’s Javascript engine. Instead Google Chrome for Linux makes use of the V8 Javascript engine. Because V8 is the subject of the next article in this series, the rationale for this decision will soon become evident.

This post is part of the series: Google Chrome for Linux

Google Chrome is shaking up the status quo for Web browsers. This series explores and expounds Chrome as it evolves for the Linux platform.

  1. Google Chrome for Linux: Building from Source
  2. Google Chrome for Linux: Testing and Contributing
  3. Google Chrome for Linux: The WebKit Web Browser Engine
  4. Google Chrome for Linux: The V8 JavaScript Engine
  5. Google Chrome for Linux: Why V8 Bests WebKit’s JavaScript Engine
  6. Google Chrome for Linux: Android Availability