SlideShare una empresa de Scribd logo
1 de 66
Descargar para leer sin conexión
WebKit and Blink: Bridging the Gap Between
the Kernel and the HTML5 Revolution
Juan J. Sánchez
LinuxCon Japan 2014, Tokyo
Myself, Igalia and WebKit
Co-founder, member of the WebKit/Blink/Browsers team
Igalia is an open source consultancy founded in 2001
Igalia is Top 5 contributor to upstream WebKit/Blink
Working with many industry actors: tablets, phones, smart
tv, set-top boxes, IVI and home automation.
WebKit and Blink Juan J. Sánchez
Outline
1 Why this all matters
2 2004-2013: WebKit, a historical perspective
2.1. The technology: goals, features, architecture, ports,
webkit2, code, licenses
2.2. The community: kinds of contributors and
contributions, tools, events
3 April 2013. The creation of Blink: history, motivations for
the fork, differences and impact in the WebKit community
4 2013-2014: Current status of both projects, future
perspectives and conclusions
WebKit and Blink Juan J. Sánchez
PART 1: Why this all matters
WebKit and Blink Juan J. Sánchez
Why this all matters
Long time trying to use Web technologies to replace native
totally or partially
Challenge enabled by new HTML5 features and improved
performance
Open Source is key for innovation in the field
Mozilla focusing on the browser
WebKit and now Blink are key projects for those building
platforms and/or browsers
WebKit and Blink Juan J. Sánchez
PART 2: 2004-2013
WebKit, a historical perspective
WebKit and Blink Juan J. Sánchez
PART 2.1
WebKit: the technology
WebKit and Blink Juan J. Sánchez
The WebKit project
Web rendering engine (HTML, JavaScript, CSS...)
The engine is the product
Started as a fork of KHTML and KJS in 2001
Open Source since 2005
Among other things, it’s useful for:
Web browsers
Using web technologies for UI development
WebKit and Blink Juan J. Sánchez
Goals of the project
Web Content Engine: HTML, CSS, JavaScript, DOM
Open Source: BSD-style and LGPL licenses
Compatibility: regression testing
Standards Compliance
Stability
Performance
Security
Portability: desktop, mobile, embedded...
Usability
Hackability
WebKit and Blink Juan J. Sánchez
Goals of the project
NON-goals:
“It’s an engine, not a browser”
“It’s an engineering project not a science project”
“It’s not a bundle of maximally general and reusable code”
“It’s not the solution to every problem”
http://www.webkit.org/projects/goals.html
WebKit and Blink Juan J. Sánchez
WebKit features
HTML and XML support
JavaScript support (ECMAScript 5.1)
CSS 2.1, CSS 3 support
SVG support
Support for Plugins (NPAPI, WebKit Plugins)
HTML5 support: multimedia, 3D graphics, advanced CSS
animations and transformations, drag’n’drop, offline &
local storage, connectivity...
Accessibility support
Q&A infrastructure: review process, continuous
integration, 30.000 regression tests, API tests...
Passing ACID3 with 100/100 tests since March 2008
WebKit and Blink Juan J. Sánchez
WebKit Architecture
From a simplified point of view, WebKit is structured this way:
WebKit: thin layer to link against
from the applications
WebCore: rendering, layout,
network access, multimedia,
accessibility support...
JS Engine: the JavaScript engine.
JavaScriptCore by default.
platform: platform-specific hooks to
implement generic algorithms
WebKit and Blink Juan J. Sánchez
What is a WebKit port?
WebKit and Blink Juan J. Sánchez
How many WebKit ports are there?
WebKit is available for different platforms:
Main upstream ports in 2012/2013:
Mac OS X, iOS
GTK+ based platforms (GNOME)
Qt based platforms (KDE)
Enlightenment Foundation Libraries (EFL, Tizen)
Google Chromium / Chrome
WebKitNIX
Other ports: wxWidgets, Brew MP, Symbian devices (S60),
Win32, BlackBerry, Adobe Integrated Runtime (Adobe
AIR)
WebKit and Blink Juan J. Sánchez
Some WebKit based browsers in 2013
Amazon Kindle
Arora
BOLT browser
Epiphany browser
Google Chrome
iCab (version >= 4)
Iris Browser
Konqueror
Midori
Nintendo 3DS
OWB
OmniWeb
PS3 web browser
RockMelt
Safari
SRWare Iron
Shiira
Sputnik for MorphOS
Stainless
Steel for Android
TeaShark
Uzbl
Web Browser for S60 (Nokia)
WebOS Browser
WebKit and Blink Juan J. Sánchez
Architecture of a WebKit port
WebKit and Blink Juan J. Sánchez
Architecture of a WebKit port
WebKit and Blink Juan J. Sánchez
How do we use a WebKit port?
The WebView widget:
A platform-specific widget that renders web content.
It’s the main component and it’s useful for:
Loading URIs or data buffers pointing to HTML content
Go fullscreen, text/text+image zooming...
Navigate back and forward through history...
Events handling:
Allows embedders to get notified when something
important happens or when some input is needed.
Some examples of these events:
Getting notified when a load finished or failed
Asking permission for navigating to an URI
Requesting authorization for something..
WebKit and Blink Juan J. Sánchez
A minibrowser written in Python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import gtk
import webkit
def entry_activated_cb(entry, embed):
embed.load_uri(entry.get_text())
# Widgets and signals
window = gtk.Window()
window.set_default_size(800, 600)
window.set_title("Mini browser written in Python")
embed = webkit.WebView(); # WebKit embed
entry = gtk.Entry()
entry.connect(’activate’, entry_activated_cb, embed)
scroller = gtk.ScrolledWindow()
scroller.add(embed)
# Pack everything up and show
vbox = gtk.VBox(False, 5)
vbox.pack_start(entry, False, False)
vbox.pack_start(scroller)
window.add(vbox)
window.show_all()
# Load a default URI and run
embed.load_uri("http://www.webkit.org")
gtk.main()
WebKit and Blink Juan J. Sánchez
A minibrowser written in Python
WebKit and Blink Juan J. Sánchez
A minibrowser written in C
#include <webkit/webkit.h>
static void entry_activated (GtkEntry *entry, WebKitWebView *embed)
{
webkit_web_view_load_uri (embed, gtk_entry_get_text (entry));
}
int main (int argc, char** argv)
{
gtk_init (&argc, &argv);
/* Widgets and signals */
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
gtk_window_set_title (GTK_WINDOW (window), "Mini browser written in C");
GtkWidget *embed = webkit_web_view_new();
GtkWidget *entry = gtk_entry_new();
g_signal_connect (entry, "activate", G_CALLBACK (entry_activated), embed);
GtkWidget *scroller = gtk_scrolled_window_new(NULL, NULL);
gtk_container_add (GTK_CONTAINER(scroller), embed);
/* Pack everything and show */
GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_box_pack_start (GTK_BOX(vbox), entry, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX(vbox), scroller, TRUE, TRUE, 0);
gtk_container_add (GTK_CONTAINER(window), vbox);
gtk_widget_show_all (window);
/* Load a default URI and run */
webkit_web_view_load_uri (WEBKIT_WEB_VIEW (embed), "http://www.webkit.org");
gtk_main();
return 0;
}
WebKit and Blink Juan J. Sánchez
A minibrowser written in C
WebKit and Blink Juan J. Sánchez
What is WebKit2?
New API layer designed to support a split process model
(First release by Apple on April 8th, 20101).
Different to Chromium’s multi-process implementation
It’s bundled in the framework (reusable)
Different processes take care of different tasks:
UI process: the WebView widget, application UI
Web process: loading, parsing, rendering, layout...
Plugin process: each plugin type in a process
It comes with Inter-Process Communication (IPC)
mechanisms to communicate those processes bundled-in
http://trac.webkit.org/wiki/WebKit2
WebKit and Blink Juan J. Sánchez
WebKit VS WebKit2
WebKit and Blink Juan J. Sánchez
WebKit2 vs WebKit1
Pros:
Isolation
Security (sandboxing, per-process privileges)
Performance if processes are run in parallel
Stability (a crash in the WebProcess does no kill the
application)
WebKit and Blink Juan J. Sánchez
WebKit2 vs WebKit1
Cons:
Higher resource requirements
Multiple processes instead of just one
At the same time easier to release resources
Higher latency interaction with page content due to IPC
Complexity
Coding (more complications interacting directly with page
content)
Debugging
WebKit1 and WebKit2 maintenance
WebKit and Blink Juan J. Sánchez
WebKit2 VS Chromium
WebKit and Blink Juan J. Sánchez
WebKit2: current status
The main ports released WebKit2 browsers by 2013
WebKit1 moving to maintenance mode or removed
Cross-platform and non-blocking C API available
Most challenges of the split process model solved
Lots of new architectural changes about to come (e.g.
Network Process)
WebKit and Blink Juan J. Sánchez
The Source Code in numbers
According to Ohloh on May 17th, lines of code per language,
without considering blank lines nor comments:
Language LoC %
HTML 1,955,561 32.4 %
C++ 1,308,667 27.5 %
JavaScript 962,086 20.8 %
Objective-C 175,669 3.4 %
XML 158,555 2.5 %
C 121,951 3.0 %
PHP 100,345 2.3 %
CSS 93,247 1.6 %
Python 78,348 1.9 %
Perl 76,491 1.7 %
OpenGL Shad 52,234 1.8 %
Other (16) 50,000 1.1 %
Total 4,132,955
https://www.ohloh.net/p/WebKit/analyses/latest/language_summary
Just considering C++, Objective-C and C >1.6M LoC!
Licenses: BSD 3-clause and LGPL
WebKit and Blink Juan J. Sánchez
PART 2.2
WebKit: The community
WebKit and Blink Juan J. Sánchez
A bit of history
Source: http://ariya.ofilabs.com/2011/11/
one-hundred-thousand-and-counting.html
WebKit and Blink Juan J. Sánchez
The WebKit Project in numbers
Commits per month till 2013:
WebKit and Blink Juan J. Sánchez
The WebKit Project in numbers
Contributors per month::
WebKit and Blink Juan J. Sánchez
The WebKit Project in numbers
Evolution in the number of lines of code
WebKit and Blink Juan J. Sánchez
Tracking ongoing work in WebKit
Webkit is a big beast and a lot of organizations with
different agendas are working in different parts:
Implementing new standards (like the CSS shaders from
Adobe, or CSS3 GCPM from Apple)
Improvements in architecture, performance and internal
code (WebKit2)
On top of this there is the maintenance work (testing,
continuous integration, bugfixing)
No single centralized place to follow all the information:
blogs, mailing lists, IRC, etc.
WebKit and Blink Juan J. Sánchez
Activity of Companies by 2013
Based on Bitergia’s report2
Based on reviewed commits
“Gardening” commits filtered out
From the beginning of the project till beginning of 2013
2
http://blog.bitergia.com/2013/02/06/
report-on-the-activity-of-companies-in-the-webkit-project/
WebKit and Blink Juan J. Sánchez
Activity of Companies by 2013
Figura : Commits per company (monthly)
WebKit and Blink Juan J. Sánchez
Activity of Companies by 2013
Figura : Active authors per company (monthly)
WebKit and Blink Juan J. Sánchez
Activity of Companies by 2013
Figura : Commits per company
WebKit and Blink Juan J. Sánchez
Activity of Companies by 2013
Figura : Active authors per company
WebKit and Blink Juan J. Sánchez
Activity of Companies by 2013
Some conclusions from the authors:
Google and Apple leading the project
The diversity of the project has been increasing
Contributions from other parties >25 % and growing
> 20 companies actively contributing to WebKit
1500-2000 commits per month
387 committers from 29 different institutions
WebKit and Blink Juan J. Sánchez
Committers and Reviewers
WebKit Committer
A WebKit Committer should be a person we can trust to follow and
understand the project policies about checkins and other matters.
Has commit rights to the public SVN repository.
WebKit Reviewer
A WebKit Reviewer should be a person who has shown particularly
good judgment, understanding of project policies, collaboration skills,
and understanding of the code.
A WebKit Committer who can review other’s patches.
WebKit and Blink Juan J. Sánchez
Copyright for contributions
There is no copyright transfer for the contributions
Committers sign some papers where they commit to good
behaviour
WebKit and Blink Juan J. Sánchez
Releases
There are no releases of WebKit itself
Each port manages the release cycle, typically aligned with
the target platform schedule
WebKit and Blink Juan J. Sánchez
Types of contributions
Bugfixing and new features in:
An existent port
The core components: webcore and JSC/V8
Creation and maintenance of a new port
WebKit and Blink Juan J. Sánchez
Guidelines for contributing patches to WebKit
1 Get and build the code from the SVN repository
2 Choose or create a bug report to work on
3 Code your changes and make sure you include new
regression or unit tests if needed
4 Create a patch for your changes and submit it asking for
review over it to appropriate reviewers
5 Update and change your patch as many times as needed
6 Once approved, land your patch or ask a
committer/reviewer to do it
7 Watch for any regressions it might have caused
WebKit and Blink Juan J. Sánchez
Creating a port: what needs to be done
High level API (WebKit1 and WebKit2)
Low level backend specific implementation
Web Template Framework (WTF): memory management,
threading, data structures (vectors, hash tables, bloom
filters, ...) numerical support, etc.
JSC vs V8
Networking: HTTP, DNS, cookies, etc.
Graphics: 2D/3D rendering, compositing, theming, fonts
Multimedia: media player for audio and video tags
DOM bindings
Accessibility
Smaller tasks: clipboard, popup and context menus,
cursors, etc.
Other things: favicons, plugins, downloads, geolocation,
settings, navigation policies, etc.
WebKit and Blink Juan J. Sánchez
Creating a port: the social side
Difficult without full-time reviewers
Reuse from other ports as much as possible
Try to work upstream from the very beginning
The risk of forking is big, the project moves fast
Focus on testing and continuous integration
Port-specific events and communication tools
WebKit and Blink Juan J. Sánchez
Coordination and communication tools
Website: http://www.webkit.org/
Port specific Websites (e.g. http://webkitgtk.org/)
Wiki: http://trac.webkit.org/wiki
Blogs: http://planet.webkit.org/
Source Code:
SVN: http://svn.webkit.org/repository/webkit
Git mirror: git://git.webkit.org/WebKit.git
Bugzilla: https://bugs.webkit.org/
Buildbots: http://build.webkit.org/
Mailing lists: http://lists.webkit.org/mailman/listinfo.cgi
IRC (irc.freenode.net): #webkit and #webkitgtk+
WebKit and Blink Juan J. Sánchez
The WebKit Contributors Meeting
Meeting for contributors to the WebKit project
Organized in an “unconference”-like format
Extremely useful to advance on some topics:
Implementation of new APIs, WebKit2, accelerated
compositing, helper tools, QA infrastructure...
Yearly held in Cupertino, California. Hosted by Apple
WebKit and Blink Juan J. Sánchez
Part 3
The creation of Blink
(April 2013)
WebKit and Blink Juan J. Sánchez
Google’s Departure. Blink
Google announced on April 3rd that they would be
forking WebKit and creating Blink
Motivations according to Google:
They were not using WebKit2 anyway
Easier to do ambitious architectural changes after the fork
Simplification of the codebase in Blink
Tension between Apple and Google before the fork
Architectural decisions: NetworkProcess
Code governance: Owners need to approve some core
changes
Big shock within the WebKit community
WebKit and Blink Juan J. Sánchez
Differences between WebKit and Blink
Removes the concept of ’port’ as it was defined in WebKit
(deep platform integration): Skia, V8 and other libraries
cannot be replaced
Still possible to use Blink in other platforms, but now
integration happens at Content level
Only the rendering engine. Multi-process architecture is
still in Chromium
WebKit has committers, reviewers and owners (control
some core areas). Blink only committers and owners
(similar to WebKit reviewers)
Peer review process a bit more relaxed in Blink
Many architecture changes are started to be implemented
WebKit and Blink Juan J. Sánchez
Early consequences of Blink for WebKit
Google was the main contributor by # of commits
Opera joined WebKit then moved to Blink. Other
companies and communities started thinking what to do.
Apple’s position more dominant. Relaxed a bit the Owners
policy
Several WebCore modules left orphan. Other hackers
assuming WebCore modules maintainership
WebKit developers porting patches from/to Blink
Many hacks to accomodate Chromium removed. Engines
quickly starting to diverge at faster pace
WebKit and Blink Juan J. Sánchez
Impact of Blink in numbers
Commits per month in WebKit, including last months:
WebKit and Blink Juan J. Sánchez
Impact of Blink in numbers
Contributors per month in WebKit, including last months:
WebKit and Blink Juan J. Sánchez
Impact of Blink in numbers
Contributors per month in 2013-2014:
Blink: WebKit:
WebKit and Blink Juan J. Sánchez
Impact of Blink in numbers
Commits per month in 2013-2014, Blink::
Commits per month in 2013-2014, WebKit::
WebKit and Blink Juan J. Sánchez
The Blink community is born
Dynamics of the community still being defined
Opera early contributor and user of Blink
Qt recently announces that they are moving to Blink (Sep
2013)
Tizen to use Crosswalk (Blink based)
Still unclear what all the downstreams are doing, but there
is a tendency to at least try Blink/Chromium
BlinkOn event twice per year, Fall in California, Spring in
Europe/Asia/Australia
WebKit and Blink Juan J. Sánchez
Main WebKit ongoing efforts and plans (I)
The community is a bit smaller and stable after the fork.
Some companies gaining visibility due to this fact: Adobe
Little public discussion about core features and roadmap
Most active port beside the ones Apple maintains is GTK+
WebKit and Blink Juan J. Sánchez
Main WebKit ongoing efforts and plans (II)
Some recent developments:
CSS Shapes
CSS Regions + new multicolumn implementation
CSS JIT Compiler (performance improvement)
Porting the code to C++11
JavaScriptCore’s FTL JIT (performance improvement)
WebKit and Blink Juan J. Sánchez
Main Blink ongoing efforts and plans (I)
The community is growing progressively after the fork.
Opera getting visibility
Some external actors just consuming Chromium/Blink,
not contributing or integrating upstream
Open discussion in blink-dev with the ’intents’ (to ship, to
develop, to deprecate, to remove). 3 Owners need to
support them
Public roadmap with main focus for 2014 in mobile
performance
Google still keeping quite a lot of control, but already 9
owners outside Google
WebKit and Blink Juan J. Sánchez
Main Blink ongoing efforts and plans (II)
Ongoing work and roadmap:
CSS Shapes
CSS Regions not implemented, but support for
multicolumn
Oilpan (tries to avoid memory leaks using a garbage
collector instead of smart pointers)
Repaint after layout (performance optimization for
rendering)
Web animations
Blink repository will be integrated into Chromium’s
WebKit and Blink Juan J. Sánchez
Open questions about Blink vs WebKit
How open the dynamics of each community will be?
Which project will innovate faster and keep higher quality
and performance standards?
For how long will it be possible to port patches from one
project to the other?
Will there be specialized areas where one of the projects
will perform better? (e.g. WebKit and the memory
consumption)
Will those adopting Chromium/Blink be able to integrate
it even when Google is not making things easy? Will any of
them move back to WebKit?
WebKit and Blink Juan J. Sánchez
Conclusions
WebKit and Blink are key open source projects. They are at
the very heart of the HTML5 revolution
By 2013: it was the only true Open Source alternative for
embedders for many years. Good community and
architecture. Complex project
Blink splitted community and efforts. Several WebKit ports
and some downstreams decided to migrate. There are
technical and community chanllenges in this migration
that are still to be understood
Both projects remain healthy for now. Still many open
questions about both projects
WebKit and Blink Juan J. Sánchez
Thank you!
Juan J. Sánchez
jjsanchez@igalia.com
WebKit and Blink Juan J. Sánchez

Más contenido relacionado

La actualidad más candente

Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)Bin Chen
 
WebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionWebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionjuanjosanchezpenas
 
Chromium ui framework(shared)
Chromium ui framework(shared)Chromium ui framework(shared)
Chromium ui framework(shared)gnomekr
 
How to use WebKitGtk+
How to use WebKitGtk+How to use WebKitGtk+
How to use WebKitGtk+Joone Hur
 
Lessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkLessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkBruno Abinader
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)Igalia
 
Deview 2013 mobile browser internals and trends_20131022
Deview 2013 mobile browser internals and trends_20131022Deview 2013 mobile browser internals and trends_20131022
Deview 2013 mobile browser internals and trends_20131022NAVER D2
 
Android chromium web view
Android chromium web viewAndroid chromium web view
Android chromium web view朋 王
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...Igalia
 
Webkit Chromium Contribution Process
Webkit Chromium Contribution ProcessWebkit Chromium Contribution Process
Webkit Chromium Contribution ProcessGyuyoung Kim
 
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)Igalia
 
Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectIgalia
 
Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)ryuan choi
 
WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ ProjectJoone Hur
 
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...Igalia
 
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...Igalia
 
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...Igalia
 
WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms philn2
 

La actualidad más candente (19)

The WebKit project
The WebKit projectThe WebKit project
The WebKit project
 
Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)
 
WebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionWebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolution
 
Chromium ui framework(shared)
Chromium ui framework(shared)Chromium ui framework(shared)
Chromium ui framework(shared)
 
How to use WebKitGtk+
How to use WebKitGtk+How to use WebKitGtk+
How to use WebKitGtk+
 
Lessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkLessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and Blink
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)
 
Deview 2013 mobile browser internals and trends_20131022
Deview 2013 mobile browser internals and trends_20131022Deview 2013 mobile browser internals and trends_20131022
Deview 2013 mobile browser internals and trends_20131022
 
Android chromium web view
Android chromium web viewAndroid chromium web view
Android chromium web view
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
 
Webkit Chromium Contribution Process
Webkit Chromium Contribution ProcessWebkit Chromium Contribution Process
Webkit Chromium Contribution Process
 
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
Hybrid Desktop/Web applications with WebKitGTK+ (COSCUP 2010)
 
Contributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium projectContributions to an open source project: Igalia and the Chromium project
Contributions to an open source project: Igalia and the Chromium project
 
Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)
 
WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ Project
 
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
 
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
Pairing WebKit and Wayland for Linux-Based Embedded Web Content Presentation ...
 
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
 
WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms
 

Destacado

Web browser architecture
Web browser architectureWeb browser architecture
Web browser architectureNguyen Quang
 
Understanding Webkit Rendering
Understanding Webkit RenderingUnderstanding Webkit Rendering
Understanding Webkit RenderingAriya Hidayat
 
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...Igalia
 
Compiling and Optimizing Your Own Browser with WebKit
Compiling and Optimizing Your Own Browser with WebKitCompiling and Optimizing Your Own Browser with WebKit
Compiling and Optimizing Your Own Browser with WebKitSencha
 
Chrom works introduction
Chrom works   introductionChrom works   introduction
Chrom works introductionSoo Kim
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKitJoone Hur
 
JavaScript, React Native and Performance at react-europe 2016
JavaScript, React Native and Performance at react-europe 2016JavaScript, React Native and Performance at react-europe 2016
JavaScript, React Native and Performance at react-europe 2016Tadeu Zagallo
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React NativePolidea
 
HTML Basic Tags
HTML Basic Tags HTML Basic Tags
HTML Basic Tags Nisa Soomro
 
INTRODUCTION TO HTML
INTRODUCTION TO HTMLINTRODUCTION TO HTML
INTRODUCTION TO HTMLbwire sedrick
 
Overview of Brillo (Android Things)
Overview of Brillo (Android Things)Overview of Brillo (Android Things)
Overview of Brillo (Android Things)Bin Chen
 

Destacado (18)

Web browser architecture
Web browser architectureWeb browser architecture
Web browser architecture
 
Android things intro
Android things introAndroid things intro
Android things intro
 
Understanding Webkit Rendering
Understanding Webkit RenderingUnderstanding Webkit Rendering
Understanding Webkit Rendering
 
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
 
Compiling and Optimizing Your Own Browser with WebKit
Compiling and Optimizing Your Own Browser with WebKitCompiling and Optimizing Your Own Browser with WebKit
Compiling and Optimizing Your Own Browser with WebKit
 
Chrom works introduction
Chrom works   introductionChrom works   introduction
Chrom works introduction
 
How Browser Works?
How Browser Works?How Browser Works?
How Browser Works?
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit
 
Chromium vs. Firefox
Chromium vs. FirefoxChromium vs. Firefox
Chromium vs. Firefox
 
JavaScript, React Native and Performance at react-europe 2016
JavaScript, React Native and Performance at react-europe 2016JavaScript, React Native and Performance at react-europe 2016
JavaScript, React Native and Performance at react-europe 2016
 
How browser work
How browser workHow browser work
How browser work
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
HTML Basic Tags
HTML Basic Tags HTML Basic Tags
HTML Basic Tags
 
INTRODUCTION TO HTML
INTRODUCTION TO HTMLINTRODUCTION TO HTML
INTRODUCTION TO HTML
 
Html links
Html linksHtml links
Html links
 
React Native
React NativeReact Native
React Native
 
React native - What, Why, How?
React native - What, Why, How?React native - What, Why, How?
React native - What, Why, How?
 
Overview of Brillo (Android Things)
Overview of Brillo (Android Things)Overview of Brillo (Android Things)
Overview of Brillo (Android Things)
 

Similar a WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution

The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)Igalia
 
Building a browser for automotive. alternatives, challenges and recommendatio...
Building a browser for automotive. alternatives, challenges and recommendatio...Building a browser for automotive. alternatives, challenges and recommendatio...
Building a browser for automotive. alternatives, challenges and recommendatio...Igalia
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitIgalia
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.JooinK
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWTFrancesca Tosi
 
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Igalia
 
Basic html5 and javascript
Basic html5 and javascriptBasic html5 and javascript
Basic html5 and javascriptwendy017
 
Igalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plansIgalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plansIgalia
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisOW2
 
The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)Samsung Open Source Group
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical PresentationDaniel Rocha
 
The Web, After HTML5
The Web, After HTML5The Web, After HTML5
The Web, After HTML5Jonathan Jeon
 
2021 WebKit Contributors Meeting, Igalia
2021 WebKit Contributors Meeting, Igalia2021 WebKit Contributors Meeting, Igalia
2021 WebKit Contributors Meeting, IgaliaIgalia
 
[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTCGiacomo Vacca
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1rmitc
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2JooinK
 
Swift at IBM: Mobile, open source and the drive to the cloud
Swift at IBM: Mobile, open source and the drive to the cloudSwift at IBM: Mobile, open source and the drive to the cloud
Swift at IBM: Mobile, open source and the drive to the cloudDev_Events
 

Similar a WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution (20)

The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)
 
Building a browser for automotive. alternatives, challenges and recommendatio...
Building a browser for automotive. alternatives, challenges and recommendatio...Building a browser for automotive. alternatives, challenges and recommendatio...
Building a browser for automotive. alternatives, challenges and recommendatio...
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWT
 
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
 
Basic html5 and javascript
Basic html5 and javascriptBasic html5 and javascript
Basic html5 and javascript
 
Igalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plansIgalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plans
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
 
webthing-floss-iot-20180607rzr
webthing-floss-iot-20180607rzrwebthing-floss-iot-20180607rzr
webthing-floss-iot-20180607rzr
 
The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical Presentation
 
The Web, After HTML5
The Web, After HTML5The Web, After HTML5
The Web, After HTML5
 
2021 WebKit Contributors Meeting, Igalia
2021 WebKit Contributors Meeting, Igalia2021 WebKit Contributors Meeting, Igalia
2021 WebKit Contributors Meeting, Igalia
 
[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC
 
Gwt 2,3 Deep dive
Gwt 2,3 Deep diveGwt 2,3 Deep dive
Gwt 2,3 Deep dive
 
Html5 Future of WEB
Html5 Future of WEBHtml5 Future of WEB
Html5 Future of WEB
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
 
Swift at IBM: Mobile, open source and the drive to the cloud
Swift at IBM: Mobile, open source and the drive to the cloudSwift at IBM: Mobile, open source and the drive to the cloud
Swift at IBM: Mobile, open source and the drive to the cloud
 

Último

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 

Último (20)

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 

WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution

  • 1. WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution Juan J. Sánchez LinuxCon Japan 2014, Tokyo
  • 2. Myself, Igalia and WebKit Co-founder, member of the WebKit/Blink/Browsers team Igalia is an open source consultancy founded in 2001 Igalia is Top 5 contributor to upstream WebKit/Blink Working with many industry actors: tablets, phones, smart tv, set-top boxes, IVI and home automation. WebKit and Blink Juan J. Sánchez
  • 3. Outline 1 Why this all matters 2 2004-2013: WebKit, a historical perspective 2.1. The technology: goals, features, architecture, ports, webkit2, code, licenses 2.2. The community: kinds of contributors and contributions, tools, events 3 April 2013. The creation of Blink: history, motivations for the fork, differences and impact in the WebKit community 4 2013-2014: Current status of both projects, future perspectives and conclusions WebKit and Blink Juan J. Sánchez
  • 4. PART 1: Why this all matters WebKit and Blink Juan J. Sánchez
  • 5. Why this all matters Long time trying to use Web technologies to replace native totally or partially Challenge enabled by new HTML5 features and improved performance Open Source is key for innovation in the field Mozilla focusing on the browser WebKit and now Blink are key projects for those building platforms and/or browsers WebKit and Blink Juan J. Sánchez
  • 6. PART 2: 2004-2013 WebKit, a historical perspective WebKit and Blink Juan J. Sánchez
  • 7. PART 2.1 WebKit: the technology WebKit and Blink Juan J. Sánchez
  • 8. The WebKit project Web rendering engine (HTML, JavaScript, CSS...) The engine is the product Started as a fork of KHTML and KJS in 2001 Open Source since 2005 Among other things, it’s useful for: Web browsers Using web technologies for UI development WebKit and Blink Juan J. Sánchez
  • 9. Goals of the project Web Content Engine: HTML, CSS, JavaScript, DOM Open Source: BSD-style and LGPL licenses Compatibility: regression testing Standards Compliance Stability Performance Security Portability: desktop, mobile, embedded... Usability Hackability WebKit and Blink Juan J. Sánchez
  • 10. Goals of the project NON-goals: “It’s an engine, not a browser” “It’s an engineering project not a science project” “It’s not a bundle of maximally general and reusable code” “It’s not the solution to every problem” http://www.webkit.org/projects/goals.html WebKit and Blink Juan J. Sánchez
  • 11. WebKit features HTML and XML support JavaScript support (ECMAScript 5.1) CSS 2.1, CSS 3 support SVG support Support for Plugins (NPAPI, WebKit Plugins) HTML5 support: multimedia, 3D graphics, advanced CSS animations and transformations, drag’n’drop, offline & local storage, connectivity... Accessibility support Q&A infrastructure: review process, continuous integration, 30.000 regression tests, API tests... Passing ACID3 with 100/100 tests since March 2008 WebKit and Blink Juan J. Sánchez
  • 12. WebKit Architecture From a simplified point of view, WebKit is structured this way: WebKit: thin layer to link against from the applications WebCore: rendering, layout, network access, multimedia, accessibility support... JS Engine: the JavaScript engine. JavaScriptCore by default. platform: platform-specific hooks to implement generic algorithms WebKit and Blink Juan J. Sánchez
  • 13. What is a WebKit port? WebKit and Blink Juan J. Sánchez
  • 14. How many WebKit ports are there? WebKit is available for different platforms: Main upstream ports in 2012/2013: Mac OS X, iOS GTK+ based platforms (GNOME) Qt based platforms (KDE) Enlightenment Foundation Libraries (EFL, Tizen) Google Chromium / Chrome WebKitNIX Other ports: wxWidgets, Brew MP, Symbian devices (S60), Win32, BlackBerry, Adobe Integrated Runtime (Adobe AIR) WebKit and Blink Juan J. Sánchez
  • 15. Some WebKit based browsers in 2013 Amazon Kindle Arora BOLT browser Epiphany browser Google Chrome iCab (version >= 4) Iris Browser Konqueror Midori Nintendo 3DS OWB OmniWeb PS3 web browser RockMelt Safari SRWare Iron Shiira Sputnik for MorphOS Stainless Steel for Android TeaShark Uzbl Web Browser for S60 (Nokia) WebOS Browser WebKit and Blink Juan J. Sánchez
  • 16. Architecture of a WebKit port WebKit and Blink Juan J. Sánchez
  • 17. Architecture of a WebKit port WebKit and Blink Juan J. Sánchez
  • 18. How do we use a WebKit port? The WebView widget: A platform-specific widget that renders web content. It’s the main component and it’s useful for: Loading URIs or data buffers pointing to HTML content Go fullscreen, text/text+image zooming... Navigate back and forward through history... Events handling: Allows embedders to get notified when something important happens or when some input is needed. Some examples of these events: Getting notified when a load finished or failed Asking permission for navigating to an URI Requesting authorization for something.. WebKit and Blink Juan J. Sánchez
  • 19. A minibrowser written in Python #!/usr/bin/env python # -*- coding: utf-8 -*- import gtk import webkit def entry_activated_cb(entry, embed): embed.load_uri(entry.get_text()) # Widgets and signals window = gtk.Window() window.set_default_size(800, 600) window.set_title("Mini browser written in Python") embed = webkit.WebView(); # WebKit embed entry = gtk.Entry() entry.connect(’activate’, entry_activated_cb, embed) scroller = gtk.ScrolledWindow() scroller.add(embed) # Pack everything up and show vbox = gtk.VBox(False, 5) vbox.pack_start(entry, False, False) vbox.pack_start(scroller) window.add(vbox) window.show_all() # Load a default URI and run embed.load_uri("http://www.webkit.org") gtk.main() WebKit and Blink Juan J. Sánchez
  • 20. A minibrowser written in Python WebKit and Blink Juan J. Sánchez
  • 21. A minibrowser written in C #include <webkit/webkit.h> static void entry_activated (GtkEntry *entry, WebKitWebView *embed) { webkit_web_view_load_uri (embed, gtk_entry_get_text (entry)); } int main (int argc, char** argv) { gtk_init (&argc, &argv); /* Widgets and signals */ GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); gtk_window_set_title (GTK_WINDOW (window), "Mini browser written in C"); GtkWidget *embed = webkit_web_view_new(); GtkWidget *entry = gtk_entry_new(); g_signal_connect (entry, "activate", G_CALLBACK (entry_activated), embed); GtkWidget *scroller = gtk_scrolled_window_new(NULL, NULL); gtk_container_add (GTK_CONTAINER(scroller), embed); /* Pack everything and show */ GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX(vbox), entry, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX(vbox), scroller, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER(window), vbox); gtk_widget_show_all (window); /* Load a default URI and run */ webkit_web_view_load_uri (WEBKIT_WEB_VIEW (embed), "http://www.webkit.org"); gtk_main(); return 0; } WebKit and Blink Juan J. Sánchez
  • 22. A minibrowser written in C WebKit and Blink Juan J. Sánchez
  • 23. What is WebKit2? New API layer designed to support a split process model (First release by Apple on April 8th, 20101). Different to Chromium’s multi-process implementation It’s bundled in the framework (reusable) Different processes take care of different tasks: UI process: the WebView widget, application UI Web process: loading, parsing, rendering, layout... Plugin process: each plugin type in a process It comes with Inter-Process Communication (IPC) mechanisms to communicate those processes bundled-in http://trac.webkit.org/wiki/WebKit2 WebKit and Blink Juan J. Sánchez
  • 24. WebKit VS WebKit2 WebKit and Blink Juan J. Sánchez
  • 25. WebKit2 vs WebKit1 Pros: Isolation Security (sandboxing, per-process privileges) Performance if processes are run in parallel Stability (a crash in the WebProcess does no kill the application) WebKit and Blink Juan J. Sánchez
  • 26. WebKit2 vs WebKit1 Cons: Higher resource requirements Multiple processes instead of just one At the same time easier to release resources Higher latency interaction with page content due to IPC Complexity Coding (more complications interacting directly with page content) Debugging WebKit1 and WebKit2 maintenance WebKit and Blink Juan J. Sánchez
  • 27. WebKit2 VS Chromium WebKit and Blink Juan J. Sánchez
  • 28. WebKit2: current status The main ports released WebKit2 browsers by 2013 WebKit1 moving to maintenance mode or removed Cross-platform and non-blocking C API available Most challenges of the split process model solved Lots of new architectural changes about to come (e.g. Network Process) WebKit and Blink Juan J. Sánchez
  • 29. The Source Code in numbers According to Ohloh on May 17th, lines of code per language, without considering blank lines nor comments: Language LoC % HTML 1,955,561 32.4 % C++ 1,308,667 27.5 % JavaScript 962,086 20.8 % Objective-C 175,669 3.4 % XML 158,555 2.5 % C 121,951 3.0 % PHP 100,345 2.3 % CSS 93,247 1.6 % Python 78,348 1.9 % Perl 76,491 1.7 % OpenGL Shad 52,234 1.8 % Other (16) 50,000 1.1 % Total 4,132,955 https://www.ohloh.net/p/WebKit/analyses/latest/language_summary Just considering C++, Objective-C and C >1.6M LoC! Licenses: BSD 3-clause and LGPL WebKit and Blink Juan J. Sánchez
  • 30. PART 2.2 WebKit: The community WebKit and Blink Juan J. Sánchez
  • 31. A bit of history Source: http://ariya.ofilabs.com/2011/11/ one-hundred-thousand-and-counting.html WebKit and Blink Juan J. Sánchez
  • 32. The WebKit Project in numbers Commits per month till 2013: WebKit and Blink Juan J. Sánchez
  • 33. The WebKit Project in numbers Contributors per month:: WebKit and Blink Juan J. Sánchez
  • 34. The WebKit Project in numbers Evolution in the number of lines of code WebKit and Blink Juan J. Sánchez
  • 35. Tracking ongoing work in WebKit Webkit is a big beast and a lot of organizations with different agendas are working in different parts: Implementing new standards (like the CSS shaders from Adobe, or CSS3 GCPM from Apple) Improvements in architecture, performance and internal code (WebKit2) On top of this there is the maintenance work (testing, continuous integration, bugfixing) No single centralized place to follow all the information: blogs, mailing lists, IRC, etc. WebKit and Blink Juan J. Sánchez
  • 36. Activity of Companies by 2013 Based on Bitergia’s report2 Based on reviewed commits “Gardening” commits filtered out From the beginning of the project till beginning of 2013 2 http://blog.bitergia.com/2013/02/06/ report-on-the-activity-of-companies-in-the-webkit-project/ WebKit and Blink Juan J. Sánchez
  • 37. Activity of Companies by 2013 Figura : Commits per company (monthly) WebKit and Blink Juan J. Sánchez
  • 38. Activity of Companies by 2013 Figura : Active authors per company (monthly) WebKit and Blink Juan J. Sánchez
  • 39. Activity of Companies by 2013 Figura : Commits per company WebKit and Blink Juan J. Sánchez
  • 40. Activity of Companies by 2013 Figura : Active authors per company WebKit and Blink Juan J. Sánchez
  • 41. Activity of Companies by 2013 Some conclusions from the authors: Google and Apple leading the project The diversity of the project has been increasing Contributions from other parties >25 % and growing > 20 companies actively contributing to WebKit 1500-2000 commits per month 387 committers from 29 different institutions WebKit and Blink Juan J. Sánchez
  • 42. Committers and Reviewers WebKit Committer A WebKit Committer should be a person we can trust to follow and understand the project policies about checkins and other matters. Has commit rights to the public SVN repository. WebKit Reviewer A WebKit Reviewer should be a person who has shown particularly good judgment, understanding of project policies, collaboration skills, and understanding of the code. A WebKit Committer who can review other’s patches. WebKit and Blink Juan J. Sánchez
  • 43. Copyright for contributions There is no copyright transfer for the contributions Committers sign some papers where they commit to good behaviour WebKit and Blink Juan J. Sánchez
  • 44. Releases There are no releases of WebKit itself Each port manages the release cycle, typically aligned with the target platform schedule WebKit and Blink Juan J. Sánchez
  • 45. Types of contributions Bugfixing and new features in: An existent port The core components: webcore and JSC/V8 Creation and maintenance of a new port WebKit and Blink Juan J. Sánchez
  • 46. Guidelines for contributing patches to WebKit 1 Get and build the code from the SVN repository 2 Choose or create a bug report to work on 3 Code your changes and make sure you include new regression or unit tests if needed 4 Create a patch for your changes and submit it asking for review over it to appropriate reviewers 5 Update and change your patch as many times as needed 6 Once approved, land your patch or ask a committer/reviewer to do it 7 Watch for any regressions it might have caused WebKit and Blink Juan J. Sánchez
  • 47. Creating a port: what needs to be done High level API (WebKit1 and WebKit2) Low level backend specific implementation Web Template Framework (WTF): memory management, threading, data structures (vectors, hash tables, bloom filters, ...) numerical support, etc. JSC vs V8 Networking: HTTP, DNS, cookies, etc. Graphics: 2D/3D rendering, compositing, theming, fonts Multimedia: media player for audio and video tags DOM bindings Accessibility Smaller tasks: clipboard, popup and context menus, cursors, etc. Other things: favicons, plugins, downloads, geolocation, settings, navigation policies, etc. WebKit and Blink Juan J. Sánchez
  • 48. Creating a port: the social side Difficult without full-time reviewers Reuse from other ports as much as possible Try to work upstream from the very beginning The risk of forking is big, the project moves fast Focus on testing and continuous integration Port-specific events and communication tools WebKit and Blink Juan J. Sánchez
  • 49. Coordination and communication tools Website: http://www.webkit.org/ Port specific Websites (e.g. http://webkitgtk.org/) Wiki: http://trac.webkit.org/wiki Blogs: http://planet.webkit.org/ Source Code: SVN: http://svn.webkit.org/repository/webkit Git mirror: git://git.webkit.org/WebKit.git Bugzilla: https://bugs.webkit.org/ Buildbots: http://build.webkit.org/ Mailing lists: http://lists.webkit.org/mailman/listinfo.cgi IRC (irc.freenode.net): #webkit and #webkitgtk+ WebKit and Blink Juan J. Sánchez
  • 50. The WebKit Contributors Meeting Meeting for contributors to the WebKit project Organized in an “unconference”-like format Extremely useful to advance on some topics: Implementation of new APIs, WebKit2, accelerated compositing, helper tools, QA infrastructure... Yearly held in Cupertino, California. Hosted by Apple WebKit and Blink Juan J. Sánchez
  • 51. Part 3 The creation of Blink (April 2013) WebKit and Blink Juan J. Sánchez
  • 52. Google’s Departure. Blink Google announced on April 3rd that they would be forking WebKit and creating Blink Motivations according to Google: They were not using WebKit2 anyway Easier to do ambitious architectural changes after the fork Simplification of the codebase in Blink Tension between Apple and Google before the fork Architectural decisions: NetworkProcess Code governance: Owners need to approve some core changes Big shock within the WebKit community WebKit and Blink Juan J. Sánchez
  • 53. Differences between WebKit and Blink Removes the concept of ’port’ as it was defined in WebKit (deep platform integration): Skia, V8 and other libraries cannot be replaced Still possible to use Blink in other platforms, but now integration happens at Content level Only the rendering engine. Multi-process architecture is still in Chromium WebKit has committers, reviewers and owners (control some core areas). Blink only committers and owners (similar to WebKit reviewers) Peer review process a bit more relaxed in Blink Many architecture changes are started to be implemented WebKit and Blink Juan J. Sánchez
  • 54. Early consequences of Blink for WebKit Google was the main contributor by # of commits Opera joined WebKit then moved to Blink. Other companies and communities started thinking what to do. Apple’s position more dominant. Relaxed a bit the Owners policy Several WebCore modules left orphan. Other hackers assuming WebCore modules maintainership WebKit developers porting patches from/to Blink Many hacks to accomodate Chromium removed. Engines quickly starting to diverge at faster pace WebKit and Blink Juan J. Sánchez
  • 55. Impact of Blink in numbers Commits per month in WebKit, including last months: WebKit and Blink Juan J. Sánchez
  • 56. Impact of Blink in numbers Contributors per month in WebKit, including last months: WebKit and Blink Juan J. Sánchez
  • 57. Impact of Blink in numbers Contributors per month in 2013-2014: Blink: WebKit: WebKit and Blink Juan J. Sánchez
  • 58. Impact of Blink in numbers Commits per month in 2013-2014, Blink:: Commits per month in 2013-2014, WebKit:: WebKit and Blink Juan J. Sánchez
  • 59. The Blink community is born Dynamics of the community still being defined Opera early contributor and user of Blink Qt recently announces that they are moving to Blink (Sep 2013) Tizen to use Crosswalk (Blink based) Still unclear what all the downstreams are doing, but there is a tendency to at least try Blink/Chromium BlinkOn event twice per year, Fall in California, Spring in Europe/Asia/Australia WebKit and Blink Juan J. Sánchez
  • 60. Main WebKit ongoing efforts and plans (I) The community is a bit smaller and stable after the fork. Some companies gaining visibility due to this fact: Adobe Little public discussion about core features and roadmap Most active port beside the ones Apple maintains is GTK+ WebKit and Blink Juan J. Sánchez
  • 61. Main WebKit ongoing efforts and plans (II) Some recent developments: CSS Shapes CSS Regions + new multicolumn implementation CSS JIT Compiler (performance improvement) Porting the code to C++11 JavaScriptCore’s FTL JIT (performance improvement) WebKit and Blink Juan J. Sánchez
  • 62. Main Blink ongoing efforts and plans (I) The community is growing progressively after the fork. Opera getting visibility Some external actors just consuming Chromium/Blink, not contributing or integrating upstream Open discussion in blink-dev with the ’intents’ (to ship, to develop, to deprecate, to remove). 3 Owners need to support them Public roadmap with main focus for 2014 in mobile performance Google still keeping quite a lot of control, but already 9 owners outside Google WebKit and Blink Juan J. Sánchez
  • 63. Main Blink ongoing efforts and plans (II) Ongoing work and roadmap: CSS Shapes CSS Regions not implemented, but support for multicolumn Oilpan (tries to avoid memory leaks using a garbage collector instead of smart pointers) Repaint after layout (performance optimization for rendering) Web animations Blink repository will be integrated into Chromium’s WebKit and Blink Juan J. Sánchez
  • 64. Open questions about Blink vs WebKit How open the dynamics of each community will be? Which project will innovate faster and keep higher quality and performance standards? For how long will it be possible to port patches from one project to the other? Will there be specialized areas where one of the projects will perform better? (e.g. WebKit and the memory consumption) Will those adopting Chromium/Blink be able to integrate it even when Google is not making things easy? Will any of them move back to WebKit? WebKit and Blink Juan J. Sánchez
  • 65. Conclusions WebKit and Blink are key open source projects. They are at the very heart of the HTML5 revolution By 2013: it was the only true Open Source alternative for embedders for many years. Good community and architecture. Complex project Blink splitted community and efforts. Several WebKit ports and some downstreams decided to migrate. There are technical and community chanllenges in this migration that are still to be understood Both projects remain healthy for now. Still many open questions about both projects WebKit and Blink Juan J. Sánchez
  • 66. Thank you! Juan J. Sánchez jjsanchez@igalia.com WebKit and Blink Juan J. Sánchez