SlideShare a Scribd company logo
1 of 51
Download to read offline
Building a Browser for Automotive:
Alternatives, Challenges and
Recommendations
Juan J. Sánchez
Automotive Linux Summit 2015, Tokyo
Myself, Igalia and Webkit/Chromium
Co-founder of Igalia
Open source consultancy founded in 2001
Igalia is Top 5 contributor to upstream WebKit/Chromium
Working with many industry actors: automotive, tablets,
phones, smart tv, set-top boxes, IVI and home automation
Building a Browser for Automotive Juan J. Sánchez
Outline
1 A browser for automotive: requirements and alternatives
2 WebKit and Chromium, a historical perspective
3 Selecting between WebKit and Chromium based
alternatives
Building a Browser for Automotive Juan J. Sánchez
PART 1
A browser for automotive:
requirements and alternatives
Building a Browser for Automotive Juan J. Sánchez
Requirements
Different User Experiences
UI modifications (flexibility)
New ways of interacting: accessibility support
Support of specific standards (mostly communication and
interfaces)
Portability: support of specific hardware boards
(performance optimization)
Functionality and completeness can be less demanding in
some cases (for now)
Provide both browser as an application and as a runtime
Building a Browser for Automotive Juan J. Sánchez
Available alternatives
Option 1) Licensing a proprietary solution: might bring a
reduced time-to-market but involves a cost per unit and
lack of flexibility
Option 2) Deriving a new browser from the main open
source browser technologies:
Firefox (Gecko)
Chromium
WebKit (Safari and others)
Mozilla removed support in their engine for third party
browser developers, so the two available choices are
Chromium and WebKit (with various options for each of
them)
Building a Browser for Automotive Juan J. Sánchez
Understanding the main alternatives
When creating a new open source browser for automotive,
a decission between Chromium and WebKit will need to
be made
Chromium and Webkit share a lot of history, design and
code
Learning how WebKit was created, and how Chromium
emerged and derived from WebKit, improves the
understanding of the pros and cons of each solution
We will make a detailed historical review of both projects
Building a Browser for Automotive Juan J. Sánchez
PART 2
WebKit and Chromium, a
historical perspective
Building a Browser for Automotive Juan J. Sánchez
PART 2.1: 2004-2013
WebKit, the first 9 years
Building a Browser for Automotive 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
Building a Browser for Automotive 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,
Passing ACID3 with 100/100 tests since March 2008
Building a Browser for Automotive 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
Building a Browser for Automotive Juan J. Sánchez
What is a WebKit port?
Building a Browser for Automotive 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)
Building a Browser for Automotive 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
Building a Browser for Automotive Juan J. Sánchez
Architecture of a WebKit port
Building a Browser for Automotive Juan J. Sánchez
Architecture of a WebKit port
Building a Browser for Automotive 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..
Building a Browser for Automotive 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()
Building a Browser for Automotive Juan J. Sánchez
A minibrowser written in Python
Building a Browser for Automotive 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
Building a Browser for Automotive Juan J. Sánchez
WebKit VS WebKit2
Advantages: isolation, security, performance, stability.
Building a Browser for Automotive Juan J. Sánchez
WebKit2 VS Chromium
Chromium first released in late 2008.
Building a Browser for Automotive 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
Building a Browser for Automotive Juan J. Sánchez
The WebKit Project in numbers
Commits per month till 2013:
Building a Browser for Automotive Juan J. Sánchez
The WebKit Project in numbers
Contributors per month::
Building a Browser for Automotive Juan J. Sánchez
The WebKit Project in numbers
Evolution in the number of lines of code
Building a Browser for Automotive 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/
Building a Browser for Automotive Juan J. Sánchez
Activity of Companies by 2013
Figura : Commits per company (monthly)
Building a Browser for Automotive Juan J. Sánchez
Activity of Companies by 2013
Figura : Active authors per company (monthly)
Building a Browser for Automotive Juan J. Sánchez
Activity of Companies by 2013
Figura : Commits per company
Building a Browser for Automotive Juan J. Sánchez
Activity of Companies by 2013
Figura : Active authors per company
Building a Browser for Automotive Juan J. Sánchez
Part 2.2
The creation of Blink
(April 2013)
Building a Browser for Automotive 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
Building a Browser for Automotive 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
Building a Browser for Automotive Juan J. Sánchez
Early consequences of Blink for WebKit
Google was the main contributor by # of commits. Apple’s
position now more dominant
Opera joined WebKit then moved to Blink. Other
companies and communities started migrating (Tizen and
Qt)
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
Building a Browser for Automotive Juan J. Sánchez
Impact of Blink in numbers
Commits per month in WebKit, including last months:
Building a Browser for Automotive Juan J. Sánchez
Impact of Blink in numbers
Contributors per month in WebKit, including first year of
Blink:
Building a Browser for Automotive Juan J. Sánchez
Impact of Blink in numbers
Contributors per month in 2013-2014:
Blink: WebKit:
Building a Browser for Automotive Juan J. Sánchez
Impact of Blink in numbers
Commits per month in 2013-2014, Blink::
Commits per month in 2013-2014, WebKit::
Building a Browser for Automotive Juan J. Sánchez
Webkit and Chromium in 2015
Less shared energy because of the split, but both projects
very active and alive
There is a recent trend towards more users for Blink and
Chromium, but still quite a lot of open questions and
challenges
Both provide good building blocks for creating a browser
for automotive
Building a Browser for Automotive Juan J. Sánchez
PART 3
Selecting the best alternative
Building a Browser for Automotive Juan J. Sánchez
Alternatives today
In WebKit you need to select (or create) a port, in
Chromium you need to define how to derive from
upstream
WebKit:
WebKitGTK+
WebKit for wayland
WebkitEFL and QtWebkit still in some (mostly) legacy
projects
Chromium:
Chromium directly
QtWebEngine
Crosswalk
Cromium Embedded Framework (CEF)
Building a Browser for Automotive Juan J. Sánchez
Webkit vs Chromium: pros and cons
WebKit:
Pro: memory footprint is smaller
Pro: ports are upstream, easy to integrate core changes
Pro: very flexible architecture, easy to plug components
Con: less companies contributing (Apple very relevant)
Con: less innovation lately in some areas of the codebase
Chromium:
Pro: more innovation happening in some areas, Google
driving it with a lot of developers
Pro: trend of more and more companies using the
technology and testing it
Con: no concept of ports, alternatives are not upstream
Con: difficult to contribute to some core areas (Google)
Con: versions of Chromium diverting a lot from Chrome
Building a Browser for Automotive Juan J. Sánchez
WebKitGTK+ and WebKit for Wayland
Pure open source projects, easy to influence their upstream
development
Reliable and well-known release process and quality
maintenance procedures, strong API and ABI compatibility
Possibility of modifying the whole stack, avoiding a big
delta (e.g. gstreamer vs other media frameworks)
Developed by a relatively small team (compared to
Google’s Chromium)
Less widely tested in heterogeneous hardware platforms
Webkit for wayland brings an interesting alternative to
WebKitGTK+ for some use cases, but still not a mature
project
Building a Browser for Automotive Juan J. Sánchez
Chromium directly
All the features in the browser and flexibility to use them
at the cost of increased maintenance complexity
Browsing operations implemented interfacing
Chromium’s Content API. Browser services like history,
bookmarks or incognito should be interfaced directly
through internal (unstable) APIs
High risk of ending with a big delta compared to upstream
Chromium (which moves very fast)
Changing the UI requires patching the UI code (no toolkit
available)
Chromium is officially supported on Intel-based Windows,
Mac OS X and Linux with X11. Building on top of ARM
devices is possible but less directly supported
Building a Browser for Automotive Juan J. Sánchez
Crosswalk
Crosswalk is an HTML application runtime based on
Chromium. It is available for Android as an embeddable
webview container and for Tizen as the system-wide
application runtime
Crosswalk usage as a webview for Android difficult to port
as it is mostly implemented in Java. Crosswalk reuses and
adapts the multiprocess model of Chromium to its needs
Crosswalk is intended to run applications and not web
pages. Building a browser on top requires creating a quite
big delta with upstream
Still a quite new project (created in 2013). Not a big
community outside Intel and Tizen
No backwards compatibility in the new versions
Building a Browser for Automotive Juan J. Sánchez
QtWebEngine
Evolution of the Qt webkit port, but using Chromium
It was undergoing heavy development until very recently
Some small open source browsers use it but not focused on
being used for browsers, just for embedding small HTML5
parts in Qt 5 applications
Potential issues with LGPLv3 license for some users.
Alternative of paying a license for Qt
Building a Browser for Automotive Juan J. Sánchez
Chromium Embedded Framework
Stable API for development of applications with
embedded browsers
All browser abstractions are preserved, and the
multiprocess architecture of Chromium is preserved and
properly interfaced
A browser based on CEF would be an independent
application that would incorporate CEF as a library and
use its API
Browser features from layers above the Content API are
not present in CEF (history, bookmarks or incognito)
Officially supported only on Intel-based Windows, Mac OS
X and Linux with X11
Created in 2009. Still mostly a one person project
Building a Browser for Automotive Juan J. Sánchez
Conclusions
There are various alternatives both on WebKit and
Chromium to create a derived browser for Automotive
Different companies and projects are using different
solutions. There is none that seems to be good at
everything
The choice largely depends on the weight of the different
goals to be achieved with that project and its specific
hardware and software needs
In any case, and independently from the choice, 3 keys for
success:
Long term analysis of hardware and software requirements
Respecting community and open source dynamics
(minimum delta, as much upstream as possible)
Right team and project scope definition
Building a Browser for Automotive Juan J. Sánchez
Thank you!
Juan J. Sánchez
jjsanchez@igalia.com
Building a Browser for Automotive Juan J. Sánchez

More Related Content

What's hot

Chrome & Webkit overview
Chrome & Webkit overviewChrome & Webkit overview
Chrome & Webkit overviewBin Chen
 
LCU14 208- Chromium-Blink Migration for RDK
LCU14 208- Chromium-Blink Migration for RDKLCU14 208- Chromium-Blink Migration for RDK
LCU14 208- Chromium-Blink Migration for RDKLinaro
 
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
 
How to use WebKitGtk+
How to use WebKitGtk+How to use WebKitGtk+
How to use WebKitGtk+Joone Hur
 
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
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)Igalia
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering PipelineHyungwook Lee
 
Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)Bin Chen
 
Gwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca TosiGwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca Tosifirenze-gtug
 
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
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)firenze-gtug
 
Webkit Chromium Contribution Process
Webkit Chromium Contribution ProcessWebkit Chromium Contribution Process
Webkit Chromium Contribution ProcessGyuyoung Kim
 
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
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeChang W. Doh
 
Chromium ui framework(shared)
Chromium ui framework(shared)Chromium ui framework(shared)
Chromium ui framework(shared)gnomekr
 
Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CEaccount inactive
 
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
 

What's hot (18)

Chrome & Webkit overview
Chrome & Webkit overviewChrome & Webkit overview
Chrome & Webkit overview
 
LCU14 208- Chromium-Blink Migration for RDK
LCU14 208- Chromium-Blink Migration for RDKLCU14 208- Chromium-Blink Migration for RDK
LCU14 208- Chromium-Blink Migration for RDK
 
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...
 
The WebKit project
The WebKit projectThe WebKit project
The WebKit project
 
How to use WebKitGtk+
How to use WebKitGtk+How to use WebKitGtk+
How to use WebKitGtk+
 
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)
 
WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)WebKit2 And You (GUADEC 2013)
WebKit2 And You (GUADEC 2013)
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline
 
Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)Browsers on Android (Webkit,chromium)
Browsers on Android (Webkit,chromium)
 
Gwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca TosiGwt kickoff - Alberto Mancini & Francesca Tosi
Gwt kickoff - Alberto Mancini & Francesca Tosi
 
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 ...
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)
 
Webkit Chromium Contribution Process
Webkit Chromium Contribution ProcessWebkit Chromium Contribution Process
Webkit Chromium Contribution Process
 
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)
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
 
Chromium ui framework(shared)
Chromium ui framework(shared)Chromium ui framework(shared)
Chromium ui framework(shared)
 
Development with Qt for Windows CE
Development with Qt for Windows CEDevelopment with Qt for Windows CE
Development with Qt for Windows CE
 
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
 

Viewers also liked (17)

святий миколай
святий миколайсвятий миколай
святий миколай
 
свято осені
свято осенісвято осені
свято осені
 
Flyer23984599
Flyer23984599Flyer23984599
Flyer23984599
 
annualreport_2014_for web
annualreport_2014_for webannualreport_2014_for web
annualreport_2014_for web
 
Program lepasan upsr 2014 new
Program lepasan upsr 2014 newProgram lepasan upsr 2014 new
Program lepasan upsr 2014 new
 
фестиваль
фестивальфестиваль
фестиваль
 
Farmers Dollys pizza promotion 1
Farmers Dollys pizza promotion 1Farmers Dollys pizza promotion 1
Farmers Dollys pizza promotion 1
 
звіт про осіннє свято
звіт про осіннє  святозвіт про осіннє  свято
звіт про осіннє свято
 
Uso di twitter per la salute
Uso di twitter per la saluteUso di twitter per la salute
Uso di twitter per la salute
 
Trabajo de mentefato
Trabajo de mentefatoTrabajo de mentefato
Trabajo de mentefato
 
Salmos e hinos 205
Salmos e hinos 205Salmos e hinos 205
Salmos e hinos 205
 
GeekdCon
GeekdConGeekdCon
GeekdCon
 
Numbers words
Numbers wordsNumbers words
Numbers words
 
Vigilanza
VigilanzaVigilanza
Vigilanza
 
Soccerex Transfer Review 2016 winter edition Premier League
Soccerex Transfer Review 2016 winter edition Premier LeagueSoccerex Transfer Review 2016 winter edition Premier League
Soccerex Transfer Review 2016 winter edition Premier League
 
ABM REXEL. Todos somos tu fuerza de ventas. The 6th MSF by Daemon Quest
ABM REXEL. Todos somos tu fuerza de ventas. The 6th MSF by Daemon QuestABM REXEL. Todos somos tu fuerza de ventas. The 6th MSF by Daemon Quest
ABM REXEL. Todos somos tu fuerza de ventas. The 6th MSF by Daemon Quest
 
Programa de desarrollo ejecutivo
Programa de desarrollo ejecutivoPrograma de desarrollo ejecutivo
Programa de desarrollo ejecutivo
 

Similar to Building a Browser for Automotive: Alternatives, Challenges and Recommendations

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
 
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
 
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
 
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...Igalia
 
S01 gae and_hybrid_app_v1.0
S01 gae and_hybrid_app_v1.0S01 gae and_hybrid_app_v1.0
S01 gae and_hybrid_app_v1.0Sun-Jin Jang
 
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
 
Michael(tm) Smith WND09 Presentation
Michael(tm) Smith WND09 PresentationMichael(tm) Smith WND09 Presentation
Michael(tm) Smith WND09 PresentationMichael(tm) Smith
 
Cutting edge of web technology
Cutting edge of web technologyCutting edge of web technology
Cutting edge of web technologyTsutomu Ogasawara
 
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...IndicThreads
 
2014 HTML5 총정리
2014 HTML5 총정리2014 HTML5 총정리
2014 HTML5 총정리Wonsuk Lee
 
Industry trend of HTML5 in 2012 (2012년 HTML5 총정리)
Industry trend of HTML5 in 2012 (2012년 HTML5 총정리)Industry trend of HTML5 in 2012 (2012년 HTML5 총정리)
Industry trend of HTML5 in 2012 (2012년 HTML5 총정리)Wonsuk Lee
 
Mobile applications for SharePoint using HTML5
Mobile applications for SharePoint using HTML5Mobile applications for SharePoint using HTML5
Mobile applications for SharePoint using HTML5Christian Heindel
 
2011 08-24 mobile web app
2011 08-24  mobile web app2011 08-24  mobile web app
2011 08-24 mobile web appSholto Maud
 
The Web, After HTML5
The Web, After HTML5The Web, After HTML5
The Web, After HTML5Jonathan Jeon
 
FEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing MojitoFEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing MojitoCaridy Patino
 
Open Source on Wheels - Tech Day by Init 2017
Open Source on Wheels - Tech Day by Init 2017Open Source on Wheels - Tech Day by Init 2017
Open Source on Wheels - Tech Day by Init 2017Johan Thelin
 
WebML and WebRatio 5 - TOOLS conference, Zurich 2008
WebML and WebRatio 5 - TOOLS conference, Zurich 2008WebML and WebRatio 5 - TOOLS conference, Zurich 2008
WebML and WebRatio 5 - TOOLS conference, Zurich 2008Marco Brambilla
 
The Enterprise wants WebRTC -- and it needs Middleware to get it! (IIT RTC Co...
The Enterprise wants WebRTC -- and it needs Middleware to get it! (IIT RTC Co...The Enterprise wants WebRTC -- and it needs Middleware to get it! (IIT RTC Co...
The Enterprise wants WebRTC -- and it needs Middleware to get it! (IIT RTC Co...Brian Pulito
 

Similar to Building a Browser for Automotive: Alternatives, Challenges and Recommendations (20)

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...
 
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...
 
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)
 
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
 
S01 gae and_hybrid_app_v1.0
S01 gae and_hybrid_app_v1.0S01 gae and_hybrid_app_v1.0
S01 gae and_hybrid_app_v1.0
 
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
 
Michael(tm) Smith WND09 Presentation
Michael(tm) Smith WND09 PresentationMichael(tm) Smith WND09 Presentation
Michael(tm) Smith WND09 Presentation
 
Cutting edge of web technology
Cutting edge of web technologyCutting edge of web technology
Cutting edge of web technology
 
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...Mobile Web Applications using HTML5  [IndicThreads Mobile Application Develop...
Mobile Web Applications using HTML5 [IndicThreads Mobile Application Develop...
 
2014 HTML5 총정리
2014 HTML5 총정리2014 HTML5 총정리
2014 HTML5 총정리
 
Industry trend of HTML5 in 2012 (2012년 HTML5 총정리)
Industry trend of HTML5 in 2012 (2012년 HTML5 총정리)Industry trend of HTML5 in 2012 (2012년 HTML5 총정리)
Industry trend of HTML5 in 2012 (2012년 HTML5 총정리)
 
Mobile applications for SharePoint using HTML5
Mobile applications for SharePoint using HTML5Mobile applications for SharePoint using HTML5
Mobile applications for SharePoint using HTML5
 
2011 08-24 mobile web app
2011 08-24  mobile web app2011 08-24  mobile web app
2011 08-24 mobile web app
 
Microsoft Silverlight
Microsoft SilverlightMicrosoft Silverlight
Microsoft Silverlight
 
The Web, After HTML5
The Web, After HTML5The Web, After HTML5
The Web, After HTML5
 
FEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing MojitoFEDM Meetup: Introducing Mojito
FEDM Meetup: Introducing Mojito
 
Android ppt
Android pptAndroid ppt
Android ppt
 
Open Source on Wheels - Tech Day by Init 2017
Open Source on Wheels - Tech Day by Init 2017Open Source on Wheels - Tech Day by Init 2017
Open Source on Wheels - Tech Day by Init 2017
 
WebML and WebRatio 5 - TOOLS conference, Zurich 2008
WebML and WebRatio 5 - TOOLS conference, Zurich 2008WebML and WebRatio 5 - TOOLS conference, Zurich 2008
WebML and WebRatio 5 - TOOLS conference, Zurich 2008
 
The Enterprise wants WebRTC -- and it needs Middleware to get it! (IIT RTC Co...
The Enterprise wants WebRTC -- and it needs Middleware to get it! (IIT RTC Co...The Enterprise wants WebRTC -- and it needs Middleware to get it! (IIT RTC Co...
The Enterprise wants WebRTC -- and it needs Middleware to get it! (IIT RTC Co...
 

Recently uploaded

The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Recently uploaded (20)

The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 

Building a Browser for Automotive: Alternatives, Challenges and Recommendations

  • 1. Building a Browser for Automotive: Alternatives, Challenges and Recommendations Juan J. Sánchez Automotive Linux Summit 2015, Tokyo
  • 2. Myself, Igalia and Webkit/Chromium Co-founder of Igalia Open source consultancy founded in 2001 Igalia is Top 5 contributor to upstream WebKit/Chromium Working with many industry actors: automotive, tablets, phones, smart tv, set-top boxes, IVI and home automation Building a Browser for Automotive Juan J. Sánchez
  • 3. Outline 1 A browser for automotive: requirements and alternatives 2 WebKit and Chromium, a historical perspective 3 Selecting between WebKit and Chromium based alternatives Building a Browser for Automotive Juan J. Sánchez
  • 4. PART 1 A browser for automotive: requirements and alternatives Building a Browser for Automotive Juan J. Sánchez
  • 5. Requirements Different User Experiences UI modifications (flexibility) New ways of interacting: accessibility support Support of specific standards (mostly communication and interfaces) Portability: support of specific hardware boards (performance optimization) Functionality and completeness can be less demanding in some cases (for now) Provide both browser as an application and as a runtime Building a Browser for Automotive Juan J. Sánchez
  • 6. Available alternatives Option 1) Licensing a proprietary solution: might bring a reduced time-to-market but involves a cost per unit and lack of flexibility Option 2) Deriving a new browser from the main open source browser technologies: Firefox (Gecko) Chromium WebKit (Safari and others) Mozilla removed support in their engine for third party browser developers, so the two available choices are Chromium and WebKit (with various options for each of them) Building a Browser for Automotive Juan J. Sánchez
  • 7. Understanding the main alternatives When creating a new open source browser for automotive, a decission between Chromium and WebKit will need to be made Chromium and Webkit share a lot of history, design and code Learning how WebKit was created, and how Chromium emerged and derived from WebKit, improves the understanding of the pros and cons of each solution We will make a detailed historical review of both projects Building a Browser for Automotive Juan J. Sánchez
  • 8. PART 2 WebKit and Chromium, a historical perspective Building a Browser for Automotive Juan J. Sánchez
  • 9. PART 2.1: 2004-2013 WebKit, the first 9 years Building a Browser for Automotive Juan J. Sánchez
  • 10. 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 Building a Browser for Automotive 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, Passing ACID3 with 100/100 tests since March 2008 Building a Browser for Automotive 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 Building a Browser for Automotive Juan J. Sánchez
  • 13. What is a WebKit port? Building a Browser for Automotive 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) Building a Browser for Automotive 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 Building a Browser for Automotive Juan J. Sánchez
  • 16. Architecture of a WebKit port Building a Browser for Automotive Juan J. Sánchez
  • 17. Architecture of a WebKit port Building a Browser for Automotive 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.. Building a Browser for Automotive 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() Building a Browser for Automotive Juan J. Sánchez
  • 20. A minibrowser written in Python Building a Browser for Automotive Juan J. Sánchez
  • 21. 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 Building a Browser for Automotive Juan J. Sánchez
  • 22. WebKit VS WebKit2 Advantages: isolation, security, performance, stability. Building a Browser for Automotive Juan J. Sánchez
  • 23. WebKit2 VS Chromium Chromium first released in late 2008. Building a Browser for Automotive Juan J. Sánchez
  • 24. 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 Building a Browser for Automotive Juan J. Sánchez
  • 25. The WebKit Project in numbers Commits per month till 2013: Building a Browser for Automotive Juan J. Sánchez
  • 26. The WebKit Project in numbers Contributors per month:: Building a Browser for Automotive Juan J. Sánchez
  • 27. The WebKit Project in numbers Evolution in the number of lines of code Building a Browser for Automotive Juan J. Sánchez
  • 28. 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/ Building a Browser for Automotive Juan J. Sánchez
  • 29. Activity of Companies by 2013 Figura : Commits per company (monthly) Building a Browser for Automotive Juan J. Sánchez
  • 30. Activity of Companies by 2013 Figura : Active authors per company (monthly) Building a Browser for Automotive Juan J. Sánchez
  • 31. Activity of Companies by 2013 Figura : Commits per company Building a Browser for Automotive Juan J. Sánchez
  • 32. Activity of Companies by 2013 Figura : Active authors per company Building a Browser for Automotive Juan J. Sánchez
  • 33. Part 2.2 The creation of Blink (April 2013) Building a Browser for Automotive Juan J. Sánchez
  • 34. 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 Building a Browser for Automotive Juan J. Sánchez
  • 35. 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 Building a Browser for Automotive Juan J. Sánchez
  • 36. Early consequences of Blink for WebKit Google was the main contributor by # of commits. Apple’s position now more dominant Opera joined WebKit then moved to Blink. Other companies and communities started migrating (Tizen and Qt) 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 Building a Browser for Automotive Juan J. Sánchez
  • 37. Impact of Blink in numbers Commits per month in WebKit, including last months: Building a Browser for Automotive Juan J. Sánchez
  • 38. Impact of Blink in numbers Contributors per month in WebKit, including first year of Blink: Building a Browser for Automotive Juan J. Sánchez
  • 39. Impact of Blink in numbers Contributors per month in 2013-2014: Blink: WebKit: Building a Browser for Automotive Juan J. Sánchez
  • 40. Impact of Blink in numbers Commits per month in 2013-2014, Blink:: Commits per month in 2013-2014, WebKit:: Building a Browser for Automotive Juan J. Sánchez
  • 41. Webkit and Chromium in 2015 Less shared energy because of the split, but both projects very active and alive There is a recent trend towards more users for Blink and Chromium, but still quite a lot of open questions and challenges Both provide good building blocks for creating a browser for automotive Building a Browser for Automotive Juan J. Sánchez
  • 42. PART 3 Selecting the best alternative Building a Browser for Automotive Juan J. Sánchez
  • 43. Alternatives today In WebKit you need to select (or create) a port, in Chromium you need to define how to derive from upstream WebKit: WebKitGTK+ WebKit for wayland WebkitEFL and QtWebkit still in some (mostly) legacy projects Chromium: Chromium directly QtWebEngine Crosswalk Cromium Embedded Framework (CEF) Building a Browser for Automotive Juan J. Sánchez
  • 44. Webkit vs Chromium: pros and cons WebKit: Pro: memory footprint is smaller Pro: ports are upstream, easy to integrate core changes Pro: very flexible architecture, easy to plug components Con: less companies contributing (Apple very relevant) Con: less innovation lately in some areas of the codebase Chromium: Pro: more innovation happening in some areas, Google driving it with a lot of developers Pro: trend of more and more companies using the technology and testing it Con: no concept of ports, alternatives are not upstream Con: difficult to contribute to some core areas (Google) Con: versions of Chromium diverting a lot from Chrome Building a Browser for Automotive Juan J. Sánchez
  • 45. WebKitGTK+ and WebKit for Wayland Pure open source projects, easy to influence their upstream development Reliable and well-known release process and quality maintenance procedures, strong API and ABI compatibility Possibility of modifying the whole stack, avoiding a big delta (e.g. gstreamer vs other media frameworks) Developed by a relatively small team (compared to Google’s Chromium) Less widely tested in heterogeneous hardware platforms Webkit for wayland brings an interesting alternative to WebKitGTK+ for some use cases, but still not a mature project Building a Browser for Automotive Juan J. Sánchez
  • 46. Chromium directly All the features in the browser and flexibility to use them at the cost of increased maintenance complexity Browsing operations implemented interfacing Chromium’s Content API. Browser services like history, bookmarks or incognito should be interfaced directly through internal (unstable) APIs High risk of ending with a big delta compared to upstream Chromium (which moves very fast) Changing the UI requires patching the UI code (no toolkit available) Chromium is officially supported on Intel-based Windows, Mac OS X and Linux with X11. Building on top of ARM devices is possible but less directly supported Building a Browser for Automotive Juan J. Sánchez
  • 47. Crosswalk Crosswalk is an HTML application runtime based on Chromium. It is available for Android as an embeddable webview container and for Tizen as the system-wide application runtime Crosswalk usage as a webview for Android difficult to port as it is mostly implemented in Java. Crosswalk reuses and adapts the multiprocess model of Chromium to its needs Crosswalk is intended to run applications and not web pages. Building a browser on top requires creating a quite big delta with upstream Still a quite new project (created in 2013). Not a big community outside Intel and Tizen No backwards compatibility in the new versions Building a Browser for Automotive Juan J. Sánchez
  • 48. QtWebEngine Evolution of the Qt webkit port, but using Chromium It was undergoing heavy development until very recently Some small open source browsers use it but not focused on being used for browsers, just for embedding small HTML5 parts in Qt 5 applications Potential issues with LGPLv3 license for some users. Alternative of paying a license for Qt Building a Browser for Automotive Juan J. Sánchez
  • 49. Chromium Embedded Framework Stable API for development of applications with embedded browsers All browser abstractions are preserved, and the multiprocess architecture of Chromium is preserved and properly interfaced A browser based on CEF would be an independent application that would incorporate CEF as a library and use its API Browser features from layers above the Content API are not present in CEF (history, bookmarks or incognito) Officially supported only on Intel-based Windows, Mac OS X and Linux with X11 Created in 2009. Still mostly a one person project Building a Browser for Automotive Juan J. Sánchez
  • 50. Conclusions There are various alternatives both on WebKit and Chromium to create a derived browser for Automotive Different companies and projects are using different solutions. There is none that seems to be good at everything The choice largely depends on the weight of the different goals to be achieved with that project and its specific hardware and software needs In any case, and independently from the choice, 3 keys for success: Long term analysis of hardware and software requirements Respecting community and open source dynamics (minimum delta, as much upstream as possible) Right team and project scope definition Building a Browser for Automotive Juan J. Sánchez
  • 51. Thank you! Juan J. Sánchez jjsanchez@igalia.com Building a Browser for Automotive Juan J. Sánchez