24

State of the kit (FOSDEM 2013)

  • Upload
    igalia

  • View
    139

  • Download
    2

Embed Size (px)

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.

Citation preview

Page 1: State of the kit (FOSDEM 2013)
Page 2: State of the kit (FOSDEM 2013)

State of the ${kit}(kit=WebKitGTK+)

Adrián PérezIgalia

Page 3: State of the kit (FOSDEM 2013)

WebKit BasicsIncludes WebKitGTK+

Page 4: State of the kit (FOSDEM 2013)

What is WebKit?

#webkitgtk #fosdem 4/24

Page 5: State of the kit (FOSDEM 2013)

What is WebKitGTK+?

#webkitgtk #fosdem 5/24

Page 6: State of the kit (FOSDEM 2013)

What is WebKit2?

#webkitgtk #fosdem 6/24

Page 7: State of the kit (FOSDEM 2013)

Who is using it?

#webkitgtk #fosdem 7/24

Page 8: State of the kit (FOSDEM 2013)

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

Page 9: State of the kit (FOSDEM 2013)

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

Page 10: State of the kit (FOSDEM 2013)

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

Page 11: State of the kit (FOSDEM 2013)

WebKit2 changes(For developers)

Page 12: State of the kit (FOSDEM 2013)

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

Page 13: State of the kit (FOSDEM 2013)

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

Page 14: State of the kit (FOSDEM 2013)

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

Page 15: State of the kit (FOSDEM 2013)

What next?A sneak peek

Page 16: State of the kit (FOSDEM 2013)

To the future… and beyondSlicker media controls

New media controls

Old media controls

#webkitgtk #fosdem 16/24

Page 17: State of the kit (FOSDEM 2013)

To the future… and beyondWebKitGTK+ on Wayland with WebGL

#webkitgtk #fosdem

0:51

17/24

Page 18: State of the kit (FOSDEM 2013)

To the future… and beyondEpiphany overview

Epiphany overview

#webkitgtk #fosdem 18/24

Page 19: State of the kit (FOSDEM 2013)

To the future… and beyondEpiphany “UXperiments”

#webkitgtk #fosdem

0:00

19/24

Page 20: State of the kit (FOSDEM 2013)

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

Page 21: State of the kit (FOSDEM 2013)

Wrapping upConclusions, everybody ♥ these

Page 22: State of the kit (FOSDEM 2013)

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

Page 23: State of the kit (FOSDEM 2013)

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

Page 24: State of the kit (FOSDEM 2013)

Thank You!…and enjoy the rest of FOSDEM

twitter @aperezdcwww perezdecastro.orggithub github.com/aperezdc