Slide 1

Slide 1 text

Igalia and WebKit: Status update and plans WebKit Contributors Meeting 2024 22-23 October 2024 Mario Sánchez Prada [email protected] 1 / 38

Slide 2

Slide 2 text

About me CS Engineer, partner of Igalia Involvement in some Open Source communities e.g. GNOME, WebKit (WebKitGTK, a11y), Chromium 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 Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 2 / 38

Slide 3

Slide 3 text

Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 3 / 38

Slide 4

Slide 4 text

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 Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 4 / 38

Slide 5

Slide 5 text

Igalia and WebKit Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 5 / 38

Slide 6

Slide 6 text

Igalia and WebKit Maintainers of the two upstream Linux-based WebKit ports WebKitGTK: aimed at desktop (i.e. go-to solution for GTK applications) WPE: aimed at embedded (i.e. low resources footprint, extra flexibility...) Implementation of Web standards and JavaScript features Port-independent contributions to WebCore and JavaScriptCore Other: e.g. bugfixing, security, performance improvements, QA, 32-bit support... Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 6 / 38

Slide 7

Slide 7 text

Who are our users? Port users (e.g. native apps developers, integrators...) Platform providers (e.g. Web-based frameworks) Web developers (e.g. Web applications) End users of WebKit-based products (e.g. embedded) Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 7 / 38

Slide 8

Slide 8 text

Examples of WebKit on embedded Smart TVs, set-top-boxes and video game consoles Smart home appliances and home automation devices HiFi audio/sound systems & music streaming In-vehicle and in-flight infotainment systems Navigational and GPS-based instrumentation Medical devices (e.g. patient health monitors) Digital signage QA & testing Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 8 / 38

Slide 9

Slide 9 text

Strategic goals How our users use the web engine in all those different ways explains how we set our goals 🎯 and define our plans 🗒️ Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 9 / 38

Slide 10

Slide 10 text

Strategic goals Web platform compatibility, interoperability Performance and efficiency in small embedded devices Quality assurance and Security Better development tools and documentation More efficient collaboration: e.g. ports alignment (fewer different architectures, less port-specific code), better communication increased collaboration among different teams... Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 10 / 38

Slide 11

Slide 11 text

Recent work Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 11 / 38

Slide 12

Slide 12 text

WebKit contributions 2024 Data range: October 1st 2023 to October 1st 2024 Still the #2 committer in 2024 so far with 12.98% of all commits (increase of +2.08% over the same period the past year) Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 12 / 38

Slide 13

Slide 13 text

WebKit contributions 2024 (excluding Apple) Data range: October 1st 2023 to October 1st 2024 Zooming in: ~64% of all the non-Apple commits coming from Igalia (increase of +11.47% over the same period the past year) Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 13 / 38

Slide 14

Slide 14 text

Main highlights Main areas of work in the past 12 months: Web platform contributions Graphics Multimedia JavaScriptCore New WPE API WebKit on Android Quality assurance Security Tooling Documentation Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 14 / 38

Slide 15

Slide 15 text

Web Platform Contributions (I) content-visibility:auto Skip painting and rendering of off-screen sections Completed and enabled by default Navigation API Manage browser navigation actions + examine history WIP, aiming for end of the year hasUAVisualTransition Attribute of the NavigateEvent interface Completed and enabled by default Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 15 / 38

Slide 16

Slide 16 text

Web Platform Contributions (II) Secure Curves in the Web Cryptography API Interop issues + increase WPT coverage Preparation to ship X25519 feature Trusted Types Reduce DOM-based XSS attacks Implementation ready, pending to enable by default MathML Support for padding/border/margin Increase WPT score by ~5% Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 16 / 38

Slide 17

Slide 17 text

Graphics (I) Cairo to Skia migration for the Linux ports Feature parity with Cairo, worked on new features and improvements Skia now the default backend since WebKitGTK/WPE 2.46.0 Buffer-sharing APIs (DMABuf) Refactored fencing to control access to buffers Continued working on integrating with the DisplayLink infrastructure More efficient composition using damaging information Enablement of the GPUProcess WebGL support built by default Actively working on this, focus on performance General overhaul of the graphics pipeline i.e. refactoring and simplification, buffer uploading, remove Nicosia layer (not planning to have multiple rendering implementations)... Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 17 / 38

Slide 18

Slide 18 text

Graphics (II) New SVG engine (LBSE: Layer-Based SVG Engine) SVG layers support as a 1st-class citizen Added support for the missing features: Gradients & Patterns (applicable to both fill and stroke) Clipping & Masking (for all shapes and text) SVG Markers Reviewed implementation for SVG filters (by Said@Apple) Improved performance of the new layer-based engine Reduce repaints and re-layouts Reduced performance gap for MotionMark Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 18 / 38

Slide 19

Slide 19 text

Multimedia DMABuf-based sink for HW-accelerated video Merged in the GL-based GStreamer sink WebCodecs backend Completed for audio/video encoding and decoding Enabled by default in 2.46 Continued work on the GStreamer-based WebRTC backends Optional text-to-speech backend based on libspiel General maintenance (e.g. MSE, EME, runtime-based quirks...) Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 19 / 38

Slide 20

Slide 20 text

JavaScriptCore ARMv7/32-bit support: OMG support (80% done) Ported WASM BBQJIT Ported & enabled concurrent JIT support Contributed to JITLess WASM Some work on IPInt for WASM WASM GC Contributed most of the implementation Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 20 / 38

Slide 21

Slide 21 text

New WPE API Initial implementation ready, development ongoing Support for external platforms (beyond wayland, DRM, headless) API additions Screens management API Toplevel management API Maximized and minimized windows API Preferred DMA-BUF formats API Input methods API Gestures API Buffer damaging Explicit synchronization (i.e. fences) Pointer lock API Test Automation support (WebDriver) 👷‍♀️ Still work in progress 👷‍♀️ Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 21 / 38

Slide 22

Slide 22 text

WebKit on Android (I) Goal: WebKit-based alternative to Android WebView No new port needed, just the WPE's public API Multiple architectures: arm64, x86-64, armv7, x86 Native integration with Android, HW acceleration Public updates at Jani's blog: Still a experimental project (WIP) Development partially supported by the NLNet foundation https://blogs.igalia.com/jani Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 22 / 38

Slide 23

Slide 23 text

WebKit on Android (II) WPE 2.46 and NDK 27 LTS Releases at WebDriver support & WPT test suites Instrumentation tests (integrated in CI) Remote Web Inspector support Skia backend enablement Prompt delegates and WPEView client interfaces WPE-based WebView library in Maven Central Other changes: e.g. HTTP/2, device scale factor, integration with Android main loop, general bugfixing (e.g. on-screen keyboard, multimedia, GLES3)... https://github.com/Igalia/wpe-android/releases Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 23 / 38

Slide 24

Slide 24 text

Quality Assurance Fixed API tests failures Fixed assertions-related crashes Enabled assertions in release bots Move bots to build with Skia by default Move bots to build using GTK4 by default Work to use the new SDK in the bots (WIP) General gardening and bot maintenance Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 24 / 38

Slide 25

Slide 25 text

Security Same release cadence: Major, minor and unstable releases Aligned releases for WebKitGTK and WPE & WebKit Security Advisories (WSA): & 12 WebKit Security Advisories (WSA): 7 in 2023, 5 in 2024 Faster security fixes in stable releases Dropped libsoup2 (unmaintained) from WPE https://webkitgtk.org/releases https://wpewebkit.org/release https://webkitgtk.org/security.html https://wpewebkit.org/security Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 25 / 38

Slide 26

Slide 26 text

Tooling and documentation Released the new SDK (containers-based) Announcement on Patrick's blog: (May 2024) Ubuntu 24.04 LTS with GCC 14 & Clang 18 Regularly maintained Contributions to docs.webkit.org, mostly related to WebKitGTK i.e. , , http://blog.tingping.se Releases and Versioning Security Updates Multimedia Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 26 / 38

Slide 27

Slide 27 text

Next Steps Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 27 / 38

Slide 28

Slide 28 text

Web Platform contributions Navigation API & Trusted Types Finish and ship it MathML Continue work on core features Improve interaction with CSS Cross-root ARIA Implement Reference Target proposal Canvas Formatted Text Explore and prototype Canvas Place Element proposal Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 28 / 38

Slide 29

Slide 29 text

Graphics WebKitGTK and WPE graphics rendering architecture DisplayLink and composition synchronization in the graphics pipeline Enable DMABuf-less platforms for buffer sharing architecture New GPU-based rendering backend architecture (on top of Skia) Activate GPUProcess for more rendering targets (e.g. multimedia) New SVG engine (LBSE: Layer-Based SVG Engine) Fix remaining bugs to achieve feature parity (see ) Performance improvements (e.g. MotionMark) Trigger the security audit (and pass it) metabug in bugzilla Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 29 / 38

Slide 30

Slide 30 text

Multimedia GStreamer WebRTC backend WebCodecs integration with WebGL and WebAudio General maintenance (e.g. MSE, EME...) Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 30 / 38

Slide 31

Slide 31 text

JavaScriptCore Enable OMG for WASM Some failing still tests remain Investigate replacing register pairs for JSValues with SMIs Brings us more in line with 64-bit Reduces chances of breakage and improves maintainability Investigate and optimize heap/JIT memory usage in 32-bit Finish work on ARMv7 improvements (e.g. IPInt) Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 31 / 38

Slide 32

Slide 32 text

New WPE API Complete the new WPE API Settings API Accessibility support Write API tests. Write documentation External GTK4 platform ⚠️ No specific release date (i.e. best-effort) ⚠️ Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 32 / 38

Slide 33

Slide 33 text

WebKit on Android Stabilization and general bugfixing Maintenance on top of newer WPE versions Production-ready quality for specific use cases Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 33 / 38

Slide 34

Slide 34 text

Quality Assurance Improvements to QA infrastructure More scalable way of maintaining the bots Improved stability and uptime Finish migration to the new SDK Matching environment both for development and testing Bring back ready-to-use WPE images Important for adoption and gathering feedback Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 34 / 38

Slide 35

Slide 35 text

Tooling and documentation Keep improving the SDK to cover more use cases e.g. seamless integration with the bots Keep improving documentation Write tutorials Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 35 / 38

Slide 36

Slide 36 text

Questions? Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 36 / 38

Slide 37

Slide 37 text

Thanks! Igalia and WebKit: status update and plans Igalia, WebKit Contributors Meeting 2024 37 / 38

Slide 38

Slide 38 text

38 / 38