Archive for July, 2007

So Long KHTML, Long Live WebKit

Tuesday, July 24th, 2007

Once upon a time, there was KHTML, The K Desktop Environment’s Hypertext Markup Language rendering engine. Later, Apple decided to write a web browser. For whatever reason, Apple embraced KHTML, forked it, and created WebKit. There was much pleasure and much gnashing of teeth.

In mid-2003, Apple release Safari 1.0, ending the beta stage of development. The betas caused such a wave that Microsoft announced it would discontinue development of Internet Explorer for Mac (assuming they were developing it at all), and other browser developers made similar threats (i.e. Opera and Chimera). Meanwhile, other Mac browsers were reporting they would swap to WebKit. Needless to say, Mac users adopted Safari in droves, making Safari a major player in the browser space.

By 2005, however, Apple seemed to be shafting the KHTML team by not releasing patches, or releasing patches that were very difficult to merge into the main trunk, if they could be merged at all. This caused a bit of disdain in the open source development community (though Dave Hyatt queried for help on how to rectify the situation), but widely had no negative effect on Safari’s usage. Apple released WebKit, complete with version history, a few months later.

WebKit even crossed into the mobile space. The acclaimed WebKit-based Series 60 web browser from Nokia was released as open source, proving that WebKit was a viable rendering engine for mobile devices. Recently, Apple released the iPhone, which, of course, has a WebKit browser included. Safari Mobile builds on the concepts of the Series 60 browser, but easily one-ups it.

Yet, all this time, KHTML and WebKit have diverged, and were predicted never to merge. This prophecy held true. Recently, KDE decided to adopt WebKit and eventually remove KHTML after some final KHTML features are ported into WebKit. With recent additions to the WebKit family (e.g., Safari for Windows, Abrowse, Epiphany, and Adobe’s Air), all the major, graphical, desktop browsers will be united under the four major rendering engines (the others being the Internet Explorer Trident family, Gecko, and Opera). Also, TrollTech will bring WebKit into QT, which will allow the use of cross-platform WebKit integration with relative ease, hopefully countering the use of Internet Explorer’s engine in Microsoft’s development environments. I doubt this will swing WebKit to a much higher rank, but it certainly bodes well for the longevity of the project.