W3C

– DRAFT –
Updates on Servo

12 November 2025

Attendees

Present
cpn, Dingwei, duga, eri, erisu, Euclid, hayato, jcayzac, Lei_Zhao, Martin Alvarez, niklas, oriol, shubhamg13, Steven, Sun, Thomas_Steiner, tidoust, xiaoqian
Regrets
-
Chair
Xiaocheng Hu
Scribe
reillyg

Meeting minutes

Slideset: https://docs.google.com/presentation/d/1sWbL8NUJBHPt_-lvUGNE1ggIKl0U8tdJwENk6HNdqzs/edit and archived PDF copy

Slideset:

[Slide 1]

[Slide 2]

[Slide 3]

[Slide 4]

shubhamg13: Servo only includes the first three metrics.

[Slide 5]

[Slide 6]

[Slide 7]

[Slide 8]

shubhamg13: LCP is likely to be the "hero" for the page.
… In this example the first the text is the main content.
… LCP (the image) will be the main content.
… and we can use this to determine that the website has loaded.

[Slide 9]

[Slide 10]

[Slide 11]

[Slide 12]

[Slide 13]

[Slide 14]

[Slide 15]

[Slide 16]

[Slide 17]

[Slide 18]

[Slide 19]

[Slide 20]

[Slide 21]

[Slide 22]

Slideset: https://docs.google.com/presentation/d/1G1qhARO3w7ymwJiPC4Iv8R4dKm7kw77gxP8wyjK8uJ8/edit and archived PDF copy

<Euclid> @reillyg My slides

Slideset:

Slideset:

[Slide 1]

[Slide 2]

[Slide 3]

[Slide 4]

[Demonstrates using Web Driver to load a page, find an element, scroll it into view and click on it to navigate.]

[Slide 5]

[Slide 6]

[Slide 7]

w3c/webdriver#1918

Euclid: We found this bug by implementing Web Driver in Servo.

servo/servo#39988

Euclid: In this case the tests were wrong and revealed a bug in Firefox.

web-platform-tests/wpt#53421

Euclid: In this case the tests were out of line with the spec.

[Slide 8]

Ethan: As I understand it the architecture in Servo that support Web Driver is quite different from Firefox and Chrome. Do you think this will be helpful for AI generation?

Euclid: Chrome uses ChromeDriver, which is a separate binary.
… In contrast Servo has the Web Driver support directly in the binary.

Ethan: There are some particles to implement control. Maybe Servo is a more convenient platform to do this without any extra binaries.

Euclid: Maybe.

Mike: Could you say a bit more about diving into specs and discovering bugs and getting tests updated.

Euclid: I find it very satisfying.
… Major vendors are working on migrating to Web Driver BiDi.
… We're still on Classic and are finding bugs missed by them.

Mike: Do you find it easy to get the attention of spec editors.

Euclid: I file bugs and PRs. I've made a lot of changes to the Web Driver spec.
… There are some IPR issues when I propose major changes.

Mike: Same question for tests.

Euclid: Yeah, it's gone well. Mainly reviewed by Heinrich.

Mike: Lots of people are interested to know why Huawei has people working on Servo.

Euclid: I can only answer for myself.

Mike: Personally, I would like there to be a place I could point to that answered that question.
… I'm glad this work is being done.
… It's a big deal for there to be a new browser project.
… There have never been this many browser projects happening at once.
… For the W3C we're happy to have more scrutiny applied to specs. It gets things improved.
… That you're looking helps the next person to look at that spec.

tomayac: Would you be able to talk about who the major contributors to Servo are?

oriol: I don't think we've put together a pie chart like that but it sounds like a good idea.
… We rank the participation in the Technical Steering Committee.
… Maybe we can write a blog post about contributors.

Simon: I sponsor Servo and one of my colleagues is a core contributor. Your work is amazing.
… It's great to see people in my generation working on building a browser.

tomayac: In past presentations Servo has been marketed as a think you can embed in other things. Now you have nightlies with a browser interface.
… What is the final version you're thinking about?

oriol: Right now building a full fledged browser is not a top priority.
… It's still an open question.
… For now we're prioritizing making it easily embeddable.
… Servo Shell is completely minimal interface.
… Who knows the future.

tomayac: Who would embed this browser?

Nicolas: Another option for Cordova would be interesting.

Mike: On accessibility, I heard that someone's been working on implementing ARIA.

oriol: There's some work to start adding accessibility.
… For now it is quite early.
… I started working on that with Milan and Alice.
… There are plans to use AccessKit to provide accessibility.
… Hopefully during this year and next we can improve.

Improvements over the last year

oriol: We've made major improvements to flexbox.
… Lots of WPTs were using features we don't support and we fixed that.
… 30% -> 63% pass rate improvement.
… Lots of improvements to CSS sizing as well.
… Adding all the sizing keywords simultaneously was beneficial.
… Refactorings that we did for this even simplified code a bit.
… Together with Blink we are the only implementations supporting the stretch keyword.
… Something interesting that happened around last year was support for CSS grid.
… It was added using a third-party layout library called Daffy.
… This shows the modularity of the browser and the benefits of the Rust ecosystem.
… However, long term I'd rather have CSS grid supported directly in Servo as the current approach adds friction.
… We also had lots of improvements in tables.
… We are actually currently ahead of Blink and Safari in WPTs.
… We also removed legacy layout in the last year.
… This was called "layout 2013".
… The new one, "layout 2020" was renamed to "servo layout" and the old one removed in the last year.

oriol: XPath is now supported.
… We have lots of improvements in shadow DOM.
… We also added incremental layout to avoid relayout after small changes.
… We now detect the damage when changes take place.
… For example, if the CSS color prop changes value we don't need to relayout, only repaint the effected element.
… We split out layout into different phases to only redo the relevant ones.
… If you need to rebuild the box tree because a display property changes you don't need to relayout everything.
… What remains to be done is incremental layout for fragments.
… Hopefully this will be done during the remaining part of the year.
… Added support for SVG.

[Shows a demo of SVG.]

oriol: We added support for SVG and only basic support for inline SVG.
… We added support for DevTools.
… If you run Servo with a --devtools parameter you can use Firefox to debug it.

[Shows a demo of inspecting the element tree, styles and console.]

oriol: Support for Trusted Types has been growing a lot.
… We had the release of the 0.0.1 version of Servo.
… There are discussions of when we should do the 1.0.0 release.
… Right now these releases just imply some extra testing and the idea is to do them monthly.
… They will coincide with blog posts.

Mike: Service workers?

oriol: I don't think we have support for them. That would be interesting.

Mike: I believe someone's working on it.

oriol: I haven't been involved in that work.

Mike: IndexedDB?

oriol: I believe there's been some work there.
… Yeah, we have it.

JanV: The work on it is still ongoing.
… There's a redesign happening right now. It's quite active.
… I don't know much about service workers.

Mike: How about your Javascript engine? Will that stay the same?

oriol: Now we are using the Firefox Javascript engine.
… There have been some conversations about switching to V8.
… I haven't been working on that area so I don't know if there's been progress.

Mike: If all your code is in Rust but you're using a C++ JS engine then...

oriol: Yeah, that's a weak point. Lots of unsafe code.

Mike: There is a Javascript engine written in Rust called Boa.
… I haven't heard of any plans to adopt it.

Thomas: I worked on Extensions at Firefox and the WebExtensions CG is in the process of transitioning to a WG and writing a spec.
… We have some first WPTs in the repo.
… Is now a good time to investigate extensions support in Servo?
… And to spec out the details of what the other engines implement.
… Developing these in parallel could be helpful.

oriol: Personally long term I would love for Servo to have extensions. For now it's not the highest priority.
… That would depend on funding.
… If people want Servo to have something and they have funding they can reach out to companies that offer development services.
… Right now we're lacking in more important areas.

Euclid: More than 40% of contributors to Servo are unaffiliated.
… If we have time can you explain what the difference between "layout 2013" and "layout 2020".

oriol: Layout 2013 was trying to do things in parallel to a greater degree but there are certain things which don't work well that way.
… Even though the current layout tries to layout in parallel if you have floats it won't try to do it in parallel.
… The older one was trying to do a lot more in parallel.
… Rust is not an object oriented language but in script we have something that emulates it a bit so you can upcast and downcast.
… The old one did that in lots of places. The new one is more of a functional approach.
… This was a bit of a tough choice because the old one had more features.
… But we felt like adding the missing features to the new one due to the way the new design was done it would be easier than fixing the old one in the cases that weren't handled correctly.
… Overall supporting new features in the new engine we thought would be easier.

Minutes manually created (not a transcript), formatted by scribe.perl version 248 (Mon Oct 27 20:04:16 2025 UTC).

Diagnostics

Succeeded: s|https://docs.google.com/presentation/d/1sWbL8NUJBHPt_-lvUGNE1ggIKl0U8tdJwENk6HNdqzs/edit?slide=id.p#slide=id.p|Slideset: https://docs.google.com/presentation/d/1sWbL8NUJBHPt_-lvUGNE1ggIKl0U8tdJwENk6HNdqzs/edit

Succeeded 1 times: s|https://docs.google.com/presentation/d/1sWbL8NUJBHPt_-lvUGNE1ggIKl0U8tdJwENk6HNdqzs/edit?slide=id.p#slide=id.p|Slideset: https://docs.google.com/presentation/d/1sWbL8NUJBHPt_-lvUGNE1ggIKl0U8tdJwENk6HNdqzs/edit|g

Succeeded 3 times: s|https://docs.google.com/presentation/d/1G1qhARO3w7ymwJiPC4Iv8R4dKm7kw77gxP8wyjK8uJ8/edit?usp=sharing|Slideset: https://docs.google.com/presentation/d/1G1qhARO3w7ymwJiPC4Iv8R4dKm7kw77gxP8wyjK8uJ8/edit|g

Maybe present: Ethan, JanV, Mike, Nicolas, Simon, Thomas, tomayac

All speakers: Ethan, Euclid, JanV, Mike, Nicolas, oriol, shubhamg13, Simon, Thomas, tomayac

Active on IRC: breakout-bot, cpn, Dingwei, duga, eri, erisu, Euclid, hayato, jcayzac, Lei_Zhao, martinA, niklas, oriol, reillyg, shubhamg13, Steven, Sun, tidoust, tomayac, xiaoqian