Changes between Version 2 and Version 3 of IgaliaFocusandGoals2020


Ignore:
Timestamp:
Nov 1, 2019 10:56:00 AM (12 months ago)
Author:
alex
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • IgaliaFocusandGoals2020

    v2 v3  
     1== Igalia's focus and goals 2020 ==
     2''by zdobersek@igalia.com, clima@igalia.com, rbuis@igalia.com''
     3
    14[https://people.igalia.com/zdobersek/wkcm/presentation/ Slide Deck]
     5
     6== Who we are ==
     7
     8- Worker cooperative with people all over the world
     9- Browsers is the main area of work (graphics, multimedia, etc.)
     10- We advocate for open source, open standards and secure platforms/software
     11- We actively participate in spec definition organizations (e.g. TC39 and W3C)
     12- We use WebKit to primarily enable integration of Web content into a wide range of use cases
     13- We are invested in helping WebKit remain competitive in those and other cases
     14- We support companies in ways that improve WebKit
     15  - Companies that would use WebKit
     16  - Companies that want to progress the Web platform
     17
     18== The GTK port ==
     19- Focuses on the Linux desktop.
     20- The main use cases are GNOME Web (Epiphany) and applications embedding web views.
     21
     22== The WPE port ==
     23- Widely used in embedded (mainly Linux for now).
     24- Designed with performance, small footprint, accelerated content rendering, and simplicity of embedding in mind
     25
     26== The WPE port ==
     27- Primary success in STB deployments
     28- Also used in different embedding use-cases: home appliances, in-vehicle information systems, digital signange
     29- Alternative to Chromium
     30
     31== API Layer ==
     32
     33- Solid PSON support
     34- GTK4 integration for WebKitGTK
     35- QtWPE
     36  - QML wrapper around WPE
     37- API additions as required
     38
     39== Graphics ==
     40
     41- Async scrolling support
     42  - Needs polish, more code-sharing
     43- Graphics pipeline revamp
     44  - Ongoing, loosening dependence on Cairo
     45- WebGL, WebGL2 -- ANGLE-based
     46  - Likely requires new ANGLE platform
     47- WebGPU
     48  - Depends on Vulkan support (result of graphics pipeline work)
     49
     50== Multimedia ==
     51
     52== General ==
     53* GStreamer playbin3 support
     54  * Improved seek support, stability
     55* GstWPE
     56  * Web content piped to GStreamer-managed pipeline
     57* RFC: GStreamer-specific tab in Web Inspector
     58
     59== WebRTC ==
     60* Currently using libwebrtc
     61* Problems with hardware decoding integration
     62* Evaluating gstwebrtc
     63  * A more natural fit for our stack
     64
     65== MSE ==
     66* Platform support
     67  * Big rewrite pending to land
     68
     69== EME ==
     70* Platform support
     71  * Trying to find a good CDM integration solution
     72* SVP support
     73
     74== Networking ==
     75
     76- libsoup and glib-networking maintainance
     77  * GLib-based networking stack
     78- Client certificate authentication and PKCS #11 support
     79- HTTP2 and eventually QUIC+HTTP3
     80
     81== Releases & Dependencies ==
     82
     83- One stable version every six months (in March and September)
     84- We branch for the new stable release around one month before the release
     85- Only bug fixes and improvements are allowed in stable branches, no new API or features
     86
     87- We make several "unstable" releases from trunk during the cycle
     88  - After branching such releases are release candidates
     89- Additional releases from the stable branch after the initial stable release
     90  - Bug fixes, improvements and security issues
     91
     92== Compiler updates ==
     93
     94- Debian and Ubuntu LTS releases support:
     95   - (GCC 7 OR Clang 6) AND libstdc++ 7, Ubuntu 18.04 (until April 2021)
     96   - (GCC 8 OR Clang 7) AND libstdc++ 8, Debian Buster (until late 2022)
     97
     98- https://trac.webkit.org/wiki/WebKitGTK/DependenciesPolicy
     99- https://trac.webkit.org/wiki/WebKitGTK/GCCRequirement
     100
     101Note: At least one compiler from the system has to be able to compile, some distros already use clang to compile WebKitGTK security updates.
     102
     103We support major Debian releases until one year after the release of the next major version. Same for Ubuntu LTS releases. At the moment:
     104
     105- (GCC 7 OR Clang 6) AND libstdc++ 7, the versions in Ubuntu 18.04, will be supported until April 2021 (the next Ubuntu LTS will be released in April 2020).
     106- (GCC 8 OR Clang 7) AND libstdc++ 8, the versions in Debian Buster, will be supported until, roughly, late 2022 (the next Debian will be releases in late 2021).
     107
     108More Information:
     109- https://trac.webkit.org/wiki/WebKitGTK/DependenciesPolicy
     110- https://trac.webkit.org/wiki/WebKitGTK/GCCRequirement
     111
     112== WPE compilers ==
     113- Build systems for Linux-based embedded devices often lag even further behind
     114- People targeting embedded devices are extremely reluctant to update their system compiler in the middle of product development
     115- In many cases future product updates will keep using the same compiler
     116- Expensive but usable work-arounds
     117
     118== QA: testing infrastructure ==
     119
     120- We provide and maintain the GTK/WPE/JSCOnly buildbots and EWS:
     121  - GTK: x86_64 testers. Performance bot
     122  - WPE: x86_64 testers
     123  - JSCOnly: ARM64/ARMv7/MIPS testers
     124
     125- Plans to add more bots to the testing infrastructure:
     126  - Address, thread, undefined behavior sanitizers
     127  - WPE testers in ARMv7/ARM64 architecture
     128  - WPE performance bot
     129  - GTK API tester EWS
     130
     131== Development ==
     132
     133- Third-party dependency management is hard
     134- Current solution: JHBuild
     135- Future solution: Flatpak
     136  - Can be used as a development environment as well as a release channel
     137
     138== Faster-pace release channels ==
     139
     140- Epiphany Tech Preview
     141  - https://wiki.gnome.org/Apps/Web/Development
     142  - Flatpak-based
     143- Simpler WPE consumption
     144  - Also something Flatpak-based
     145  - Pre-built images for popular embedded hardware
     146
     147== JSC 32-bit support ==
     148
     149- LLInt, baseline JIT and DFG for ARMv7 and MIPS
     150- Enable as many tiers as possible
     151- Bug fixes
     152- EWS/buildbot
     153- Memory and performance work
     154
     155== JSC feature implementation ==
     156- Class features implementation
     157  - Static/instance class fields
     158  - Static/instance private methods
     159
     160== Public class feature example ==
     161{{{
     162class C {
     163  field = 1;
     164  static staticField = 2;
     165}
     166
     167let o = new C();
     168o.field; // returns 1
     169
     170C.staticField; // returns 2
     171}}}
     172== Private class feature example ==
     173{{{
     174class C {
     175  #field = 1;
     176  static #staticField = 2;
     177  #method() { return this.#field; }
     178
     179  static #staticMethod() { return this.#staticField; }
     180
     181  access() {
     182    this.#method(); // returns 1
     183    C.#staticMethod(); // returns 2
     184  }
     185}
     186}}}
     187== JSC feature implementation ==
     188- BigInt (not feature complete)
     189  - Missing TypedArray support
     190  - Support '++' and '--' operators (including JIT)
     191
     192== Test262 contributions ==
     193- Private methods and class fields
     194- BigInt
     195
     196== Web Standards ==
     197
     198- Will not go into much detail for every 2020 Web Standard task.
     199- Feel free to ask about details.
     200- Listed responsible persons in the slides.
     201- The plans are not final yet.
     202
     203== MathML ==
     204
     205<div class="rightimg"><img width="300" src="images/mathml-core.png" alt="MathML Core"/></div>
     206
     207- [Specification](https://mathml-refresh.github.io/mathml-core/)
     208  - Core subset
     209  - TeX/OpenType
     210  - Web Platform
     211- WebKit
     212  - [DOM/IDL](https://bugs.webkit.org/show_bug.cgi?id=200470)
     213  - Layout
     214  - Cleanup
     215
     216== Scrolling ==
     217
     218- [scroll-behavior](https://drafts.csswg.org/cssom-view/#propdef-scroll-behavior) (cchen, fwang)
     219- overscroll-behavior (cchen, fwang)
     220- scrollend/overscroll events: https://github.com/WICG/overscroll-scrollend-events (cchen, fwang)
     221- ScrollIntoView: https://bugs.webkit.org/show_bug.cgi?id=161611 (cchen, fwang)
     222- Scroll-To-Text: https://github.com/WICG/ScrollToTextFragment?
     223
     224== CSS ==
     225- Containment? (rego)
     226- CSS Grid maintenance (oriol)
     227- Text Wrapping (from Text Module: https://drafts.csswg.org/css-text-3/) (jfernandez)
     228- Intrinsic Size: https://github.com/WICG/intrinsicsize-attribute/issues/16 (cchen, fwang)
     229
     230== Loading/Network ==
     231- Lazy image + iframe loading (rbuis)
     232- Load prefetch/preload/prenavigate (rbuis)
     233- Priority Hints (rbuis)
     234- Stale-while-revalidate Cache-control directive (rbuis)
     235- Web Package (rbuis)
     236  - Signed HTTP Exchanges
     237  - Bundled HTTP Exchanges
     238
     239== Other standards ==
     240- OffscreenCanvas (clord)
     241- SVG (nzimmermann/WildFox)
     242- Resize Observer: https://drafts.csswg.org/resize-observer/#resize-observer-interface (cchen)
     243- Channel messaging: https://html.spec.whatwg.org/multipage/web-messaging.html#channel-messaging? (fwang)
     244
     245== Web Platform Tests ==
     246
     247 - Primary tool for
     248   - Conformance
     249   - Interoperability
     250 -  Browsers daily tested at wpt.fyi: https://wpt.fyi
     251   - Safari Tech Preview: https://wpt.fyi/results/?label=master&label=experimental&product=safari
     252   - WebKitGTK: https://wpt.fyi/results/?label=master&product=webkitgtk
     253 - Infrastructure
     254    - Synchronization
     255    - Testing APIs
     256
     257== Making WebKit more interoperable ==
     258
     259  - Identify test failures.
     260    - Bug triaging and gardening
     261    - Make them pass!
     262
     263  - Implement missing features.
     264    - Already imported tests
     265    - Client requests
     266
     267== Making WebKit more interoperable ==
     268
     269  - Synchronize WPT tests.
     270    - Import existing tests
     271    - Export new or modified tests
     272
     273  - Work with the community
     274    - Standardization groups
     275    - Web developers / users
     276
     277== Questions ==
     278
     279- Are you reviving the Mathml spec also? Yes, fwang is working in modifying it at the same time he works in the new core spec.
     280
     281- Sam turned Resize Observer on by default yesterday.
     282
     283- https://wpt.fyi/ how do we get the webkitgtk results? it is still not public, there is a URL but it is going to be there when stable.
     284
     285- text-wrapping where is it? the link is in https://drafts.csswg.org/css-text-3/
     286
     287- what 32bits cpus are you using? Arm 32bits usually such as the raspberry pi.
     288
     289- What is the main hardware in your products from 32bits CPU? There are multiple clients that provide this kind of Arm and MIPS CPUs in products.
     290
     291- What those clientes do with the engine? Runtime for rendering and general browser, for instance STB
     292
     293- Security is a big concern in 32bits, that is why general browsing is not safe? Yes, we work trying to improve the security, we use sandboxing usually to try to keep this security problems contained. Also in general clients enable web applications stores for secure webpages that can be loaded
     294
     295- Measure the performance improvements with JIT? We use some public available workloads, but also use internal benchmarks based on client applications.
     296
     297- Could you abstract a benchmark with those tests? Yes, we could try to abstract that. Currently we have some sample program using our client's framework and we measure the FPS, and on their hardware, we only get usable results with DFG enabled.