Igalia 2021 Goals

November 2020

Igalia

Who we are

Igalia

  • Worker-owned cooperative with people all over the world
  • Browsers are the main area of work (graphics, multimedia, etc.)
  • We advocate for healthy open source, open standards and secure platforms/software
  • We actively participate in spec definition organizations (e.g. TC39 and W3C)

The GTK port

  • Focuses on the Linux desktop
    • GNOME Web (a.k.a. Epiphany)
    • Embedded web views in applications

The WPE port

  • Widely used in embedded—Linux for now
  • 3/4 of our WebKit-related income comes from embedded industries
  • Designed with performance, small footprint, accelerated content rendering, and simplicity of embedding in mind

Igalia + WebKit

  • We expand WebKit’s relevance and diversity of investment
  • We help promote a healthy commons with value all around
    • Our customers
    • WebKit
    • The larger ecosystem

Consider…

How many browsers does the world need?

Early web

Early Web Limits

Mobile Web Limits

Embedded Limits

Browsers, browsers everywhere

  • TV
  • Game Consoles
  • Car, airplane, train infotainment
  • Digital Signage
  • Point of Sale
  • Speakers
  • Smart Appliances
  • more

A growing segment using WPE

  • Many investing upstream
  • We invest upstream
  • We can talk about this
  • Everyone wins

2020 Review

WebKit contributions 2019

Last year we were the #2 committer with 11% of all commits! Wow!

WebKit contributions 2020

So far in 2020 we are the #2 committer with 15.5% of all commits!!!

How did we do in 2020? (1/2)

Pretty great! Moved most things forward!

  • Improving MathML
  • Lazy Loading (mostly)
  • Stale-while-revalidate
  • Offscreen Canvas (lots)
  • ScrollIntoViewOptions
  • ResizeObserver
  • Text Wrapping

How did we do in 2020? (2/2)

  • SVG/CSS alignment
  • QtWPE
  • PSON support
  • GTK4 support
  • ITP support
  • Gamepad support (GTK)
  • PointerLock support (GTK)
  • WebDriver big improvements

Some other good things

  • Closer Coordination ❤️
  • Someone else talking about WebKit
  • Changing the conversation
    • Open Prioritization
    • Igalia chats (invites!)
  • Lots to make WPE easier to use

Obtaining WPE: binaries

Obtaining WPE: Build Recipes

Epiphany Tech Preview

wiki.gnome.org/Apps/Web/Development


Flatpak 📦 bundle

GNOME Web 🌐 from Git
+
Latest WebKitGTK 🧭 release

Source Releases

GTK WPE
Stable 9 9
Development 10 7
19 16

Total: 📦 35 releases, 🛡 7 WSAs

  • Development: releases are trunk snapshots
  • Stable: releases in March and September
    Only improvements, bug, and security fixes

Supported Systems

The oldest, as per the dependecies policy:

Distribution GCC Clang libstdc++ Until
Ubuntu 18.04 7 6 7 April 2021
Debian Buster 8 7 8 Late 2022

Web Platform 2020 Highlights

Layout 1/2

Layout 2/2

Scrolling

Loading

WebXR

  • Device API
    • Session management WebXR supported
    • Retrieving pose 🚧
  • Testing
    • WPT score 29/81
    • XRTest API
  • Platform integration with OpenXR
    • WPE
    • other ports?

📺 MSE platform refactoring

  • Lots of clean ups and bug fixing
  • New features such as AV1 support, rate setting and subtitles

📺🔒 EME upstreaming

  • Upstreamed and reenabled full support of ClearKey
  • Added support for other key systems by using third party software

🎥🎙 WebRTC

  • Keeping up with libwebrtc updates
  • Maintenance

JavaScriptCore (1/2)

  • Landed:
    • instance public fields (enabled by default)
    • instance private fields
  • Work on optimizing private fields to enable them by default

JavaScriptCore (2/2)

  • Doubled EWS test throughput with more ARMv7/MIPS boards
  • Support for for-of intrinsic in ARMv7/MIPS
  • Implemented static fields (pending review)

🎹 Misc

📝 Web Platform Tests

  • Imported/updated more tests into WebKit
  • Added WebKitGTK runs to wpt.fyi
    • Daily: nightly build from trunk
    • Weekly: stable and development releases
  • Implementation and bugfixing to make WebKit more interoperable.

⛑️ QA (1/2)

  • Improved the status of GTK & WPE LayoutTests bots
    • GLib: Common baseline for GTK & WPE
    • More than 500 commits of gardening
    • Bugzilla housekeeping, closed many obsolete bugs
  • Deployed 25+ more bots and new builders

⛑️ QA (2/2)

  • Dogfed the new Flatpak SDK and deployed it early in bots
  • Added WebDriver support in WPE
  • Improvements in WebDriver tests
  • General bug-fixing and improvement of tooling and infrastructure code base
  • Beta instance of Mozsearch for WebKit

⛑️ QA Layout tests - GTK Unexpected

⛑️ QA Layout tests - WPE Unexpected

⛑️ QA Layout tests - GTK Expected

⛑️ QA Layout tests - WPE Expected

Mozsearch for WebKit

QA current EWS bots

  • GTK Build
  • WPE Build
  • API-GTK Tests
  • JSC ARMv7/MIPS Build
  • JSC ARMv7/MIPS Tests

QA current post-commit bots

  • GTK Release/Debug Build
  • WPE Release/Debug Build
  • GTK Release Debian Stable Build
  • GTK Release Ubuntu LTS Stable Build
  • GTK Release Packaging Nightly Ubuntu 18.04 & 20.04
  • WPE Release Packaging Nightly Ubuntu 18.04 & 20.04

QA current post-commit testing bots

  • GTK Release/Debug JavaScript Tests
    (JSCore-tests + test262)
  • GTK Release/Debug Tests
    (LayoutTests + API)
  • GTK Release/Debug WebDriver Tests
  • WPE Release/Debug JavaScript Tests
    (JSCore-tests + test262)
  • WPE Release/Debug Tests
    (LayoutTests + API + WebDriver)

QA current post-commit JSC bots (build & test)

  • JSC ARM64
  • JSC ARMv7
  • JSC MIPS

2021 Plans

GTK + WPE 🔮

  • Graphics pipeline revamp
  • ANGLE backed WebGL & WebGL2
  • Interactive form validation
  • More <input> types (color, date, etc.)
  • GPUprocess
  • Scrolling animation improvements
  • OpenGL ES 3 support
  • Vulkan and WebGPU (it would be great!)

GTK 🔮

  • GTK4 support:
    • GTK3 and GTK4 parallel installable
    • API break → chance for improvements
    • First release with official support
    • Build bots

WPE 🔮

  • Device Motion & Orientation events
  • Modern pasteboard support

Multimedia 🔮

Networking 🔮

  • We are the current maintainers of the libsoup library
  • libsoup3
    • New API
    • HTTP/2 support
  • PKCS#11 (TLS client certs, smartcards…)

Web Platform Specs

  • Offscreen Canvas (text support)
  • Unify the SVG and HTML rendering
    (perf improvements, landing the branch)
  • Web Speech API (planned)
  • Scrolling
  • MathML
  • WebXR
  • :focus-visible
  • aspect-ratio

JavaScriptCore

  • Land remaining patches to make class fields feature complete
  • Rework of the private methods implementation
  • Optimization and fine-tuning until it can be all enabled by default (instance public fields already are)

WebAssembly 1/3

  • Uncontroversial maintenance
    • Work on needed updates to reference types implementation for spec evolution (e.g. ref.null extern and similar)
  • Proposals that are pretty much done, but which might change
    • JavaScript type reflection API

WebAssembly 2/3

  • Proposals that are generally agreed to be a good idea, but which need implementation feedback
    • Type imports
    • Typed function references
  • Proposals that sound like a good idea but about which there are significant ongoing discussions
    • GC “MVP” with record and array types

WebAssembly 3/3

For all our work we plan to contribute to the shared validation tests as appropriate

JSC 32-bits 1/2

  • Fuzzing
    • Develop necessary infrastructure
  • Polymorphic Inline Caching (PIC) for LLInt
  • Fine-tune default compilation thresholds
  • Continue regular investigation of tests failures and skipped tests

JSC 32-bits 2/2

  • Continue to improve available hardware resources and tooling for testing
  • Focus on adding performance bots
    • Provide a better overview of how performance changes over time

📝 Web Platform Tests

  • Help to keep the WPT imported tests updated
  • Improve the tooling for importing WPT tests
  • Explore solutions to try to automate the import of WPT tests
  • Improve WebKit cross-browser compatibility
  • Add WPE to the wpt.fyi dashboard

Testing & Infra 👷

  • Manage build bots using Ansible
  • GTK builders using Wayland by default
  • Fuzzing

QA Upcoming EWS bots

  • GTK Non-unified Build
  • GTK LayoutTests
  • WPE WebDriver

QA Upcoming post-commit bots

  • GTK4 Release Build & Test
    (LayoutTests + API + WebDriver)
  • GTK Release/Debug Security Build
    (ASAN + TSAN + LayoutTests)
  • WPE Release/Debug Security Build
    (ASAN + TSAN + LayoutTests)
  • WPE Release Build & Test AArch64 (64-bits)
  • WPE Release Build & Test ARMv7 (32-bits)

Summary

  • All these proposals for the work in the future in WebKit:
    • WebKit as the Web Plarform for embedded devices
    • Push for the Web Plaform as a solution for the commons
    • Advocate for healthy open source, open standards and secure platforms/software

Thank you!
Questions?