In 2016, I was among the new software engineers who joined Igalia. Three years later I applied to become co-owner of the company and the legal paperwork was completed in April. As my colleague Andy explained on his blog, this does not change a lot of things in practice because most of the decisions are taken within the assembly. However, I’m still very happy and proud of having achieved this step 😄
One of my new duty has been to be the “mentor” of Miyoung Shin since February and to help with her integration at Igalia. Shin has been instrumental in Igalia’s project to improve Chromium’s Code Health with an impressive number of ~500 commits. You can watch the video of her BlinkOn lightning talk on YouTube. In addition to her excellent technical contribution she has also invested her energy in company’s life, helping with the organization of social activities during our summits, something which has really been appreciated by her colleagues. I’m really glad that she has recently entered the assembly and will be able to
take a more active role in the company’s decisions!
Working with new colleagues
Igalia also hired
Cathie Chen last December and I’ve gotten the chance to work with her as part of our Web Platform collaboration with AMP. Cathie has been very productive and we have been able to push forward several features, mostly related to scrolling. Additionally, she implemented ResizeObserver in WebKit, which is a quite exciting new feature for web developers!
The other project I’ve been contributed to this year is
MathML. We are introducing new
math and font concepts into Chromium’s new layout engine, so the project is
both technically challenging and fascinating. For this project,
I was able to rely on
Rob’s excellent development skills
to complete this year’s implementation roadmap on our Chromium branch
and start upstreaming patches.
In addition, a lot of extra non-implementation effort has been done which led to consensus
between browser implementers, MathML enthusiasts and other web developer groups.
became a developer advocate for Igalia in March
and has been very helpful talking to different people, explaining our project
and introducing ideas from the Extensible Web, HTML or CSS Communities. I strongly
recent Igalia chat
and lightning talk for a good
explanation of what we have been doing this year.
These are the developer conferences I attended this year and gave talks
about our MathML project:
As usual it was nice to meet the web platform and chromium communities during
these events and to hear about the great projects happening. I’m also super
excited that the assembly decided to
try something new for my favorite event.
Indeed, next year we will organize the Web Engines Hackfest in May to avoid
conflicts with other browser events but more importantly, we will move to
a bigger venue so that we can welcome more people. I’m really looking forward
to seeing how things go!
Paris - A Coruña by train
Environmental protection is an important topic discussed in our cooperative.
This year, I’ve tried to reduce my carbon footprint when traveling to
Igalia’s headquarters by using train instead of plane. Obviously the latter
is faster but the former is much more confortable and has less security
It is possible to use high-speed train from Paris to Barcelona and then a
Trenhotel to avoid a hotel night. For a quantitative comparison,
let’s consider this table, based on my personal travel experience:
Paris - Barcelona
Barcelona - A Coruña
Paris - A Coruña (via Madrid)
The price depends on how early the tickets are booked but it is more or less the
same for train and plane.
Renfe does not seem to indicate estimated CO2 emission and trains to Galicia are
probably not the most eco-friendly. However, using this online estimator, the 1200 kilometers
between Barcelona and A Coruña
would emit 50kg by national train. This would mean a reduction of 71% in the
emission of CO2, which is quite significant. Hopefully things will get better
when one day
AVE is available between Madrid and
A Coruña… 😉
En avril dernier, alors que j’étais en déplacement au Canada pour
BlinkOn 10, j’ai
posté la carte postale musicale suivante:
Avant de décrypter cette petite valse en ré mineur, notons que le titre
“MIsSIvE” (avec des
nom de notes en lettres majuscules) donne un premier
Commençons par analyser le morceau d’un point de vue
harmonique. La première mesure possède un ré à la basse et contient les notes
ré, la ; la, mi, fa do ; la, do, ré, mi soit un accord de ré mineur neuvième
ré-fa-la-mi-do. En procédant de même pour les autres mesures, on obtient la
grille d’accords suivante:
| la do mi | mi mi |
| si mi | sol fa sol mi | la si ré sol mi | sol ré | la mi ré |
| mi | do la ré ré mi | mi sol do# mi | fa ré |
En conservant uniquement les notes fondamentales des accords, en les mélangeant
avec celles de la mélodie, en retirant les altérations et en choissant
astucieusement le nom des notes (selon le système français ou anglo-saxon),
on peut écrire le petit mot accompagnant la carte postale:
This blog post reviews Igalia’s activity around the
Web Platform, focusing on
the second semester of 2018.
During 2018 we have continued discussions to implement MathML in Chromium with Google and people interested in math layout. The project was finally launched early this year and we have encouraging progress. Stay tuned for more details!
BigInt support in SpiderMonkey and JSC. For the
latter, you can watch this
video demonstrating the current support. Currently, these
two support are under a preference flag but we hope to make it enable by default
after we are done polishing the implementations. We also added support for BigInt to several Node.js APIs (e.g. fs.Stat or process.hrtime.bigint).
At TC39, we maintained or developed many proposals (BigInt, class fields,
private methods, decorators, …) and led the ECMAScript Internationalization
effort. Additionally, at the WebAssembly Working Group we edited the WebAssembly
JS and Web API and early version of WebAssembly/ES Module integration specifications.
Last but not least, we contributed various conformance tests to test262
and Web Platform Tests to ensure interoperability between the various features
mentioned above (BigInt, Class fields, Private methods…). In Node.js, we worked on the new Web Platform Tests driver with update automation and continued porting and fixing more Web Platform Tests in Node.js core.
A new version of the 1.2 suite (ARIA, Core-AAM, AccName and the Authoring Practices) is available. In particular, we published a first working draft for ARIA 1.2 which will focus on role parity with HTML 5 elements. A working draft for Core-AAM 1.2 is also available.
We are also collaborating with Google to implement ATK support in Chromium. This work will make it possible for users of the Orca screen reader to use Chrome/Chromium as their browser. During H2 we began implementing the foundational accessibility support. During H1 2019 we will continue this work. It is our hope that sufficient progress will be made during H2 2019 for users to begin using Chrome with Orca.
Web Platform Predictability
On Web Platform Predictability, we’ve continued our collaboration with AMP to do bug fixes and implement new features in WebKit. You can read a review of the work done in 2018 on the AMP blog post.
We have worked on a lot of interoperability issues related to editing and selection thanks to financial support from Bloomberg. For example when deleting the last cell of a table some browsers keep an empty table while others delete the whole table. The latter can be problematic, for example if users press backspace continuously to delete a long line, they can accidentally end up deleting the whole table. This was fixed in Chromium and WebKit.
Another issue is that style is lost when transforming some text into list items. When running execCommand() with insertOrderedList/insertUnorderedList on some styled paragraph, the new list item loses the original text’s style. This behavior is not interoperable and we have proposed a fix so that Firefox, Edge, Safari and Chrome behave the same for this operation. We landed a patch for Chromium. After discussion with Apple, it was decided not to implement this change in Safari as it would break some iOS rich text editor apps, mismatching the required platform behavior.
We have also been working on CSS Grid interoperability. We imported Web Platform Tests into WebKit (cf bugs 191515 and 191369 and at the same time completing the missing features and bug fixes so that browsers using WebKit are interoperable, passing 100% of the Grid test suite. For details, see 191358,
189582, 189698, 191881, 191938, 170175, 191473 and 191963. Last but not least, we are exporting more than 100 internal browser tests to the Web Platform test suite.
Bloomberg is supporting our work to develop new CSS features. One of the new exciting features we’ve been working on is CSS Containment. The goal is to improve the rendering performance of web pages by isolating a subtree from the rest of the document. You can read details on Manuel Rego’s blog post.
Regarding CSS Grid Layout we’ve continued our maintenance duties, bug triage of the Chromium and WebKit bug trackers, and fixed the most severe bugs. One change with impact on end users was related to how percentages row tracks and gaps work in grid containers with indefinite size, the last spec resolution was implemented in both Chromium and WebKit. We are finishing the level 1 of the specification with some missing/incomplete features. First we’ve been working on the new Baseline Alignment algorithm (cf. CSS WG issues 1039, 1365 and 1409). We fixed related issues in Chromium and WebKit. Similarly, we’ve worked on Content Alignment logic (see CSS WG issue 2557) and resolved a bug in Chromium. The new algorithm for baseline alignment caused an important performance regression for certain resizing use cases so we’ve fixed them with some performance optimization and that landed in Chromium.
We implemented basic support for <video> and <audio> elements in Servo.
Web Engines Hackfest 2018
Last October, we organized the
Web Engines Hackfest at our A Coruña
office. It was a great event with about 70 attendees from all the web engines,
thank you to all the participants! As usual, you can find more information on
the event wiki including
link to slides and videos of speakers.
We are excited to announce that new Igalians are joining us to continue our Web platform effort:
Cathie Chen, a Chinese engineer with about 10 years of experience working on browsers. Among other contributions to Chromium, she worked on the new LayoutNG code and added support for list markers.
Caio Lima a Brazilian developer who recently graduated from the Federal University of Bahia. He participated to our coding experience program and notably worked on BigInt support in JSC.
Oriol Brufau a recent graduate in math from Barcelona who is also involved in the CSSWG and the development of various browser engines. He participated to our coding experience program and implemented the CSS Logical Properties and Values in WebKit and Chromium.
Coding Experience Programs
Last fall, Sven Sauleau joined our coding experience program and started to work on various BigInt/WebAssembly improvements in V8.
We are thrilled with the web platform achievements we made last semester and we look forward to more work on the web platform in 2019!
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.
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.
Igalia has continued the standardization effort at the W3C. We are pleased to
announce that the following milestones have been reached:
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.
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
iOS frame scrollingcustom 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.
Thanks to support from Bloomberg we’ve been pursuing our activities around CSS:
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.
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!
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.
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.
Thank you for reading this blog post and we look forward to more work on the web platform this semester!
Last week, I attended BlinkOn 9. I was very happy to
spend some time with my colleagues working on Chromium, including a new
developer who will join my team next week (to be announced soon!).
This edition had the usual format with presentations, brainstorming,
lightning talks and informal chats with Chromium developers. I attended several
interesting presentations on web platform standardization,
implementation and testing.
It was also great to talk to Googlers in order to coordinate on some of
Igalia’s projects such as
the collaboration with AMP or
MathML in Chromium.
A description of our non-hierarchical model and benefits it brings.
An overview of Igalia’s contribution to the Web Platform.
From the feedback I got, people appreciated the presentation and liked to get more
insight on Igalia. Unfortunately, I was not able to record
the talk due to technical issues. Of course, thirty minutes is a bit short to
develop all the ideas and reply properly to all the questions. But for those who
are interested here are more pointers:
About dependency on the customers, see the last
paragraph of “work groups” in Andy’s blog post “but that would be anarchy!” especially
treating customers as partners. As I said during the talk, as long as we
have enough customers we have some freedom to accept contracts that are more
interesting for our strategy and aligned with our values or negociate
improvements to existing contracts ; without worrying about unstability
About the meaning of “Igalia”, the simple answer is
“it does not mean anything”. If you join Igalia and get the opportunity to
learn about the company history, there is a more complete answer about how
the name was found…
Regarding founders of Igalia in 2001: Dape (who attended BlinkOn), Alex, Juanjo, Xavi, Berto and Chema are indeed still
working at Igalia and in general, very few people have left Igalia since its creation.
Finally we had two related tricky questions from Google employees:
How do you sync with the browser vendors’ own agenda?
What can Google (or any other browser vendor) could do to facilitate involvements of third-party contributors?
One could enumerate different situations but unfortunately there is not a
generic answer. In some cases collaboration worked very well and was
In other cases, things were more complicated and we had to “fight” to
convince browser vendors to keep some existing code or accept new features.
Communication is very important. We try to sync with browser vendors using video conferencing or by attending conferences, but some companies/teams are more or less inclined to reveal information (especially when strategic products
are involved). In general, I have the impression that the more the teams work
close to the Web Platform,
the more they are used to the democratic and open-source
culture and welcome third-party contributions.
Although the ideal is to work upstream, we have recently been developing skills
to manage separate forks and rebase them regularly against the main branch. This
is a good option to find a balance between the request of the customer to implement
features and the need of the browser vendors to focus on their own tasks.
Chromium for Wayland is a good
example of that approach.
Hence probably one way to help third-party contributors is to improve
communication. We had some issues with developers not even willing to talk to us
or not taking time to review or comment on our patches/CLs. If browser vendors
could indicate that they don’t like an approach as soon as possible or that
they won’t accept patches until some refactoring is complete, that would help
us a lot to discuss with clients, properly schedule our tasks and consider the
option of an experimental branch.
Another way to help third-party contributors would be to advertize more
that such contributions are actually possible. Indeed, many people think that
“everything is implemented by browser vendors” which can make difficult to
find clients for web platform development. When companies rant about Google
not implementing feature X, fixing bug Y or participating to standard Z, instead
of ignoring them or denying the importance of the request, it would probably be
more constructive to mention that they can actually pay consulting companies to
do that job. As I indicated in the talk, we recently had such successful
collaborations with Bloomberg,
AMP and we would be happy to find more!
There are probably more to reply to these questions, but that’s my quick
thought on the matter for now. I’ll try discussing with my
colleagues and see if we have more ideas to share.