Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
WebKit
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Origins== The code that would become WebKit began in 1998 as the ''KDE HTML'' ([[KHTML]]) layout engine and ''KDE JavaScript'' ([[KJS (software)|KJS]]) engine. The WebKit project was started within Apple by Lisa Melton<ref name="lisamelton.net">{{cite web |title=Lisa Melton |url=https://lisamelton.net/ |website=Lisa Melton .net |access-date=17 December 2024 |date=2 February 2024}}</ref> on June 25, 2001,<ref>{{cite web|last=Melton|first=Don |title=Attention Internets! WebKit is not 10 years old today. That happened on June 25. I know the date because that's when I started the project.|url=https://www.twitter.com/donmelton/status/106603038575296512|work=Twitter|access-date=October 13, 2011|date=August 25, 2011 |url-status=live |archive-url=https://web.archive.org/web/20210420124207/https://twitter.com/donmelton/status/106603038575296512 |archive-date= Apr 20, 2021 }}</ref><ref name="start_date">{{cite news |last1=Henry |first1=Charlotte |title=Happy 20th Birthday, Safari and Webkit! |url=https://www.macobserver.com/news/happy-20th-birthday-safari-and-webkit/ |access-date=12 August 2023 |work=The Mac Observer |date=25 June 2021}}</ref> as a [[software fork|fork]] of [[KHTML]] and [[KJS (software)|KJS]]. Melton explained in an e-mail to KDE developers<ref name="macport" /> that [[KHTML]] and [[KJS (software)|KJS]] allowed easier development than other available technologies by virtue of being small (fewer than 140,000 [[lines of code]]), cleanly designed and standards-compliant. KHTML and KJS were ported to [[macOS]] with the help of an adapter [[Library (computing)|library]] and renamed WebCore and JavaScriptCore.<ref name="macport"/> JavaScriptCore was announced in an e-mail to a KDE [[mailing list]] in June 2002, alongside the first release of Apple's changes.<ref name="annjavascript">{{cite mailing list |url=http://www.opendarwin.org/pipermail/kde-darwin/2002-June/000034.html |title=JavaScriptCore, Apple's JavaScript framework based on KJS |mailing-list=kde-darwin |last=Stachowiak |first=Maciej |author-link=Maciej Stachowiak |date=June 13, 2002 |access-date=August 21, 2008 |archive-url=https://web.archive.org/web/20070310215550/http://www.opendarwin.org/pipermail/kde-darwin/2002-June/000034.html |archive-date=March 10, 2007 |url-status=dead |df=mdy-all}}</ref> According to Apple, some changes which called for different development tactics involved macOS-specific features that are absent in KDE's KHTML, such as [[Objective-C]], KWQ (pronounced "quack") an implementation of the subset of Qt required to make KHTML work on macOS written in Objective C++, and macOS calls.<ref>{{cite web |url=http://www.kdedevelopers.org/node/1006 |archive-url=https://web.archive.org/web/20060303184216/http://www.kdedevelopers.org/node/1006 |url-status=usurped |archive-date=March 3, 2006 |title=Safari and KHTML again |publisher=kdedevelopers.org |date=April 30, 2005 |access-date=February 20, 2010}}</ref> ===Split development=== The exchange of code between WebCore and KHTML became increasingly difficult as the code base diverged because both projects had different approaches in coding and code sharing.<ref>{{cite web |url= http://www.kdedevelopers.org/node/1001 |title= So, when will KHTML merge all the WebCore changes? |publisher= kdedevelopers.org |access-date= February 20, 2010 |url-status= usurped |archive-url= https://web.archive.org/web/20100529065425/http://www.kdedevelopers.org/node/1001 |archive-date= May 29, 2010 |df= mdy-all }}</ref> At one point KHTML developers said they were unlikely to accept Apple's changes and claimed the relationship between the two groups was a "bitter failure".<ref>{{cite web|url= https://blogs.kde.org/2005/04/29/bitter-failure-named-safari-and-khtml|title= The bitter failure named 'safari and khtml'|date= April 29, 2005|url-status= live|archive-url= https://web.archive.org/web/20150415005639/https://blogs.kde.org/2005/04/29/bitter-failure-named-safari-and-khtml|archive-date= April 15, 2015|df= mdy-all}}</ref> They claimed Apple submitted their changes in large patches containing multiple changes with inadequate documentation, often in relation to future additions to the codebase. Thus, these patches were difficult for the [[KDE]] developers to integrate back into KHTML.<ref>{{cite web|url= http://news.cnet.com/Open-source-divorce-for-Apples-Safari/2100-1032_3-5703819.html|title= Open-source divorce for Apple's Safari?|url-status= live|archive-url= https://web.archive.org/web/20090707214349/http://news.cnet.com/Open-source-divorce-for-Apples-Safari/2100-1032_3-5703819.html|archive-date= July 7, 2009|df= mdy-all}}</ref> Also, Apple had demanded that developers sign non-disclosure agreements before looking at Apple's source code and even then they were unable to access Apple's bug database.<ref>{{cite web|url= http://lists.apple.com/archives/Webcore-dev/2005/Jun/msg00009.html|title= WebCore open source changes|access-date= May 14, 2016|url-status= dead|archive-url= https://web.archive.org/web/20160527125414/http://lists.apple.com/archives/Webcore-dev/2005/Jun/msg00009.html|archive-date= May 27, 2016|df= mdy-all}}</ref> During the publicized "divorce" period, KDE developer Kurt Pfeifle (''pipitas'') posted an article claiming KHTML developers had managed to [[backporting|backport]] many (but not all) Safari improvements from WebCore to KHTML, and they always appreciated the improvements coming from Apple and still do so. The article also noted Apple had begun to contact KHTML developers about discussing how to improve the mutual relationship and ways of future cooperation.<ref>{{cite web|url= http://www.kdedevelopers.org/node/1049|title= WebCore β KHTML β Firefox: Know your facts!|url-status= usurped|archive-url= https://web.archive.org/web/20090210230809/http://www.kdedevelopers.org/node/1049|archive-date= February 10, 2009}}</ref> In fact, the KDE project was able to incorporate some of these changes to improve KHTML's rendering speed and add features, including compliance with the [[Acid2]] rendering test.<ref>{{cite web|url= https://blogs.kde.org/node/1129|title= Konqueror now passes Acid2|url-status= live|archive-url= https://web.archive.org/web/20170621121118/https://blogs.kde.org/node/1129|archive-date= June 21, 2017|df= mdy-all}}</ref> Following the appearance of a story of the fork in the news, Apple released the source code of the WebKit fork in a public [[revision control|revision-control]] repository.<ref name="kdenews2007-06-05">{{cite news |url= http://dot.kde.org/2005/06/07/apple-opens-webkit-cvs-and-bug-database |title= Apple Opens WebKit CVS and Bug Database |last= Molkentin |first= Daniel |date= June 7, 2005 |work= KDE News |access-date= January 16, 2007 |url-status= live |archive-url= https://web.archive.org/web/20090715100234/http://dot.kde.org/2005/06/07/apple-opens-webkit-cvs-and-bug-database |archive-date= July 15, 2009 |df= mdy-all }}</ref> The WebKit team had also reversed many Apple-specific changes in the original WebKit code base and implemented platform-specific abstraction layers to make committing the core rendering code to other platforms significantly easier.<ref>{{cite web|url= https://arstechnica.com/journals/apple.ars/2007/06/12/ars-at-wwdc-interview-with-lars-knoll-creator-of-khtml|title= Ars at WWDC: Interview with Lars Knoll, creator of KHTML|date= June 12, 2007|url-status= live|archive-url= https://web.archive.org/web/20080531052913/http://arstechnica.com/journals/apple.ars/2007/06/12/ars-at-wwdc-interview-with-lars-knoll-creator-of-khtml|archive-date= May 31, 2008|df= mdy-all}}</ref> In July 2007, ''[[Ars Technica]]'' reported that the KDE team would move from KHTML to WebKit.<ref name="arsunfork">{{cite web |url= https://arstechnica.com/journals/linux.ars/2007/07/23/the-unforking-of-kdes-khtml-and-webkit |title= The unforking of KDE's KHTML and WebKit |access-date= July 30, 2007 |last= Unrau |first= Troy |date= July 23, 2007 |publisher= Ars Technica |url-status= live |archive-url= https://web.archive.org/web/20070930075415/http://arstechnica.com/journals/linux.ars/2007/07/23/the-unforking-of-kdes-khtml-and-webkit |archive-date= September 30, 2007 |df= mdy-all }}</ref> Instead, after several years of integration, KDE Development Platform version 4.5.0 was released in August 2010 with support for both WebKit and KHTML, and development of KHTML continued until 2016 before it was officially discontinued in 2023.<ref name="kde4.5.0"> {{cite web |url = http://kde.org/announcements/4.5/platform.php |title = KDE Development Platform 4.5.0 gains performance, stability, new high-speed cache and support for WebKit |url-status = live |archive-url = https://web.archive.org/web/20110314205743/http://www.kde.org/announcements/4.5/platform.php |archive-date = March 14, 2011 |df = mdy-all }} </ref><ref name="discontinued">{{cite web |title=KHTML repository |quote=Removed for KF6, the 'kf5' branch contains the last maintained state. |url=https://github.com/KDE/khtml/tree/6d89b39ddb93aa5b655508c0b5295f3f4db626b8 |website=GitHub |access-date=5 May 2023}}</ref> ===Open-sourcing=== On June 7, 2005, Safari developer [[Dave Hyatt]] announced on his [[weblog]] that Apple was open-sourcing WebKit (formerly, only WebCore and JavaScriptCore were open source) and opening up access to WebKit's [[revision control]] tree and the issue tracker.<ref name="kdenews2007-06-05"/> In mid-December 2005, support for [[Scalable Vector Graphics]] (SVG) was merged into the standard build.<ref name="kdestandard">{{cite web|url=http://dot.kde.org/1121021917/|title=Next Generation KDE Technologies Ported to WebCore|date=July 10, 2005|url-status=live|archive-url=https://web.archive.org/web/20071013150411/http://dot.kde.org/1121021917/|archive-date=October 13, 2007|df=mdy-all}}</ref> WebKit's JavaScriptCore and WebCore components are available under the GNU Lesser General Public License, while the rest of WebKit is available under the BSD 2-Clause license.<ref name="licensing"/> ===Further development=== {{Update|section|date=July 2015}} Beginning in early 2007, the development team began to implement [[Cascading Style Sheets]] (CSS) extensions, including [[CSS Animations|animation]], transitions and both 2D and 3D transforms;<ref>{{cite news|url=https://webkit.org/blog/130/css-transforms/|title=CSS Transforms|newspaper=Webkit |date=October 26, 2007|url-status=live|archive-url=https://web.archive.org/web/20170113134857/https://webkit.org/blog/130/css-transforms/|archive-date=January 13, 2017|df=mdy-all}}</ref> such extensions were released as working drafts to the [[World Wide Web Consortium]] (W3C) in 2009 for standardization.<ref>{{cite web|url=http://dev.w3.org/csswg/css3-animations/|title=CSS3 Animations|url-status=live|archive-url=https://web.archive.org/web/20090221121910/http://dev.w3.org/csswg/css3-animations/|archive-date=February 21, 2009|df=mdy-all}}</ref> In November 2007, the project announced that it had added support for media features of the [[HTML5]] draft specification, allowing embedded video to be natively rendered and script-controlled in WebKit.<ref>{{cite web|url=https://webkit.org/blog/140/html5-media-support/|title=HTML5 Media Support|last=Koivisto|first=Antti|work=Surfin' Safari blog|date=November 12, 2007|url-status=live|archive-url=https://web.archive.org/web/20170113134814/https://webkit.org/blog/140/html5-media-support/|archive-date=January 13, 2017|df=mdy-all}}</ref> On June 2, 2008, the WebKit project announced they rewrote JavaScriptCore as "SquirrelFish", a [[bytecode]] [[interpreter (computing)|interpreter]].<ref name="Announcing SquirrelFish">{{cite web|url=https://webkit.org/blog/189/announcing-squirrelfish/|title=Announcing SquirrelFish|date=June 2, 2008|url-status=live|archive-url=https://web.archive.org/web/20170127124319/https://webkit.org/blog/189/announcing-squirrelfish/|archive-date=January 27, 2017|df=mdy-all}}</ref><ref name="SquirrelFish project">{{cite web|url=https://trac.webkit.org/wiki/SquirrelFish|title=SquirrelFish project}}</ref> The project evolved into SquirrelFish Extreme (abbreviated SFX), announced on September 18, 2008, which [[compiler|compiles]] JavaScript into native [[machine code]], eliminating the need for a bytecode interpreter and thus speeding up JavaScript execution.<ref name="Introducing SquirrelFish Extreme">{{cite web|url=https://webkit.org/blog/214/introducing-squirrelfish-extreme/|title=Introducing SquirrelFish Extreme|date=September 18, 2008|url-status=live|archive-url=https://web.archive.org/web/20161126112934/https://webkit.org/blog/214/introducing-squirrelfish-extreme/|archive-date=November 26, 2016|df=mdy-all}}</ref> Initially, the only supported processor architecture for SFX was the [[x86]], but at the end of January 2009, SFX was enabled for macOS on [[x86-64]] as it passes all tests on that platform.<ref name="x86-64">{{cite web|url=https://trac.webkit.org/changeset/40439 |title=Changeset 40439 β WebKit |publisher=Trac.webkit.org |date=January 30, 2009 |access-date=December 27, 2010}}</ref> ===WebKit2=== On April 8, 2010, a project named WebKit2 was announced to redesign WebKit. Its goal was to abstract the components that provide web rendering cleanly from their surrounding interface or application shell, creating a situation where, "web content (JavaScript, HTML, layout, etc) lives in a separate process from the application UI". This abstraction was intended to make reuse a more straightforward process for WebKit2 than for WebKit. WebKit2 had "an incompatible API change from the original WebKit", which motivated its name change.<ref name=webkit2wiki>{{cite web|url=https://trac.webkit.org/wiki/WebKit2|title=WebKit2 wiki|publisher=Webkit.org|access-date=August 3, 2012}}</ref> The WebKit2 targets were set to Linux, macOS, Windows, [[GTK]], and [[MeeGo]]-Harmattan.<ref>{{cite web |url=https://lists.webkit.org/pipermail/webkit-dev/2010-April/012235.html |title=Announcing WebKit2 |date=April 8, 2010 |publisher=Webkit.org |access-date=December 27, 2010 |url-status=live |archive-url=https://web.archive.org/web/20110423042000/https://lists.webkit.org/pipermail/webkit-dev/2010-April/012235.html |archive-date=April 23, 2011 |df=mdy-all }}</ref><ref name=meego-harmattan>{{cite web|url=http://conversations.nokia.com/2011/06/21/introducing-the-nokia-n9-all-it-takes-is-a-swipe/|title=Introducing the Nokia N9: all it takes is a swipe! |Nokia Conversations β The official Nokia Blog|publisher=Nokia Corporation|access-date=June 21, 2011|archive-url=https://web.archive.org/web/20110624125835/http://conversations.nokia.com/2011/06/21/introducing-the-nokia-n9-all-it-takes-is-a-swipe|archive-date=June 24, 2011|url-status=dead|df=mdy-all}}</ref> Safari for macOS switched to the new API with version 5.1.<ref>{{cite web|url=https://trac.webkit.org/browser/releases/Apple/Safari%205.1/WebKit2?rev=91373| title=Source code repository for public parts of Safari 5.1|publisher=The WebKit Open Source Project| access-date=July 20, 2011}}</ref> Safari for iOS switched to WebKit2 with iOS 8.<ref>{{cite web|title=WWDC 2014 Session 206 - Introducing the Modern WebKit API - ASCIIwwdc|url=http://asciiwwdc.com/2014/sessions/206|access-date=December 13, 2014|archive-date=December 13, 2014|archive-url=https://web.archive.org/web/20141213032037/http://asciiwwdc.com/2014/sessions/206|url-status=dead}}</ref> The original WebKit API has been renamed WebKitLegacy API.<ref>{{cite web|url=https://bugs.webkit.org/show_bug.cgi?id=132399 | title=132399 β Move the legacy WebKit API into WebKitLegacy.framework and move it inside WebKit.framework|publisher=Webkit.org}}</ref> WebKit2 API has been renamed just plain WebKit API.<ref>{{cite web|url=https://lists.webkit.org/pipermail/webkit-dev/2017-July/029257.html|title=Renaming Directories and Project Files to Match Framework Names|date=July 10, 2017 |publisher=Webkit.org}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)