SlideShare a Scribd company logo
1 of 54
Download to read offline
WAM: an embedded web
runtime history
Introduction and retrospective
February 4th, 2023. FOSDEM @ Brussels
José Dapena Paz < >
jdapena@igalia.com
1
About me (1/3)
José Dapena Paz “dape”
Software engineer at Igalia for 21 years, and one of its
founders.
2
About me (2/3)
From Galicia, Spain.
Galicia in Europe | By David Sebastian Liuzzo, Alexandre Vigo | CC BY-SA 3.0
3
About me (3/3)
Member of Igalia Chromium team.
Some projects:
LG webOS web engine integration (2012-today)
WAM for AGL (2018-2022)
Nokia Meego and Maemo (2005-2011)
4
Igalia
Open source consultancy, focused on the web
ecosystem.
+100 engineers all around the world.
2nd main contributor to Chrome, right after Google.
2nd main contributor to WebKit, right after Apple.
Teams around web engines and platform, graphics,
compilers, ...
5
Why this talk?
I started working on webOS in October 2012 (10 years
ago!).
10 years feels like a good time to write about history.
6
Agenda
What is WAM?
Where is it used?
How it works?
What is good about WAM?
Retrospective
Future
7
What is WAM
8
What is WAM
WAM = Web Application Manager
9
What is WAM
WAM = Web Application Manager
LG webOS web runtime.
9
What is WAM
WAM = Web Application Manager
LG webOS web runtime.
On top of Chromium.
9
What is WAM
webOS
An Operating System for embedded products.
It is web centric: web applications are first class
citizens.
10
What is WAM
webOS
Yocto / Openembedded Core.
Wayland / QML / Maliit.
Unified media server.
Luna bus for IPC.
11
What is WAM
WAM = Web Application Manager
LG webOS web runtime.
On top of Chromium.
12
What is WAM
WAM = Web Application Manager
LG webOS web runtime.
On top of Chromium.
WAM is the center piece of web experience in webOS.
12
Where is it used?
13
Where WAS it used?
HP Touchpad
Some Palm phones
14
Where is it used?
LG webOS TV, from 2013.
15
Where is it used?
Some LG products and experiments that use or used
webOS and WAM:
16
Where is it used?
LG webOS Open Source Edition, from 2018.
17
Where is it used?
Linux Foundation Automotive Grade Linux (AGL) web
runtime.
Port done adapting to the AGL application framework.
18
How it works?
19
How it works?
20
What's good about WAM?
21
What's good about WAM?
Support of web platform standards
WAM is based on Chromium: high support for web
platform standards.
Document model, JS, CSS.
Device APIs.
Graphics APIs.
Media, WebRTC
Storage, security
22
What's good about WAM?
Application lifecycle
WAM runtime manages the running web applications:
Launching, closing
Suspend/resume
Recovery
23
What's good about WAM?
Performance
A goal of WAM is using the system resources
efficiently:
CPU and GPU memory.
CPU usage.
Launch time optimization.
24
What's good about WAM?
Security
Local packaged applications and remote web
applications.
Following web security origin model.
Application manifest permissions.
25
What's good about WAM?
Developer tools
Web inspector and developer tools
Chromium tracer
26
What's good about WAM?
Proven technology
Shipped in millions of LG smart TVs...
... and +10 years of experience.
Nowadays also adopted for the AGL reference platform.
27
What's good about WAM?
Open source license
Apache 2.0 license
https://webosose.org
https://github.com/webosose/wam
28
Retrospective
29
Retrospective
Caveat
I have been working on webOS web integration since
October 2012.
History of WAM seems to start around 2008.
I will mostly focus on what I lived.
30
Retrospective
From HP/Palm to LG TV
2010: HP bought Palm...
2011: ... Then HP decides to cancel new webOS
products. Last device: HP Touchpad.
31
Retrospective
From HP/Palm to LG TV (2/2)
2012: partnership LG+HP for using webOS on LG
SmartTV.
2013: LG acquires Palm software development unit
from HP: LG Silicon Valley Labs is born.
2014: LG webOS based TV are introduced in CES Las
Vegas. TV are released a few months later.
32
Retrospective
webOS and Open Source: Open WebOS
(1/2)
June 2012: HP/Palm releases OpenWebOS
Code still available at
2012: after LG acquisition, OpenWebOS is not
maintained anymore!
https://github.com/openwebos
33
Retrospective
webOS and Open Source: Open WebOS
(2/2)
So:
I guess it was useful to attract LG to invest in webOS.
LG preferred to focus on making LG webOS TV
happen.
My view: the webOS TV effort was a huge challenge.
No time for anything else.
34
Retrospective
Open Source: webOS OSE (1/3)
June 2018: LG releases webOS Open Source Edition
See
Focus:
Allow prototyping ideas and products.
For students, independent developers.
Create a community around it.
https://webosose.org
35
Retrospective
Open Source: webOS OSE (2/3)
It is active nowadays.
Hardware target: Raspberry PI (nowadays PI 4 models).
My view:
It simplified testing new ideas.
Integration of parts for AGL for automotive, ROS for
robotics.
36
Retrospective
Open Source: webOS OSE (3/3)
Do you want to integrate web UI in your experimental
product? webOS OSE can help!
37
Retrospective
From webOS to AGL (1/2)
Collaboration LG + Igalia + Linux Foundation.
Before 2018: Igalia assisted Chrome browser work with
Wayland
May 2018: LG Silicon Valley Labs experiment to port
WAM to AGL
38
Retrospective
From webOS to AGL (2/2)
The 2018 experiment proved it was possible.
Focus on a web-only demo:
System UI + web applications
Integration of third party applications.
Integration with system services.
In last 4 years WAM evolved with AGL.
39
Retrospective
From QtWebKit to webOS WebView (1/2)
2012: WAM was based on QtWebKit
2012-2013: Moved to QtWebKit2 (multiprocess
architecture).
2014-2015:
Moved to Blink following market trend after Blink
forked from WebKit.
Based on QtWebEngine.
40
Retrospective
From QtWebKit to webOS WebView (2/2)
2015-today:
Created webOS WebView layer and dropped
QtWebEngine.
Why?
No strong QWE specific use cases.
Qt started moving towards commercial and tighter
open-source licensing policies
41
Retrospective
From Qt to Qt-less (1/2)
WAM has been based on Qt for a long time.
But...
GPLv3 licensing of Qt was problematic for some
stakeholders (but not LG).
C++, STL and Chromium C++ libraries grew better and
better. Not much benefit on Qt.
42
Retrospective
From Qt to Qt-less (2/2)
From 2021, WAM does not depend on Qt anymore.
Based on STL and other C++ libraries + Glib.
QMake -> CMake.
43
Retrospective
Stability (1/2)
But... essentially, main ideas of WAM did not change in
last 10 years.
44
Retrospective
Stability (2/2)
It proved useful, and architecture flexible enough to
adapt to:
Web engine changes.
Dependencies changes.
New products
Even OS changes.
45
Future
46
Future
webOS is here to stay!
LG is increasing the bet
for webOS on SmartTV
through .
webOS Hub
47
Future
Some topics...
GCC or Clang?
How to improve upgrade cycles?
48
Final remarks
49
Final remarks
+10 years of project. More to come!
Proved useful for many products and
millions of users.
A great piece to make web a first class
citizen of a platform.
Thanks!
50
51

More Related Content

What's hot

運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率Bo-Yi Wu
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...エピック・ゲームズ・ジャパン Epic Games Japan
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnity Technologies Japan K.K.
 
【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター 【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター Unity Technologies Japan K.K.
 
UNREAL ENGINE 基本操作編
UNREAL ENGINE  基本操作編UNREAL ENGINE  基本操作編
UNREAL ENGINE 基本操作編Yuuki Ogino
 
UE4でAIとビヘイビアツリーと-基礎-
UE4でAIとビヘイビアツリーと-基礎-UE4でAIとビヘイビアツリーと-基礎-
UE4でAIとビヘイビアツリーと-基礎-com044
 
Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?
Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?
Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?kyu buns
 
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!Masahiko Nakamura
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
Streaming Reliability Engineering
Streaming Reliability EngineeringStreaming Reliability Engineering
Streaming Reliability EngineeringYusuke Goto
 

What's hot (20)

運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率運用 Docker 整合 Laravel 提升團隊開發效率
運用 Docker 整合 Laravel 提升團隊開發效率
 
POWER10 innovations for HPC
POWER10 innovations for HPCPOWER10 innovations for HPC
POWER10 innovations for HPC
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
 
【UE4.25 新機能】ロードの高速化機能「IOStore」について
【UE4.25 新機能】ロードの高速化機能「IOStore」について【UE4.25 新機能】ロードの高速化機能「IOStore」について
【UE4.25 新機能】ロードの高速化機能「IOStore」について
 
UE4を用いたTPS制作事例 EDF:IR レベル構成について
UE4を用いたTPS制作事例 EDF:IR レベル構成についてUE4を用いたTPS制作事例 EDF:IR レベル構成について
UE4を用いたTPS制作事例 EDF:IR レベル構成について
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
 
First Steps to DevOps
First Steps to DevOpsFirst Steps to DevOps
First Steps to DevOps
 
UE4アセットリダクション手法紹介
UE4アセットリダクション手法紹介UE4アセットリダクション手法紹介
UE4アセットリダクション手法紹介
 
Unity5とUE4の比較
Unity5とUE4の比較Unity5とUE4の比較
Unity5とUE4の比較
 
【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター 【Unity道場スペシャル 2017札幌】乱数完全マスター
【Unity道場スペシャル 2017札幌】乱数完全マスター
 
UNREAL ENGINE 基本操作編
UNREAL ENGINE  基本操作編UNREAL ENGINE  基本操作編
UNREAL ENGINE 基本操作編
 
UE4でAIとビヘイビアツリーと-基礎-
UE4でAIとビヘイビアツリーと-基礎-UE4でAIとビヘイビアツリーと-基礎-
UE4でAIとビヘイビアツリーと-基礎-
 
"有翼のフロイライン Wing of Darkness"と歩むUE4の世界
"有翼のフロイライン Wing of Darkness"と歩むUE4の世界"有翼のフロイライン Wing of Darkness"と歩むUE4の世界
"有翼のフロイライン Wing of Darkness"と歩むUE4の世界
 
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
 
Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?
Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?
Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?
 
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
UE4のモバイル向け機能や最新情報などを改めて紹介!2019
UE4のモバイル向け機能や最新情報などを改めて紹介!2019UE4のモバイル向け機能や最新情報などを改めて紹介!2019
UE4のモバイル向け機能や最新情報などを改めて紹介!2019
 
Streaming Reliability Engineering
Streaming Reliability EngineeringStreaming Reliability Engineering
Streaming Reliability Engineering
 

Similar to History and evolution of WAM, the web runtime behind LG webOS

Mobile applications for SharePoint using HTML5
Mobile applications for SharePoint using HTML5Mobile applications for SharePoint using HTML5
Mobile applications for SharePoint using HTML5Christian Heindel
 
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
 
Web Technologies in Automotive & Robotics (BlinkOn 10)
Web Technologies in Automotive & Robotics (BlinkOn 10)Web Technologies in Automotive & Robotics (BlinkOn 10)
Web Technologies in Automotive & Robotics (BlinkOn 10)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
 
What is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfWhat is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfShaiAlmog1
 
Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008smancke
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platformsguestfa9375
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platformssmancke
 
Interopability with Suse Linux: MoonLight Project
Interopability with Suse Linux: MoonLight Project Interopability with Suse Linux: MoonLight Project
Interopability with Suse Linux: MoonLight Project Alessandro Binhara
 
A Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerA Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerAjeet Singh Raina
 
Mobile Developer's Guide To The Galaxy Vol.7
Mobile Developer's Guide To The Galaxy Vol.7Mobile Developer's Guide To The Galaxy Vol.7
Mobile Developer's Guide To The Galaxy Vol.7Marco Tabor
 
Webrtc plugins for Desktop Browsers
Webrtc plugins for Desktop BrowsersWebrtc plugins for Desktop Browsers
Webrtc plugins for Desktop BrowsersAlexandre Gouaillard
 
Serverless computing with Google Cloud
Serverless computing with Google CloudServerless computing with Google Cloud
Serverless computing with Google Cloudwesley chun
 
Trends in webdesign
Trends in webdesignTrends in webdesign
Trends in webdesignbart_netlash
 
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...Niklas Heidloff
 
Webinar WebRTC HTML5 (english)
Webinar WebRTC HTML5 (english)Webinar WebRTC HTML5 (english)
Webinar WebRTC HTML5 (english)Quobis
 
Drupalcamp New York 2009
Drupalcamp New York 2009Drupalcamp New York 2009
Drupalcamp New York 2009Tom Deryckere
 

Similar to History and evolution of WAM, the web runtime behind LG webOS (20)

Mobile applications for SharePoint using HTML5
Mobile applications for SharePoint using HTML5Mobile applications for SharePoint using HTML5
Mobile applications for SharePoint using HTML5
 
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
 
Web Technologies in Automotive & Robotics (BlinkOn 10)
Web Technologies in Automotive & Robotics (BlinkOn 10)Web Technologies in Automotive & Robotics (BlinkOn 10)
Web Technologies in Automotive & Robotics (BlinkOn 10)
 
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...
 
Mobile Platforms Redux
Mobile Platforms ReduxMobile Platforms Redux
Mobile Platforms Redux
 
What is Codename One - Transcript.pdf
What is Codename One - Transcript.pdfWhat is Codename One - Transcript.pdf
What is Codename One - Transcript.pdf
 
Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008Jalimo Slides Linuxtag2008
Jalimo Slides Linuxtag2008
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platforms
 
mobile development platforms
mobile development platformsmobile development platforms
mobile development platforms
 
[IJCT-V3I2P36] Authors: Amarbir Singh
[IJCT-V3I2P36] Authors: Amarbir Singh[IJCT-V3I2P36] Authors: Amarbir Singh
[IJCT-V3I2P36] Authors: Amarbir Singh
 
Interopability with Suse Linux: MoonLight Project
Interopability with Suse Linux: MoonLight Project Interopability with Suse Linux: MoonLight Project
Interopability with Suse Linux: MoonLight Project
 
A Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerA Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using Docker
 
Mobile Developer's Guide To The Galaxy Vol.7
Mobile Developer's Guide To The Galaxy Vol.7Mobile Developer's Guide To The Galaxy Vol.7
Mobile Developer's Guide To The Galaxy Vol.7
 
Webrtc plugins for Desktop Browsers
Webrtc plugins for Desktop BrowsersWebrtc plugins for Desktop Browsers
Webrtc plugins for Desktop Browsers
 
Serverless computing with Google Cloud
Serverless computing with Google CloudServerless computing with Google Cloud
Serverless computing with Google Cloud
 
Trends in webdesign
Trends in webdesignTrends in webdesign
Trends in webdesign
 
Trends in webdesign
Trends in webdesignTrends in webdesign
Trends in webdesign
 
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
OpenNTF Webinar 05/07/13: OpenNTF - The IBM Collaboration Solutions App Dev C...
 
Webinar WebRTC HTML5 (english)
Webinar WebRTC HTML5 (english)Webinar WebRTC HTML5 (english)
Webinar WebRTC HTML5 (english)
 
Drupalcamp New York 2009
Drupalcamp New York 2009Drupalcamp New York 2009
Drupalcamp New York 2009
 

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

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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
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
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
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
 
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
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
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
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
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
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

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...
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
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
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
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
 
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
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
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)
 
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?
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint 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
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 

History and evolution of WAM, the web runtime behind LG webOS

  • 1. WAM: an embedded web runtime history Introduction and retrospective February 4th, 2023. FOSDEM @ Brussels José Dapena Paz < > jdapena@igalia.com 1
  • 2. About me (1/3) José Dapena Paz “dape” Software engineer at Igalia for 21 years, and one of its founders. 2
  • 3. About me (2/3) From Galicia, Spain. Galicia in Europe | By David Sebastian Liuzzo, Alexandre Vigo | CC BY-SA 3.0 3
  • 4. About me (3/3) Member of Igalia Chromium team. Some projects: LG webOS web engine integration (2012-today) WAM for AGL (2018-2022) Nokia Meego and Maemo (2005-2011) 4
  • 5. Igalia Open source consultancy, focused on the web ecosystem. +100 engineers all around the world. 2nd main contributor to Chrome, right after Google. 2nd main contributor to WebKit, right after Apple. Teams around web engines and platform, graphics, compilers, ... 5
  • 6. Why this talk? I started working on webOS in October 2012 (10 years ago!). 10 years feels like a good time to write about history. 6
  • 7. Agenda What is WAM? Where is it used? How it works? What is good about WAM? Retrospective Future 7
  • 9. What is WAM WAM = Web Application Manager 9
  • 10. What is WAM WAM = Web Application Manager LG webOS web runtime. 9
  • 11. What is WAM WAM = Web Application Manager LG webOS web runtime. On top of Chromium. 9
  • 12. What is WAM webOS An Operating System for embedded products. It is web centric: web applications are first class citizens. 10
  • 13. What is WAM webOS Yocto / Openembedded Core. Wayland / QML / Maliit. Unified media server. Luna bus for IPC. 11
  • 14. What is WAM WAM = Web Application Manager LG webOS web runtime. On top of Chromium. 12
  • 15. What is WAM WAM = Web Application Manager LG webOS web runtime. On top of Chromium. WAM is the center piece of web experience in webOS. 12
  • 16. Where is it used? 13
  • 17. Where WAS it used? HP Touchpad Some Palm phones 14
  • 18. Where is it used? LG webOS TV, from 2013. 15
  • 19. Where is it used? Some LG products and experiments that use or used webOS and WAM: 16
  • 20. Where is it used? LG webOS Open Source Edition, from 2018. 17
  • 21. Where is it used? Linux Foundation Automotive Grade Linux (AGL) web runtime. Port done adapting to the AGL application framework. 18
  • 24. What's good about WAM? 21
  • 25. What's good about WAM? Support of web platform standards WAM is based on Chromium: high support for web platform standards. Document model, JS, CSS. Device APIs. Graphics APIs. Media, WebRTC Storage, security 22
  • 26. What's good about WAM? Application lifecycle WAM runtime manages the running web applications: Launching, closing Suspend/resume Recovery 23
  • 27. What's good about WAM? Performance A goal of WAM is using the system resources efficiently: CPU and GPU memory. CPU usage. Launch time optimization. 24
  • 28. What's good about WAM? Security Local packaged applications and remote web applications. Following web security origin model. Application manifest permissions. 25
  • 29. What's good about WAM? Developer tools Web inspector and developer tools Chromium tracer 26
  • 30. What's good about WAM? Proven technology Shipped in millions of LG smart TVs... ... and +10 years of experience. Nowadays also adopted for the AGL reference platform. 27
  • 31. What's good about WAM? Open source license Apache 2.0 license https://webosose.org https://github.com/webosose/wam 28
  • 33. Retrospective Caveat I have been working on webOS web integration since October 2012. History of WAM seems to start around 2008. I will mostly focus on what I lived. 30
  • 34. Retrospective From HP/Palm to LG TV 2010: HP bought Palm... 2011: ... Then HP decides to cancel new webOS products. Last device: HP Touchpad. 31
  • 35. Retrospective From HP/Palm to LG TV (2/2) 2012: partnership LG+HP for using webOS on LG SmartTV. 2013: LG acquires Palm software development unit from HP: LG Silicon Valley Labs is born. 2014: LG webOS based TV are introduced in CES Las Vegas. TV are released a few months later. 32
  • 36. Retrospective webOS and Open Source: Open WebOS (1/2) June 2012: HP/Palm releases OpenWebOS Code still available at 2012: after LG acquisition, OpenWebOS is not maintained anymore! https://github.com/openwebos 33
  • 37. Retrospective webOS and Open Source: Open WebOS (2/2) So: I guess it was useful to attract LG to invest in webOS. LG preferred to focus on making LG webOS TV happen. My view: the webOS TV effort was a huge challenge. No time for anything else. 34
  • 38. Retrospective Open Source: webOS OSE (1/3) June 2018: LG releases webOS Open Source Edition See Focus: Allow prototyping ideas and products. For students, independent developers. Create a community around it. https://webosose.org 35
  • 39. Retrospective Open Source: webOS OSE (2/3) It is active nowadays. Hardware target: Raspberry PI (nowadays PI 4 models). My view: It simplified testing new ideas. Integration of parts for AGL for automotive, ROS for robotics. 36
  • 40. Retrospective Open Source: webOS OSE (3/3) Do you want to integrate web UI in your experimental product? webOS OSE can help! 37
  • 41. Retrospective From webOS to AGL (1/2) Collaboration LG + Igalia + Linux Foundation. Before 2018: Igalia assisted Chrome browser work with Wayland May 2018: LG Silicon Valley Labs experiment to port WAM to AGL 38
  • 42. Retrospective From webOS to AGL (2/2) The 2018 experiment proved it was possible. Focus on a web-only demo: System UI + web applications Integration of third party applications. Integration with system services. In last 4 years WAM evolved with AGL. 39
  • 43. Retrospective From QtWebKit to webOS WebView (1/2) 2012: WAM was based on QtWebKit 2012-2013: Moved to QtWebKit2 (multiprocess architecture). 2014-2015: Moved to Blink following market trend after Blink forked from WebKit. Based on QtWebEngine. 40
  • 44. Retrospective From QtWebKit to webOS WebView (2/2) 2015-today: Created webOS WebView layer and dropped QtWebEngine. Why? No strong QWE specific use cases. Qt started moving towards commercial and tighter open-source licensing policies 41
  • 45. Retrospective From Qt to Qt-less (1/2) WAM has been based on Qt for a long time. But... GPLv3 licensing of Qt was problematic for some stakeholders (but not LG). C++, STL and Chromium C++ libraries grew better and better. Not much benefit on Qt. 42
  • 46. Retrospective From Qt to Qt-less (2/2) From 2021, WAM does not depend on Qt anymore. Based on STL and other C++ libraries + Glib. QMake -> CMake. 43
  • 47. Retrospective Stability (1/2) But... essentially, main ideas of WAM did not change in last 10 years. 44
  • 48. Retrospective Stability (2/2) It proved useful, and architecture flexible enough to adapt to: Web engine changes. Dependencies changes. New products Even OS changes. 45
  • 50. Future webOS is here to stay! LG is increasing the bet for webOS on SmartTV through . webOS Hub 47
  • 51. Future Some topics... GCC or Clang? How to improve upgrade cycles? 48
  • 53. Final remarks +10 years of project. More to come! Proved useful for many products and millions of users. A great piece to make web a first class citizen of a platform. Thanks! 50
  • 54. 51