SlideShare a Scribd company logo
1 of 32
Download to read offline
Add the power of the
Web to your embedded
devices with WPE WebKit
Mario Sánchez Prada
1
About me
CS Engineer, partner of Igalia
Involvement in some Open Source communities
e.g. Chromium, WebKit, GNOME
Other work done in the past:
Linux-based OS’s (i.e. Endless OS, Litl OS)
Maemo (Hildon Application Manager)
Samsung SmartTV platform
Currently coordinating Igalia's WebKit team
2
3
About Igalia
Specialized Open Source consultancy, founded in 2001
Fully remote, headquartered in A Coruña, Galicia (Spain)
Worker-owned, employee-run, flat structure (140+ igalians)
Top contributors to the main Web Rendering Engines:
WebKit, Chromium, Gecko and Servo
Active contributor to other areas and OSS projects
V8, SpiderMonkey, JSC, LLVM, Node.js, GStreamer, Mesa, Linux Kernel...
Members of several working groups:
W3C, WHATWG, WPT, TC39, OpenJS, Test262, Khronos...
https://www.igalia.com
4
Web Rendering Engines
5
What is WebKit?
6
What is WebKit?
An Open Source Web rendering engine (mostly BSD)
Started by Apple as a fork of KHTML and KJS in 2001.
Forked again by Google to become Blink in 2013.
Goals: performance, portability, stability, compatibility, standards compliance,
security and "hackability". Embedded-ability.
Available for different platforms and operating systems:
Desktop & Mobile: Mac, iOS and Linux ((e.g. Safari, GNOME Web...)
Embedded: set-top-boxes, video game consoles, smart home appliances, in-
vehicle/inflight entertainment, GPS devices, digital signage...
7
What is WebKit?
Web Browser Engine ≠ Web Browser
8
WebKit Architecture
Application:
What end-users interact with.
WebKit:
Exposes an API to applications and
implements the split-process model.
WebCore:
Layout, rendering, network,
multimedia, accessibility...
JavaScriptCore:
The JavaScript engine.
Platform:
Platform-specific hooks.
9
WebKit Ports
WebKit port: adaptation of WebKit to a specific platform.
Official WebKit Ports (upstream ports)
Mac: Safari, Apple Mail, iTunes, App Store...
iOS: every browser on iOS devices (including Chrome).
AppleWin (deprecated): iTunes, iCloud on Windows
WinCairo (current): Microsoft Playwright, Playstation SDK
Playstation: Playstation s4 & Playstation 5
WebKitGTK: GNOME Web, Evolution, Shotwell...
WPE: Cog and other custom-made "browsers" for embedded devices.
https://docs.webkit.org/Ports/Introduction.html
10
WebKitGTK and WPE
WebKit ports targetting Linux-based systems
Common parts: GLib, libsoup (networking), GStreamer (multimedia)...
Key differences: graphics stack, input handling. Different use cases.
WebKitGTK:
Go-to solution to embed Web content in GTK applications.
Integration with GNOME components. Supports GTK3 and GTK4.
WPE:
Lower level, aimed at embedded devices.
Requires graphics and input backend to work.
11
WebKit Ports: WebKitGTK
12
What is WPE?
13
What is WPE?
WPE is a WebKit port optimized for Linux embedded devices
Modern and comprehensive implementation of the Web Platform.
Focus on flexibility, security and performance.
Minimal set of dependencies, backends-based architecture.
Low memory and storage footprint.
Great support for HW-accelerated graphics and multimedia.
ℹ️https://wpewebkit.org/
14
What is not WPE?
WPE is NOT a general purpose Web Browser
Provides just the building blocks for Web-based applications.
Doesn't implement all the APIs found on other WebKit ports.
Does not rely on any particular UI Toolkit (i.e. backends).
Can also be useful for less conventional use cases
e.g. server-side rendering, headless mode...
15
Upstream & Downstream WPE
Upstream WPE:
Generic, device-agnostic, free of customizations.
Doesn't assume a particular chipset or platform.
Lives upstream at .
Downstream WPE (aka WebPlatformForEmbedded):
Optimized for set-top boxes on specific HW platforms.
Customizations for Broadcom SoCs and other types of devices.
Better integration with the Reference Design Kit (RDK).
Lives in
ℹ️Check for more info on RDK
https://github.com/WebKit/WebKit
https://github.com/WebPlatformForEmbedded/WPEWebKit
https://rdkcentral.com
16
WPE-based products
Some examples of use cases we are aware about:
Set-Top-Boxes (both RDK and non RDK based)
Smart Home Appliances
HiFi audio/sound systems & music streaming
Digital Signage
GPS navigation devices
Video/Audio conference
Headless server-side rendering
QA and testing
...
17
WPE Architecture
Application:
The end application, which can use WPE
directly or via the provided Cog launcher.
WebKit:
The actual WebKit port, including the API
layer to link against from applications.
Backend:
Platform-specific implementation of the
graphics and/or the input layers.
18
WPE components
WPEWebKit:
The actual WebKit port.
Relies on the backends for page display and input.
libwpe:
Provides rendering-related callbacks implemented by the graphical backend.
Allows the input backend to rely events from the application to WebKit.
WPEBackend-FDO
The reference FreekDesktop.Org-based backend (i.e. Wayland).
Supports several architectures plus regular PC architectures.
Can be replaced by a device-specific backend
Cog:
Small single “window” launcher for WPE, with no user interface.
19
WPE: Graphics & Multimedia
20
WPE: HW-accelerated graphics
ANGLE Support (Almost Native Graphics Layer Engine).
i.e. better WebGL conformance & WebGL2.
Supports DMABuf for efficient buffer-sharing (+fallback impls).
Fallback implementation for DMABuf/GBM-less systems.
New SVG engine
Unify HTML/CSS and SVG + enable HW acceleration.
Experimental GPUProcess support (WIP).
21
WPE: Multimedia
GStreamer-based back-ends for different use cases along with new
GStreamer features developed upstream (core & plugins).
e.g. Media Capture, Media Stream, Media Recorder, WebAudio, MSE, EME...
Improved performance by providing HW acceleration solutions.
Supports DMABuf for GStreamer decoders.
Experimental support (WIP): WebCodecs, WebRTC.
22
Demos
23
Future plans
24
Future plans (1/3)
Release a new and simplified design of WPEWebKit:
One library with minimum dependencies. Less layers for better IPC.
API/ABI backwards compatibility.
Improved graphics pipeline:
Efficient zero-copy buffer sharing when possible (e.g. DMABuf).
HW-accelerated 2D rendering, multiple-buffer support.
GPUProcess, WebGPU.
Improved multimedia stack:
Improve WebCodecs integration with WebGL and WebAudio.
GStreamer-based WebRTC implementation.
25
Future plans (2/3)
Improved tooling for developers and automated testing:
A new container-based SDK is in the works
Improves workflow both on WebKit and its dependencies (e.g. GStreamer).
Improved QA processes:
Better maintenance of WPE's continuous integration system.
Leverage the improvements from having better tooling.
Improved documentation:
Automatically generated API documentation (introspection).
Other documentation.
Align the development of WPE with WebKitGTK.
26
Future plans (3/3)
Support WPE running on Android:
Provide a WebKit-based alternative to the Android WebView widget.
Support for multiple architectures: arm64, armv7, x86-64, x86.
Integration with Android's main loop and Android's Process Management.
HW-accelerated media playback and WebGL support.
Remote Web Inspector.
WebDriver support.
...
No new port needed: uses WPE's public API
27
Wrapping up
28
Wrapping up
Open Source port of WebKit for Linux embedded devices.
Modular and flexible architecture, low resources footprint.
Fits and can adapt to a wide range of use cases.
Hardware acceleration for graphics and multimedia.
Two flavours: upstream and downstream (RDK-centric).
Deployed on millions of all sorts of devices.
Big improvements coming soon around key areas.
Experimenting with WPE Android.
29
Questions?
30
Thanks!
31
32

More Related Content

Similar to Add the power of the Web to your embedded devices with WPE WebKit

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
 
WebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionWebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionjuanjosanchezpenas
 
Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)Igalia
 
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
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTManuel Carrasco Moñino
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1rmitc
 
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamercalvaris
 
WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)Igalia
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.JooinK
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWTFrancesca Tosi
 
Crosswalk and the Intel XDK
Crosswalk and the Intel XDKCrosswalk and the Intel XDK
Crosswalk and the Intel XDKIntel® Software
 
AGILE software, devices and wider ecosystem
AGILE software, devices and wider ecosystemAGILE software, devices and wider ecosystem
AGILE software, devices and wider ecosystemAGILE IoT
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersSascha Corti
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch
 
[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTCGiacomo Vacca
 
2021 WebKit Contributors Meeting, Igalia
2021 WebKit Contributors Meeting, Igalia2021 WebKit Contributors Meeting, Igalia
2021 WebKit Contributors Meeting, IgaliaIgalia
 
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxWAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxIgalia
 
Graphical libraries
Graphical librariesGraphical libraries
Graphical librariesguestbd40369
 
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...Igalia
 
Reaching the multimedia web from embedded platforms with WPEWebkit
Reaching the multimedia web from embedded platforms with WPEWebkitReaching the multimedia web from embedded platforms with WPEWebkit
Reaching the multimedia web from embedded platforms with WPEWebkitIgalia
 

Similar to Add the power of the Web to your embedded devices with WPE WebKit (20)

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...
 
WebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionWebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolution
 
Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)Multimedia in WebKitGTK+ (FOSDEM 2010)
Multimedia in WebKitGTK+ (FOSDEM 2010)
 
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...
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
Qt Tutorial - Part 1
Qt Tutorial - Part 1Qt Tutorial - Part 1
Qt Tutorial - Part 1
 
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamer
 
WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)
 
DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.DIY: Computer Vision with GWT.
DIY: Computer Vision with GWT.
 
DIY- computer vision with GWT
DIY- computer vision with GWTDIY- computer vision with GWT
DIY- computer vision with GWT
 
Crosswalk and the Intel XDK
Crosswalk and the Intel XDKCrosswalk and the Intel XDK
Crosswalk and the Intel XDK
 
AGILE software, devices and wider ecosystem
AGILE software, devices and wider ecosystemAGILE software, devices and wider ecosystem
AGILE software, devices and wider ecosystem
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
 
[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC[workshop] The Revolutionary WebRTC
[workshop] The Revolutionary WebRTC
 
2021 WebKit Contributors Meeting, Igalia
2021 WebKit Contributors Meeting, Igalia2021 WebKit Contributors Meeting, Igalia
2021 WebKit Contributors Meeting, Igalia
 
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxWAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
 
Graphical libraries
Graphical librariesGraphical libraries
Graphical libraries
 
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
WebKit, HTML5 media and GStreamer on multiple platforms (GStreamer Conference...
 
Reaching the multimedia web from embedded platforms with WPEWebkit
Reaching the multimedia web from embedded platforms with WPEWebkitReaching the multimedia web from embedded platforms with WPEWebkit
Reaching the multimedia web from embedded platforms with WPEWebkit
 

More from Igalia

Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JITIgalia
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!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
 

More from Igalia (20)

Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
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
 

Recently uploaded

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 

Recently uploaded (20)

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 

Add the power of the Web to your embedded devices with WPE WebKit

  • 1. Add the power of the Web to your embedded devices with WPE WebKit Mario Sánchez Prada 1
  • 2. About me CS Engineer, partner of Igalia Involvement in some Open Source communities e.g. Chromium, WebKit, GNOME Other work done in the past: Linux-based OS’s (i.e. Endless OS, Litl OS) Maemo (Hildon Application Manager) Samsung SmartTV platform Currently coordinating Igalia's WebKit team 2
  • 3. 3
  • 4. About Igalia Specialized Open Source consultancy, founded in 2001 Fully remote, headquartered in A Coruña, Galicia (Spain) Worker-owned, employee-run, flat structure (140+ igalians) Top contributors to the main Web Rendering Engines: WebKit, Chromium, Gecko and Servo Active contributor to other areas and OSS projects V8, SpiderMonkey, JSC, LLVM, Node.js, GStreamer, Mesa, Linux Kernel... Members of several working groups: W3C, WHATWG, WPT, TC39, OpenJS, Test262, Khronos... https://www.igalia.com 4
  • 7. What is WebKit? An Open Source Web rendering engine (mostly BSD) Started by Apple as a fork of KHTML and KJS in 2001. Forked again by Google to become Blink in 2013. Goals: performance, portability, stability, compatibility, standards compliance, security and "hackability". Embedded-ability. Available for different platforms and operating systems: Desktop & Mobile: Mac, iOS and Linux ((e.g. Safari, GNOME Web...) Embedded: set-top-boxes, video game consoles, smart home appliances, in- vehicle/inflight entertainment, GPS devices, digital signage... 7
  • 8. What is WebKit? Web Browser Engine ≠ Web Browser 8
  • 9. WebKit Architecture Application: What end-users interact with. WebKit: Exposes an API to applications and implements the split-process model. WebCore: Layout, rendering, network, multimedia, accessibility... JavaScriptCore: The JavaScript engine. Platform: Platform-specific hooks. 9
  • 10. WebKit Ports WebKit port: adaptation of WebKit to a specific platform. Official WebKit Ports (upstream ports) Mac: Safari, Apple Mail, iTunes, App Store... iOS: every browser on iOS devices (including Chrome). AppleWin (deprecated): iTunes, iCloud on Windows WinCairo (current): Microsoft Playwright, Playstation SDK Playstation: Playstation s4 & Playstation 5 WebKitGTK: GNOME Web, Evolution, Shotwell... WPE: Cog and other custom-made "browsers" for embedded devices. https://docs.webkit.org/Ports/Introduction.html 10
  • 11. WebKitGTK and WPE WebKit ports targetting Linux-based systems Common parts: GLib, libsoup (networking), GStreamer (multimedia)... Key differences: graphics stack, input handling. Different use cases. WebKitGTK: Go-to solution to embed Web content in GTK applications. Integration with GNOME components. Supports GTK3 and GTK4. WPE: Lower level, aimed at embedded devices. Requires graphics and input backend to work. 11
  • 14. What is WPE? WPE is a WebKit port optimized for Linux embedded devices Modern and comprehensive implementation of the Web Platform. Focus on flexibility, security and performance. Minimal set of dependencies, backends-based architecture. Low memory and storage footprint. Great support for HW-accelerated graphics and multimedia. ℹ️https://wpewebkit.org/ 14
  • 15. What is not WPE? WPE is NOT a general purpose Web Browser Provides just the building blocks for Web-based applications. Doesn't implement all the APIs found on other WebKit ports. Does not rely on any particular UI Toolkit (i.e. backends). Can also be useful for less conventional use cases e.g. server-side rendering, headless mode... 15
  • 16. Upstream & Downstream WPE Upstream WPE: Generic, device-agnostic, free of customizations. Doesn't assume a particular chipset or platform. Lives upstream at . Downstream WPE (aka WebPlatformForEmbedded): Optimized for set-top boxes on specific HW platforms. Customizations for Broadcom SoCs and other types of devices. Better integration with the Reference Design Kit (RDK). Lives in ℹ️Check for more info on RDK https://github.com/WebKit/WebKit https://github.com/WebPlatformForEmbedded/WPEWebKit https://rdkcentral.com 16
  • 17. WPE-based products Some examples of use cases we are aware about: Set-Top-Boxes (both RDK and non RDK based) Smart Home Appliances HiFi audio/sound systems & music streaming Digital Signage GPS navigation devices Video/Audio conference Headless server-side rendering QA and testing ... 17
  • 18. WPE Architecture Application: The end application, which can use WPE directly or via the provided Cog launcher. WebKit: The actual WebKit port, including the API layer to link against from applications. Backend: Platform-specific implementation of the graphics and/or the input layers. 18
  • 19. WPE components WPEWebKit: The actual WebKit port. Relies on the backends for page display and input. libwpe: Provides rendering-related callbacks implemented by the graphical backend. Allows the input backend to rely events from the application to WebKit. WPEBackend-FDO The reference FreekDesktop.Org-based backend (i.e. Wayland). Supports several architectures plus regular PC architectures. Can be replaced by a device-specific backend Cog: Small single “window” launcher for WPE, with no user interface. 19
  • 20. WPE: Graphics & Multimedia 20
  • 21. WPE: HW-accelerated graphics ANGLE Support (Almost Native Graphics Layer Engine). i.e. better WebGL conformance & WebGL2. Supports DMABuf for efficient buffer-sharing (+fallback impls). Fallback implementation for DMABuf/GBM-less systems. New SVG engine Unify HTML/CSS and SVG + enable HW acceleration. Experimental GPUProcess support (WIP). 21
  • 22. WPE: Multimedia GStreamer-based back-ends for different use cases along with new GStreamer features developed upstream (core & plugins). e.g. Media Capture, Media Stream, Media Recorder, WebAudio, MSE, EME... Improved performance by providing HW acceleration solutions. Supports DMABuf for GStreamer decoders. Experimental support (WIP): WebCodecs, WebRTC. 22
  • 25. Future plans (1/3) Release a new and simplified design of WPEWebKit: One library with minimum dependencies. Less layers for better IPC. API/ABI backwards compatibility. Improved graphics pipeline: Efficient zero-copy buffer sharing when possible (e.g. DMABuf). HW-accelerated 2D rendering, multiple-buffer support. GPUProcess, WebGPU. Improved multimedia stack: Improve WebCodecs integration with WebGL and WebAudio. GStreamer-based WebRTC implementation. 25
  • 26. Future plans (2/3) Improved tooling for developers and automated testing: A new container-based SDK is in the works Improves workflow both on WebKit and its dependencies (e.g. GStreamer). Improved QA processes: Better maintenance of WPE's continuous integration system. Leverage the improvements from having better tooling. Improved documentation: Automatically generated API documentation (introspection). Other documentation. Align the development of WPE with WebKitGTK. 26
  • 27. Future plans (3/3) Support WPE running on Android: Provide a WebKit-based alternative to the Android WebView widget. Support for multiple architectures: arm64, armv7, x86-64, x86. Integration with Android's main loop and Android's Process Management. HW-accelerated media playback and WebGL support. Remote Web Inspector. WebDriver support. ... No new port needed: uses WPE's public API 27
  • 29. Wrapping up Open Source port of WebKit for Linux embedded devices. Modular and flexible architecture, low resources footprint. Fits and can adapt to a wide range of use cases. Hardware acceleration for graphics and multimedia. Two flavours: upstream and downstream (RDK-centric). Deployed on millions of all sorts of devices. Big improvements coming soon around key areas. Experimenting with WPE Android. 29
  • 32. 32