Review of Igalia's Web Platform activities (H1 2018)
This is the semiyearly report to let people know a bit more about Igalia’s activities around the Web Platform, focusing on the activity of the first semester of year 2018.
Projects
Javascript
Igalia has proposed and developed the specification for BigInt, enabling math on arbitrary-sized integers in JavaScript. Igalia has been developing implementations in SpiderMonkey and JSC, where core patches have landed. Chrome and Node.js shipped implementations of BigInt, and the proposal is at Stage 3 in TC39.
Igalia is also continuing to develop several features for JavaScript classes, including class fields. We developed a prototype implementation of class fields in JSC. We have maintained Stage 3 in TC39 for our specification of class features, including static variants.
We also participated to WebAssembly (now at First Public Working Draft) and internationalization features for new features such as Intl.RelativeTimeFormat (currently at Stage 3).
Finally, we have written more tests for JS language features, performed maintenance and optimization and participated to other spec discussions at TC39. Among performance optimizations, we have contributed a significant optimization to Promise performance to V8.
Accessibility
Igalia has continued the standardization effort at the W3C. We are pleased to announce that the following milestones have been reached:
- WAI-ARIA Graphics Module and Graphics Accessibility API Mappings moved to proposed recommendation.
- Accessible Name and Description Computation moved to Candidate Recommendation.
A new charter for the ARIA WG as well as drafts for ARIA 1.2 and Core Accessibility API Mappings 1.2 are in preparation and are expected to be published this summer.
On the development side, we implemented new ARIA features and fixed several bugs in WebKit and Gecko. We have refined platform-specific tools that are needed to automate accessibility Web Platform Tests (examine the accessibility tree, obtain information about accessible objects, listen for accessibility events, etc) and hope we will be able to integrate them in Web Platform Tests. Finally we continued maintenance of the Orca screen reader, in particular fixing some accessibility-event-flood issues in Caja and Nautilus that had significant impact on Orca users.
Web Platform Predictability
Thanks to support from Bloomberg, we were able to improve interoperability for various Editing/Selection use cases. For example when using backspace to delete text content just after a table (W3C issue) or deleting a list item inside a content cell.
We were also pleased to continue our collaboration with the AMP project. They provide us a list of bugs and enhancement requests (mostly for the WebKit iOS port) with concrete use cases and repro cases. We check the status and plans in WebKit, do debugging/analysis and of course actually submit patches to address the issues. That’s not always easy (e.g. when it is touching proprietary code or requires to find some specific reviewers) but at least we make discussions move forward. The topics are very diverse, it can be about MessageChannel API, CSSOM View, CSS transitions, CSS animations, iOS frame scrolling custom elements or navigating special links and many others.
In general, our projects are always a good opportunity to write new Web Platform Tests import them in WebKit/Chromium/Mozilla or improve the testing infrastructure. We have been able to work on tests for several specifications we work on.
CSS
Thanks to support from Bloomberg we’ve been pursuing our activities around CSS:
- CSS Grid Layout: we removed “grid-“ prefix from gutter properties and added support percentage to column-gap property in Multicolumn. We worked on baseline alignment. Finally we are now improving the memory structures of the implementation in order to make bigger grids possible.
- Composition underline is no longer always black in Chromium, it uses now the current text color for by default
- CSS Containment: We updated Chromium implementation to align with the spec and fixed several bugs.
- CSS Text 3: We started to implement the new CSS value ‘break-spaces’
We also got more involved in the CSS Working Group, in particular participating to the face-to-face meeting in Berlin and will attend TPAC’s meeting in October.
WebKit
We have also continued improving the web platform implementation of some Linux ports of WebKit (namely GTK and WPE). A lot of this work was possible thanks to the financial support of Metrological.
- We improved Web Driver support and made it work with WPE too.
- Web Animations are now enabled.
- Service Workers are now enabled behind an experimental features flag.
- We implemented most of the missing functionality of ImageBitmap.
- OffscreenCanvas is now mostly implemented, but pending review.
- Web Platform Tests integration: We landed a patch to make possible to run tests against the official Web Platform Tests repository.
- WebRTC: We made the raspberry pi work with Firefox and Chrome properly and started pushing upstream all the branch. We have already upstreamed all the changes required in the current WebKit classes, the libwebrtc compilation and the getUserMedia support. We have two main pending patches: PeerConnection support and EnumerateDevices support.
- Media Source Extensions: We refined our implementation and fixed several bugs ; dealing with the corresponding issues on the gstreamer side.
- WebVR: Most of the API (85%) is now implemented using OpenVR and we can already get the tracking information.
Other activities
Preparation of Web Engines Hackfest 2018
Igalia has been organizing and hosting the Web Engines Hackfest since 2009, a three days event where Web Platform developers can meet, discuss and work together. We are still working on the list of invited, sponsors and talks but you can already save the date: It will happen from 1st to 3rd of October in A Coruña!
New Igalians
This semester, new developers have joined Igalia to pursue the Web platform effort:
-
Rob Buis, a Dutch developer currently living in Germany. He is a well-known member of the Chromium community and is currently helping on the web platform implementation in WebKit.
-
Qiuyi Zhang (Joyee), based in China is a prominent member of the Node.js community who is now also assisting our compilers team on V8 developments.
-
Dominik Infuer, an Austrian specialist in compilers and programming language implementation who is currently helping on our JSC effort.
Coding Experience Programs
Two students have started a coding experience program some weeks ago:
-
Oriol Brufau, a recent graduate in math from Spain who has been an active collaborator of the CSS Working Group and a contributor to the Mozilla project. He is working on the CSS Logical Properties and Values specification, implementing it in Chromium implementation.
-
Darshan Kadu, a computer science student from India, who contributed to GIMP and Blender. He is working on Web Platform Tests with focus on WebKit’s infrastructure and the GTK & WPE ports in particular.
Additionally, Caio Lima is continuing his coding experience in Igalia and is among other things working on implementing BigInt in JSC.
Conclusion
Thank you for reading this blog post and we look forward to more work on the web platform this semester!