This presentation provides a comprehensive update on WebKitGTK and WPE WebKit, Igalia's open-source ports of the WebKit rendering engine for Linux devices.
Introduction: Mario Sanchez-Prada, a software engineer at Igalia, highlights Igalia's role as a major contributor to open-source web rendering engines, especially WebKit.
WebKit Overview: WebKit is an open-source web rendering engine, forked from KHTML/KJS in 2001 and later by Google (Blink) in 2013. Its main goals include performance, portability, stability, and embeddability across various platforms, including desktop, mobile, and embedded devices, using a multi-process architecture.
Linux Ports: WebKitGTK is a port for Linux-based GTK applications, offering a fully-featured web platform with hardware-accelerated graphics. WPE WebKit, designed for Linux-based embedded devices, prioritizes flexibility, security, and performance with a minimal resource footprint, achieved through a backend-based architecture.
Importance & History: Web rendering engines are crucial for embedded devices due to their strategic role in the software stack and the versatility of the Web Platform. Both WebKitGTK (born 2007) and WPE WebKit (born 2014 from WebKitGTK's embedded-focused evolution) have seen significant refactorings, especially in graphics.
Latest Updates (2022-2025): Recent achievements include stable releases, multimedia improvements (WebM, WebAudio, WebRTC), a major overhaul of the graphics rendering pipeline (migration to Skia, WebGL2/ANGLE, DMA-BUF support, GPU process), JavaScriptCore advancements, enhanced security, improved QA infrastructure, new WPEPlatform API, and increased Android and WebXR support.
Next Steps: Future efforts will focus on further multimedia enhancements, graphics architecture alignment, completing the WPEPlatform API, full Android support migration, and deeper WebXR integration, ensuring WebKit on Linux continues to thrive.
Massive pool of web developers can implement applications.
Useful to implement all kinds of products (Smart home, In-Vehicle/Flight infotainment, digital signage, Hi-Fi sound systems, audio streaming, server-side rendering, QA and testing).
GNOME's Epiphany browser previously used Gecko, but its API was not suitable for embedding in different applications without breaking changes.
Arnt Locker from the GNOME community started WebKitGTK as a replacement for Gecko in Epiphany.
2009: WebKitGTK replaces libcurl with libsoup, and Gecko in Epiphany. [13:21]
2010: The WebKit2 project is announced, and WebKitGTK starts work on WebKit2. [13:40]
WebKitGTK initially had a single process, meaning a crash in web content would crash the entire browser. WebKit2 aimed to introduce a multi-process architecture for better stability.
2013: First stable version of WebKitGTK with WebKit2 in GNOME 3.8. [14:20]
2014: Support for WebKit1 is removed. WPE is born as "WebKit For Wayland". [14:31]
The idea was to remove GTK from WebKitGTK to make it more friendly for embedded devices.
The environment where this idea originated was using Wayland, so it was conceived to use Wayland directly for rendering.
2017: "WebKit For Wayland" is renamed to WPE WebKit and becomes an official part of WebKit, moving upstream. [15:42]
WPE gained massive adoption in the embedded space (millions of devices).
2022: Start of major refactorings on the architecture of the ports. WPE Android efforts restarted. [16:04]
Addressing issues with 2D rendering (Cairo was not hardware-accelerated and poorly maintained).
Exploring moving to Skia for 2D rendering.
Restarting efforts to run WPE on Android devices.
2023: WebGL2 support with ANGLE, initial dma-buf support, initial GPUProcess support. [17:05]
Significant progress in graphics and buffer sharing.
2024: Migration from Cairo to Skia. Initial implementation of the new WPEPlatform API. Progress on the new HW-accelerated SVG engine (Lottie). [17:28]
Major decision to move to Skia for hardware acceleration and better performance.
Developing a new, less complex WPEPlatform API.
2025: Massive refactorings in the graphics architecture of the 2 Linux ports. Maturity of the new WPEPlatform API. WPE Android moves to the new API. [18:27]
This period represents a "really good momentum" for WebKit on Linux.
WebKit remains a complete and embeddable Web engine on Linux, with WebKitGTK for GTK-based applications and WPE WebKit for embedded devices.
Both ports are mature, actively-maintained Linux ports, having seen a big push in the past 4 years with greatly improved performance and quality, especially around graphics.
Next steps are focused on performance, stability, and maintainability, with new possibilities opening with Android and WebXR support.
It's a pretty exciting moment for WebKit on Linux!