Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Igalia and WebKit: Status update and plans (2024)

Mario Sánchez Prada
October 22, 2024
25

Igalia and WebKit: Status update and plans (2024)

(c) WebKit Contributors Meeting 2024
October 2024, 22 to 23
Cupertino - California (USA)
https://webkit.org/meeting

Mario Sánchez Prada

October 22, 2024
Tweet

More Decks by Mario Sánchez Prada

Transcript

  1. 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
  2. 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
  3. Igalia and WebKit Igalia and WebKit: status update and plans

    Igalia, WebKit Contributors Meeting 2024 5 / 38
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. Recent work Igalia and WebKit: status update and plans Igalia,

    WebKit Contributors Meeting 2024 11 / 38
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. Next Steps Igalia and WebKit: status update and plans Igalia,

    WebKit Contributors Meeting 2024 27 / 38
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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