State and Future of Qt Webkit Allan Sandfeld Jensen Digia Germany San Francisco, 8th of November 2013
Who am I? Allan Sandfeld Jensen Living in Berlin and working on Qt WebKit for Digia Hired by Nokia in 2011 and transfered to Digia in 2012 Maintainer of Qt WebKit since last month Been active in KDE since 2001 Originally worked on aRts, aKode and Phonon Worked on KHTML from 2004 to 200?
Outline State of Qt WebKit Overview of Qt WebKit New features in Qt WebKit Optional features in Qt WebKit Limitations and future of Qt WebKit
Recent history in WebKit Qt WebKit was developed upstream Apple being Apple Google left in April Digia was left maintaining Windows and Android (Apple does not even support the OS X versions Qt does) Digia will make new Chromium based Qt WebEngine Qt WebKit left upstream last week
State of WebKit Contributors and commits per month halved
State of Qt WebKit What is going to happen now, is Qt WebKit dead?
Future of Qt WebKit Qt WebKit in 5.2 is based on a new branch of WebKit trunk The diff is well over 2 millions lines: Mega merge The Qt port is beinghas been removed from WebKit trunk No new branches of WebKit trunk ...
Future of Qt WebKit Continued support of Qt WebKit in Qt 5.x Best effort compatibility in Qt WebEngine. Compatibility will likely be best for the QQuick2 API Qt WebKit likely to be fully or partially deprecated after Qt 5.3 Some features of the Qt WebKit API will not be possible in Qt WebEngine
Overview of Qt WebKit Versions Qt WebKit 2.2 (Qt 4.8) Based on WebKit from September 2011 Qt 5.0 Based on WebKit from November 2012 (r136242) Qt WebKit 2.3 Unofficial backport for Qt 4.8 As close to the Qt 5.0/5.1 branch as possible Qt 5.1 Based on WebKit from November 2012 (r136242) Same branch as Qt 5.0, but with extra cherries on top Qt 5.2 Based on WebKit from July 2013 (r153112)
Overview of Qt WebKit APIs QWebView WebKit1 (single process API) QWidget API QGraphicsWebView WebKit1 (single process API) QGraphicsScene API OpenGL acceleration possible QDeclarativeWebView QQuickWebView WebKit2 (multi process API) QQuick2 API Always OpenGL accelerated
New features in Qt WebKit JavaScript JIT/LLInt MIPS/SH4 : LLInt, JIT, JIT DFG Windows 64 : JIT x87 (x86 FP minus SSE2) : LLInt JavaScript Garbage Collection Incremental sweeper Activity triggered Parallel threaded Font rendering Kerning by default. For instance: TeaToolsVAV, Web Fonts: WOFF support, better SVG fonts.
New features in Qt WebKit Canvas Path Object Page Visibility API New API for visibility aware web apps. Link prefetch <link rel="prefetch" href="www.example.com"> Mouseenter and mouseleave events Better for hover effects than mouseover mouseout. Web Notifications Geo Location (depends on new QtPositioning module, and geoclue on Linux) CSS compositing and background-blend-mode. Example
New features in Qt WebKit CSS Image-rendering quality image-rendering: auto; image-rendering: optimizeQuality; image-rendering: optimizeSpeed; CSS Filters and Shaders: Adobe CSS Filter Lab CSS Regions: Region example CSS Grid, Shapes, Multi column and improved animations
Optional features in Qt WebKit How can I tell which features are enabled? Listed when running qmake You can enable disabled features using WEBKIT_CONFIG You can also edit qtwebkit/qmake/mkspecs/features/features.pri
Optional features in Qt WebKit CSS Text Decoration 3 WEBKIT_CONFIG+=css3_text -webkit-text-decoration-style: wavy -webkit-text-decoration-style: double MathML WEBKIT_CONFIG+=mathml N 1 i = 1 ( x i − μ ) 2 . σ = ∑ N Download attribute WEBKIT_CONFIG+=download_attribute
Optional features in Qt WebKit CSS Variables WEBKIT_CONFIG+=css_variables Shadow DOM API WEBKIT_CONFIG+=shadow_dom WebAudio (GStreamer only) WEBKIT_CONFIG+=web_audio MediaStream (GStreamer only, some hacking required) WEBKIT_CONFIG+=media_stream HTML5 Video text track (subtitles, captions, etc. WEBKIT_CONFIG+=video_track Help out, and you might see some of these features in Qt 5.3
Limitations in Qt WebKit QML2 on embedded, and non-X11 Linux Plugins in WebKit2 on non-Linux LLInt and DFG on Windows 64 OpenGL acceleration requires specific setup or WebKit2 Currently no Android support iOS support is not possible either, but that will be the same for Qt WebEngine
Unique features of Qt WebKit Single process Access to JavaScript objects (for now) Synchronous access to JavaScript objects Synchronous access to web engine internals Synchronous access from JavaScript to QObjects Replaceable QNetworkAccessManager (for now) Low memory consumption A feature complete API (for now) JIT support for less common architectures
What do you need? Mailing-list: webkit-qt@lists.webkit.org Speaker: Allan Sandfeld Jensen <allan.jensen@digia.com>
Recommend
More recommend