state of the kit (fosdem 2013)
DESCRIPTION
By Adrian Perez de Castro. In the session we will talk about WebKitGTK+ new release and plans. The new WebKit2 API is going to be stable very soon, we will explain the differences, new additions and current situation of the API in more detail and we will show how to embed and use the new widget. We also will explain the multiple features we have added in the last year (accelerated compositing, gstreamer 1.0, networking, etc.) and the roadmap for the next year. Also as usual we will add nice demos. The talk should be interesting for embedders because new WebKit2GTK+ API should be used in the near future.TRANSCRIPT
State of the ${kit}(kit=WebKitGTK+)
Adrián PérezIgalia
WebKit BasicsIncludes WebKitGTK+
What is WebKit?
#webkitgtk #fosdem 4/24
What is WebKitGTK+?
#webkitgtk #fosdem 5/24
What is WebKit2?
#webkitgtk #fosdem 6/24
Who is using it?
#webkitgtk #fosdem 7/24
Previously on WebKitGTK+…Stable release 1.10.x
#webkitgtk #fosdem
Now enabled by default:
New features:
Boatloads of bugfixes.
WebKit2GTK+ API augmented, nearing stabilization:
·
Geolocation
WebGL
Web Timing
-
-
-
·
Accelerated compositing
Smooth scrolling
Full-screen mode
HTML5 History API
WebAudio
JSC LLint
-
-
-
-
-
-
·
·
To happen with GNOME 3.8, including Epiphany.- 8/24
WebKit2 nowState of the art
#webkitgtk #fosdem
WebKit2 announced in April 2010
Apple has released Safari using it
Cross-platform internal C API exists
One Two Qt browsers out there in the wild
WebKitGTK+ is the next to have support ☺
·
·
·
·
N9 browser: uses the C API
Snowshoe: uses Qt5
-
-
·
9/24
So… How's WebKit2GTK+ doing?The evil is in the details
Doing nicely:
#webkitgtk #fosdem
The basics have been working for quite a while
Most of the small details are already in place as of 1.10:
·
·
Context menus
Web inspector
Favicons
On-disk cache
Spell checking
Printing support
Documentation, GI annotations…
-
-
-
-
-
-
-
10/24
WebKit2 changes(For developers)
WebKit1GTK+
Goal: same API for WebKit1GTK+ and WebKit2GTK+
#webkitgtk #fosdem
GtkWidget *wkt = webkit_web_view_new ();WebKitWebSettings *settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (wkt))/* Configure using the the “settings” object */GtkWidget *win = gtk_window_new (GTK_WINDOW_TOPLEVEL);gtk_container_add (GTK_CONTAINER (win), wkt);webkit_web_view_load_uri (WEBKIT_WEB_VIEW (wkt), "http://fosdem.org");gtk_widget_show_all (win);gtk_main ();
C
12/24
WebKit2GTK+
Goal: same API for WebKit1GTK+ and WebKit2GTK+
#webkitgtk #fosdem
GtkWidget *wkt = webkit_web_view_new ();WebKitSettings *settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (wkt))/* Configure using the the “settings” object */GtkWidget *win = gtk_window_new (GTK_WINDOW_TOPLEVEL);gtk_container_add (GTK_CONTAINER (win), wkt);webkit_web_view_load_uri (WEBKIT_WEB_VIEW (wkt), "http://fosdem.org");gtk_widget_show_all (win);gtk_main ();
C
There are some changes, though!
For simple uses changes are none or minimal
Start porting your application now!
·
·
·
13/24
Differences are small(–ish)
#webkitgtk #fosdem
Some classes renamed (mostly removing “Web”):
Some new classes (mostly new fatures):
Some classes gone away (no longer needed, or missing):
·
WebKitWebSettings → WebKitSettingsWebKitWebPlugin → WebKitPluginWebKitWebHistoryItem → WebKitBackForwardListItem…
-
-
-
-
·
WebKitContextMenuWebKitSecurityManager…
-
-
-
·
WebKitWebPluginDatabaseWebKitWebFrame…
-
-
-
14/24
What next?A sneak peek
To the future… and beyondSlicker media controls
New media controls
Old media controls
#webkitgtk #fosdem 16/24
To the future… and beyondWebKitGTK+ on Wayland with WebGL
#webkitgtk #fosdem
0:51
17/24
To the future… and beyondEpiphany overview
Epiphany overview
#webkitgtk #fosdem 18/24
To the future… and beyondEpiphany “UXperiments”
#webkitgtk #fosdem
0:00
19/24
To the future… and beyondAnd more!
#webkitgtk #fosdem
Text rendering with Harfbuzz
GObject Introspection for WebKit2GTK+
GStreamer 1.0 for multimedia
HW accelerated video rendering
WebP and Opus support
Native notifications
Web applications
Print preview
Win32 (printing, IPC, etc.)
…${FEATURE}
·
·
·
·
·
·
·
·
·
·
·
20/24
Wrapping upConclusions, everybody ♥ these
Conclusionstl;dr
#webkitgtk #fosdem
Mature port, widely used
Released regularly, every ~6 months
Well maintained
Useable for developing serious browsers
Scales from desktop to embedded
WebKit2GTK+ API nearing completion, stabilization approaching
WebKit1GTK+ API still being maintained
·
·
·
·
·
·
Beta since 3.6
Epiphany adopting it for 3.8
-
-
·
New features and improvements for WebKit2GTK+ first-
22/24
ContributingEvery single bit matters
#webkitgtk #fosdem
bugs.webkit.org
webkitgtk.org
webkit.org
·
·
·
Mailing lists:·
[email protected]@lists.webkit.org
-
-
IRC channels on irc.freenode.net:·
#webkitgtk+#webkit
-
-
23/24
Thank You!…and enjoy the rest of FOSDEM
twitter @aperezdcwww perezdecastro.orggithub github.com/aperezdc