SlideShare a Scribd company logo
1 of 35
Download to read offline
static void
_f_do_barnacle_install_properties(GObjectClass
*gobject_class)
{
GParamSpec *pspec;
/* Party code attribute */
pspec = g_param_spec_uint64
(F_DO_BARNACLE_CODE,
"Barnacle code.",
"Barnacle code",
0,
G_MAXUINT64,
G_MAXUINT64 /*
default value */,
G_PARAM_READABLE
| G_PARAM_WRITABLE |
G_PARAM_PRIVATE);
g_object_class_install_property (gobject_class,
F_DO_BARNACLE_PROP_CODE,
Xavier Castaño García
xcastanho at igalia dot com
Wayland Support in Open
Source Browsers
●
Co-founder of Igalia in 2001. 65 engineers. Global
●
Open Source consultancy: web browsers, multimedia, graphics,
compilers, networking
●
Igalia among the top contributors to upstream web browsers
WebKit/JSC, Chromium/V8, Firefox/Servo/SpiderMonkey
●
Working with the industry: automotive, tablets, phones, smart tv,
set-top-boxes and several other embedded devices
manufacturers
Myself, Igalia and Web Browsers
Outline
●
Part I: Brief review on Wayland support on Open Source Web
Browsers
●
Part II: Wayland support in Chromium
●
Part III: WebKit and WPE
●
Part IV: Conclusions
Part I: Brief review on Wayland support on
Open Source Web Browsers
Motivation
●
Wayland is a mature solution
●
Demand from different industries
– Automotive
– Mobile
– Desktop
●
Current alternatives on the Open Source web browsers arena:
– Mozilla: Firefox(Gecko/Servo) / SpiderMonkey
– Chromium / Blink / V8
– WebKit / JSC
Mozilla Gecko
●
Powers the Firefox browser
●
Embedding not officially supported. Monolithic architecture
●
Several open source browsers moved away from Gecko to
WebKit about 10 years ago
●
Red Hat is working in Wayland support for Gecko. Basic
functionality
Mozilla Servo
●
Next generation engine
●
Designed for memory-safety, parallelism, embedding
●
New set of tools and technologies: Rust
●
Currently under heavy development. Too soon
●
Preliminary Wayland support by Samsung Open Source Group
Chromium
●
Vertical solution, from low-level graphics to UX
●
Very powerful and feature complete
●
Engineered to power Chrome and Chrome OS
●
Embedding, portability use cases are secondary. Fork is needed
●
Designed to minimize external dependencies
●
External deps are managed by the project build system
●
Versions pinned, included in the build process
●
In general, not designed to exchange subsystems
Chromium & Wayland
●
Two different efforts on having a native Wayland support:
●
Legacy Ozone-Wayland project (01.org)
●
New Wayland backend by Igalia
Chromium ecosystem
●
External projects filling the gaps
●
CEF: Chromium Embedded Framework
– Embed web content (WebView) in native applications
– Hybrid web/native applications
– Downstream Wayland support based on new Igalia's Wayland backend
●
QtWebEngine
– Embed web content in Qt applications
– Wayland support since Qt 5.10
– Slower upgrade pace, linked to Qt releases
– Commercial and GPLv3 license
Chromium ecosystem
●
External projects filling the gaps (cont.)
●
Electron or NW.js (node-webkit)
– Write apps with JS and HTML integrated with Node to access low level
system from web pages
– Pack Chromium and Node.js to build desktop apps with web technology
– Lack of Wayland support
WebKit
●
Powerful and complete
●
Very flexible architecture (ports)
●
Each port is an engine implementation with a stable API and a
specific set of technologies (network, graphics, multimedia)
●
Many ports:
– Upstream: iOS/OSX, GTK+, WPE
– Downstream: EFL, Qt, Sony,...
WebKit ports
●
WebKitGTK+
●
Stable and also lightweight
●
Active development
●
WebKitGTK+ support Wayland
●
QtWebKit
●
Officially abandoned in favor of Chromium-based QtWebEngine
●
Unofficial, volunteer-driven maintenance. Upgraded to latest Qt
versions
●
Wayland support provided by Qt toolkit
WebKit ports
●
WPE
●
Very lightweight, low hardware requirements
●
Strong multimedia capabilities
●
Backends enable Wayland support.
Part II: Wayland support in Chromium
Legacy Ozone-Wayland project
●
Legacy, in-production Wayland implementation
●
Developed mainly by Intel (01.org)
●
https://github.com/01org/ozone-wayland
●
Currently in maintenance mode
●
Good community support
●
No more active development
– No new features, no implementation of existing gaps
●
Latest supported version by Intel was 53
Legacy Ozone-Wayland project
●
Later maintained by LGe
●
https://github.com/lgsvl/chromium-src
●
LGe has been updating it until 64 so far
●
Current Chromium stable is 65 (66 in beta)
Legacy Ozone-Wayland project
●
This is the project currently used at GENIVI Development
Platform
●
Not recommended for new products, plan to phase it out
●
Current release provides Chromium 64
●
Why not merge Intel’s backend upstream?
●
Blocker: architecture differences
– Intel’s code doesn’t align with Chromium mid-term architecture plans
Chromium architecture now
Browser process
Renderer process
UI Service
desktop integration
ozone / wayland
(connection)
(IPC Mojo API)
Mus Linux desktop integration
GPU service
(thread)
Browser process
desktop integration
Renderer process
GPU process
ozone platform
wayland connection
IPC (old API)
Linux desktop integration (01.org)
x11 win
ozone/wayland
ozone / x11
Window
Server
x11 win
aura/mus
Browser process
GPU service
(GPU process)
New Wayland backend by Igalia
●
New project hosted at:
●
https://github.com/Igalia/chromium
●
More than one year of development so far
●
Developed by Igalia
●
Supported by Renesas
●
Wide array of features currently implemented
●
XDG v6, keyboard, mouse & touch input, common window
management, menus & tooltips, clipboard...
●
Main gaps: drag & drop, multi-screen, performance improvements.
New Wayland backend by Igalia
●
Development process
●
Start from scratch, follow modern Chromium conventions and
architecture
●
Buildbot running existing tests
●
Peer review
●
Track Chromium master
– weekly rebases
– continuous history clean up
New Wayland backend by Igalia
●
Ongoing upstreaming process
●
Periodic sync-up with Google
●
Shared design document. Live and dynamic document.
●
First step: undo ChromeOS assumptions from new architecture
●
New architecture only officially used on ChromeOS → Google
developers assumed ChromeOS use cases
●
Specifically: ChromeOS has one big container window
●
Discussion and next steps in BlinkOn (currently happening!)
Part III: WebKit and WPE
WebKit. What is a port?
●
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
WPE
●
Main use case: full-screen web content.
●
Derives from WebKitGTK+
●
Designed for simplicity and performance
●
Toolkit and platform agnostic
●
Gstreamer for media and JSC as JavaScript engine
●
Reduces dependencies to a few common libraries:
●
Glib, FreeType, HarfBuzz, GnuTLS, pixman, cairo, libsoup
●
GLES 2.0 for hardware accelerated rendering
WPE use cases
●
Great performance in low-end hardware
– Raspberry Pi 1/zero
●
Very low memory footprint
– A functional Raspberry Pi image can be about 40Mb
– Possible to limit memory consumption (100Mb for a standard setup)
●
Supports Wayland and also other backends
●
Strong multimedia capabilities
●
Well received in set-top-box market. Official part of RDK stack
WPE backends
●
Main goal: efficient cross-process GPU buffer sharing
●
Backends use platform-specific libraries to implement drawing and window
management
●
Can be independently developed
●
Vulkan support down the line
Available WPE backends
●
Libgbm: Intel, AMD, open source NVidia drivers for embedded
devices (i.e. Jetson) – specific to Mesa driver
●
Wayland-egl: uses Wayland as the protocol internally, can be
used by Mesa as well as ARM Mali drivers
●
LibWPEBackend-rdk covers 4-5 different stacks (Rpi, IntelCE,
bcm-nexus via the native API, bcm-nexus via Wayland,
westeros – RDK oriented compositor -)
●
Working on an experimental libWPEBackend-android
WPE present and future
●
Heavily developed during 2015-2017
●
Sponsored by Metrological
●
Upstream since May 2017
●
Stable Igalia team working on it
●
Since 2017:
●
RDK consortium adopted the technology (>10M STB)
●
Different kinds of embedded devices companies adopting WPE
●
Automotive companies already considering it
WPE present and future
●
Releases
●
QA infastructure
●
Documentation
●
New graphics architecture
●
Networking & Security
●
JSC improvements on 32 bits
●
More web standards (WebDriver, WebGL2, WebVR...)
WPE repositories
●
Upstream
●
https://webkit.org/getting-the-code
●
Downstream
●
https://github.com/WebPlatformForEmbedded
IV. Conclusions
Conclusions
●
Wayland is a mature solution
●
Support in major Linux distros
●
Automotive industry
●
Browsers are highly-demanding software
●
XWayland hurts performance
●
Native support is required
Conclusions
●
Native Wayland support in major Linux browsers
●
Chromium: work by Igalia
– Quite complete, upstream process ongoing
– Projects in Chromium ecosystem are waiting for upstream support
●
WebKit: work by Igalia
– Support is complete and published upstream
– WPE for embedded, WebKitGTK+ for desktop and embedded
●
Firefox/Gecko: work by Red Hat
– Work in progress, available in developer Nightly previews
This work is licensed under a Creative Commons Attribution-Share Alike 4.0 (CC BY-SA 4.0)
GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries
GENIVI logo © GENIVI Alliance 2017.
Contents © Igalia, S.L. 2017.

More Related Content

More from Igalia

Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerIgalia
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in MesaIgalia
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIgalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera LinuxIgalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVMIgalia
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsIgalia
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesIgalia
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSIgalia
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webIgalia
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersIgalia
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...Igalia
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on RaspberryIgalia
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Igalia
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic APIIgalia
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepIgalia
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESMIgalia
 
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...Igalia
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023Igalia
 
On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023Igalia
 
Status Update of the VKMS DRM driver – XDC 2023
Status Update of the VKMS DRM driver – XDC 2023Status Update of the VKMS DRM driver – XDC 2023
Status Update of the VKMS DRM driver – XDC 2023Igalia
 

More from Igalia (20)

Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic API
 
From the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by StepFrom the proposal to ECMAScript – Step by Step
From the proposal to ECMAScript – Step by Step
 
Migrating Babel from CommonJS to ESM
Migrating Babel     from CommonJS to ESMMigrating Babel     from CommonJS to ESM
Migrating Babel from CommonJS to ESM
 
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
The rainbow treasure map: Advanced color management on Linux with AMD/Steam D...
 
Freedreno on Android – XDC 2023
Freedreno on Android          – XDC 2023Freedreno on Android          – XDC 2023
Freedreno on Android – XDC 2023
 
On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023On-going challenges in the Raspberry Pi driver stack – XDC 2023
On-going challenges in the Raspberry Pi driver stack – XDC 2023
 
Status Update of the VKMS DRM driver – XDC 2023
Status Update of the VKMS DRM driver – XDC 2023Status Update of the VKMS DRM driver – XDC 2023
Status Update of the VKMS DRM driver – XDC 2023
 

Recently uploaded

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
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
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
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
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Wayland Support in Open Source Browsers (18th GENIVI AMM)

  • 1. static void _f_do_barnacle_install_properties(GObjectClass *gobject_class) { GParamSpec *pspec; /* Party code attribute */ pspec = g_param_spec_uint64 (F_DO_BARNACLE_CODE, "Barnacle code.", "Barnacle code", 0, G_MAXUINT64, G_MAXUINT64 /* default value */, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_PRIVATE); g_object_class_install_property (gobject_class, F_DO_BARNACLE_PROP_CODE, Xavier Castaño García xcastanho at igalia dot com Wayland Support in Open Source Browsers
  • 2. ● Co-founder of Igalia in 2001. 65 engineers. Global ● Open Source consultancy: web browsers, multimedia, graphics, compilers, networking ● Igalia among the top contributors to upstream web browsers WebKit/JSC, Chromium/V8, Firefox/Servo/SpiderMonkey ● Working with the industry: automotive, tablets, phones, smart tv, set-top-boxes and several other embedded devices manufacturers Myself, Igalia and Web Browsers
  • 3. Outline ● Part I: Brief review on Wayland support on Open Source Web Browsers ● Part II: Wayland support in Chromium ● Part III: WebKit and WPE ● Part IV: Conclusions
  • 4. Part I: Brief review on Wayland support on Open Source Web Browsers
  • 5. Motivation ● Wayland is a mature solution ● Demand from different industries – Automotive – Mobile – Desktop ● Current alternatives on the Open Source web browsers arena: – Mozilla: Firefox(Gecko/Servo) / SpiderMonkey – Chromium / Blink / V8 – WebKit / JSC
  • 6. Mozilla Gecko ● Powers the Firefox browser ● Embedding not officially supported. Monolithic architecture ● Several open source browsers moved away from Gecko to WebKit about 10 years ago ● Red Hat is working in Wayland support for Gecko. Basic functionality
  • 7. Mozilla Servo ● Next generation engine ● Designed for memory-safety, parallelism, embedding ● New set of tools and technologies: Rust ● Currently under heavy development. Too soon ● Preliminary Wayland support by Samsung Open Source Group
  • 8. Chromium ● Vertical solution, from low-level graphics to UX ● Very powerful and feature complete ● Engineered to power Chrome and Chrome OS ● Embedding, portability use cases are secondary. Fork is needed ● Designed to minimize external dependencies ● External deps are managed by the project build system ● Versions pinned, included in the build process ● In general, not designed to exchange subsystems
  • 9. Chromium & Wayland ● Two different efforts on having a native Wayland support: ● Legacy Ozone-Wayland project (01.org) ● New Wayland backend by Igalia
  • 10. Chromium ecosystem ● External projects filling the gaps ● CEF: Chromium Embedded Framework – Embed web content (WebView) in native applications – Hybrid web/native applications – Downstream Wayland support based on new Igalia's Wayland backend ● QtWebEngine – Embed web content in Qt applications – Wayland support since Qt 5.10 – Slower upgrade pace, linked to Qt releases – Commercial and GPLv3 license
  • 11. Chromium ecosystem ● External projects filling the gaps (cont.) ● Electron or NW.js (node-webkit) – Write apps with JS and HTML integrated with Node to access low level system from web pages – Pack Chromium and Node.js to build desktop apps with web technology – Lack of Wayland support
  • 12. WebKit ● Powerful and complete ● Very flexible architecture (ports) ● Each port is an engine implementation with a stable API and a specific set of technologies (network, graphics, multimedia) ● Many ports: – Upstream: iOS/OSX, GTK+, WPE – Downstream: EFL, Qt, Sony,...
  • 13. WebKit ports ● WebKitGTK+ ● Stable and also lightweight ● Active development ● WebKitGTK+ support Wayland ● QtWebKit ● Officially abandoned in favor of Chromium-based QtWebEngine ● Unofficial, volunteer-driven maintenance. Upgraded to latest Qt versions ● Wayland support provided by Qt toolkit
  • 14. WebKit ports ● WPE ● Very lightweight, low hardware requirements ● Strong multimedia capabilities ● Backends enable Wayland support.
  • 15. Part II: Wayland support in Chromium
  • 16. Legacy Ozone-Wayland project ● Legacy, in-production Wayland implementation ● Developed mainly by Intel (01.org) ● https://github.com/01org/ozone-wayland ● Currently in maintenance mode ● Good community support ● No more active development – No new features, no implementation of existing gaps ● Latest supported version by Intel was 53
  • 17. Legacy Ozone-Wayland project ● Later maintained by LGe ● https://github.com/lgsvl/chromium-src ● LGe has been updating it until 64 so far ● Current Chromium stable is 65 (66 in beta)
  • 18. Legacy Ozone-Wayland project ● This is the project currently used at GENIVI Development Platform ● Not recommended for new products, plan to phase it out ● Current release provides Chromium 64 ● Why not merge Intel’s backend upstream? ● Blocker: architecture differences – Intel’s code doesn’t align with Chromium mid-term architecture plans
  • 19. Chromium architecture now Browser process Renderer process UI Service desktop integration ozone / wayland (connection) (IPC Mojo API) Mus Linux desktop integration GPU service (thread) Browser process desktop integration Renderer process GPU process ozone platform wayland connection IPC (old API) Linux desktop integration (01.org) x11 win ozone/wayland ozone / x11 Window Server x11 win aura/mus Browser process GPU service (GPU process)
  • 20. New Wayland backend by Igalia ● New project hosted at: ● https://github.com/Igalia/chromium ● More than one year of development so far ● Developed by Igalia ● Supported by Renesas ● Wide array of features currently implemented ● XDG v6, keyboard, mouse & touch input, common window management, menus & tooltips, clipboard... ● Main gaps: drag & drop, multi-screen, performance improvements.
  • 21. New Wayland backend by Igalia ● Development process ● Start from scratch, follow modern Chromium conventions and architecture ● Buildbot running existing tests ● Peer review ● Track Chromium master – weekly rebases – continuous history clean up
  • 22. New Wayland backend by Igalia ● Ongoing upstreaming process ● Periodic sync-up with Google ● Shared design document. Live and dynamic document. ● First step: undo ChromeOS assumptions from new architecture ● New architecture only officially used on ChromeOS → Google developers assumed ChromeOS use cases ● Specifically: ChromeOS has one big container window ● Discussion and next steps in BlinkOn (currently happening!)
  • 23. Part III: WebKit and WPE
  • 24. WebKit. What is a port? ● 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
  • 25. WPE ● Main use case: full-screen web content. ● Derives from WebKitGTK+ ● Designed for simplicity and performance ● Toolkit and platform agnostic ● Gstreamer for media and JSC as JavaScript engine ● Reduces dependencies to a few common libraries: ● Glib, FreeType, HarfBuzz, GnuTLS, pixman, cairo, libsoup ● GLES 2.0 for hardware accelerated rendering
  • 26. WPE use cases ● Great performance in low-end hardware – Raspberry Pi 1/zero ● Very low memory footprint – A functional Raspberry Pi image can be about 40Mb – Possible to limit memory consumption (100Mb for a standard setup) ● Supports Wayland and also other backends ● Strong multimedia capabilities ● Well received in set-top-box market. Official part of RDK stack
  • 27. WPE backends ● Main goal: efficient cross-process GPU buffer sharing ● Backends use platform-specific libraries to implement drawing and window management ● Can be independently developed ● Vulkan support down the line
  • 28. Available WPE backends ● Libgbm: Intel, AMD, open source NVidia drivers for embedded devices (i.e. Jetson) – specific to Mesa driver ● Wayland-egl: uses Wayland as the protocol internally, can be used by Mesa as well as ARM Mali drivers ● LibWPEBackend-rdk covers 4-5 different stacks (Rpi, IntelCE, bcm-nexus via the native API, bcm-nexus via Wayland, westeros – RDK oriented compositor -) ● Working on an experimental libWPEBackend-android
  • 29. WPE present and future ● Heavily developed during 2015-2017 ● Sponsored by Metrological ● Upstream since May 2017 ● Stable Igalia team working on it ● Since 2017: ● RDK consortium adopted the technology (>10M STB) ● Different kinds of embedded devices companies adopting WPE ● Automotive companies already considering it
  • 30. WPE present and future ● Releases ● QA infastructure ● Documentation ● New graphics architecture ● Networking & Security ● JSC improvements on 32 bits ● More web standards (WebDriver, WebGL2, WebVR...)
  • 33. Conclusions ● Wayland is a mature solution ● Support in major Linux distros ● Automotive industry ● Browsers are highly-demanding software ● XWayland hurts performance ● Native support is required
  • 34. Conclusions ● Native Wayland support in major Linux browsers ● Chromium: work by Igalia – Quite complete, upstream process ongoing – Projects in Chromium ecosystem are waiting for upstream support ● WebKit: work by Igalia – Support is complete and published upstream – WPE for embedded, WebKitGTK+ for desktop and embedded ● Firefox/Gecko: work by Red Hat – Work in progress, available in developer Nightly previews
  • 35. This work is licensed under a Creative Commons Attribution-Share Alike 4.0 (CC BY-SA 4.0) GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries GENIVI logo © GENIVI Alliance 2017. Contents © Igalia, S.L. 2017.