Skip to content

Servo vs Ladybird

I believe that Ladybird has more funding and better support for the web, but Servo wins in performance. Though, they're hard to compare directly!

Table of Contents

In this article, we'll compare the different approaches that Servo and Ladybird are taking to shake up the current browser engine scene, check their rate of progress, and what's in the best development state. That said, for those out of the loop, I'll also start with a brief history of each project, starting with Servo.

Servo

Servo was born in 2012 as a research project, trying to draft up a browser engine that takes advantage of the "memory safety properties and concurrency features" of Rust, speeding up webpage rendering through GPU acceleration.

fullscreen

Two years later, Servo passed the basic Acid2 test, which checks for some aspects of HTML, CSS 2.1 styling, PNG images, and data URIs. By 2016, Servo was already able to beat other engines in some specific tasks, such as animating various background, transform, and border radius concurrently.

fullscreen

Thus, efforts then started to bring these components from the experimental Servo to Gecko, the stable rendering engine behind Firefox. This project was called "Quantum", and it included the parallelized CSS style system, renderer, compositor, DOM, and so on.

fullscreen

These were the golden days for Servo, and back then it was even used in augmented reality browsers; both the "Magic Leap" headset and the Firefox Reality browser were relying on it. However, both projects had short lifespans.

In 2020, the entire Servo team was fired from Mozilla, amongst others. This was done by the then-CEO Mitchell Baker, who said that Mozilla had to "adapt its finances to a post-COVID-19 world and re-focus the organization on new commercial services". Evidently, developing an experimental web engine was too expensive for them.

fullscreen

The guidance of Servo was moved to the Linux Foundation, though without any funding; there were some volunteer efforts, but the project was as good as dead for years.

This brings us to January 2023, when "thanks to new external funding" (from whom, we do not know), "a team of developers will be actively working on Servo".

fullscreen

The team is from Igalia, and they've been quite public in releasing frequent updates about the status of development. You can see here a presentation they held at the last Ubuntu Summit.

This means that Servo is now in active development, and getting better every month. However, before focusing on the latest speed of development, let's also give some context to Ladybird.

Ladybird

Ladybird is an open-source web browser born in 2022 by the single developer Andreas Kling. His stated goal was to create a "Qt GUI for SerenityOS's LibWeb browser engine".

fullscreen

However, if we want more of a fair comparison, the LibWeb engine that powers Ladybird began development back in 2019, and it already had contributions from hundreds of people before Ladybird was born.

fullscreen

Back in 2022, Ladybird (or, more correctly, LibWeb) was already passing the Acid3 test (again, including "a bunch of basic CSS layout features, and various DOM/HTML APIs").

fullscreen

All of this - mind you - was sponsored by patrons on Patreon and GitHub sponsor, YouTube ad revenue, and Merch. He explicitly refuses to do sponsored advertising or venture capital firms. However, it also means that it was mostly a one-man project (though, that's no longer true, more on this later).

fullscreen

A couple of years later, he recognized that Ladybird and SerenityOS were "two big projects in one space", sharing all the resources and infrastructure, but with a diminishing overlap between them. He thus decided to separate Ladybird from SerenityOS, and he stepped down as Benevolent Dictator For Life.

fullscreen

This made Ladybird an independent project, and it has only grown since then; he still publishes videos about Ladybird development, though there hasn't been one in a few months.

A few initial differences

A few things to point out immediately are that Ladybird is a browser whereas Servo is a browser engine. It seems stupid, but it isn't.

Servo does come with a proof-of-concept interface called servoshell, featuring the very basic features you'd expect out of a browser: creating and closing tabs, entering URLs, back and forward buttons, and a loading spinner.

This might seem like a small difference, but it isn't: Servo is thought from the very beginning to be embeddable everywhere, so that it's easy to build custom browsers or applications with it. They're also putting effort into simplifying the process and documenting it so that everyone can do it.

fullscreen

On the other hand, Ladybird's engine LibWeb is mostly focused on, well, Ladybird. That said, there has been some effort by third-party developers to bring to make the engine easily embeddable; as an example, there's a LibWebGTK project that wraps LibWeb for embedding in GTK apps.

fullscreen

Then, Servo was written from the very beginning in Rust with memory safety and concurrency in mind; parts of the engine managed its way to the Mozilla browser, speeding it up, whereas Ladybird is its own project written in C++.

During a podcast with Igalia, Andreas Kling has also talked about the perceived differences between the two browsers. According to him,

I always understood Servo to be an experiment, above all. And I think a lot of great things have come out of that. And I hope that they carry that forward and continue to be experimental, or experiment friendly at least, because there's so many things that you could do in a browser engine that is very inconvienent to do in the big engines because there's so much code you would have to rewrite just to try out new architectures and new ways of doing things.
fullscreen

Funding and Team Size

Though we don't know what "external funding" allowed the Servo project to be brought back to development through Igalia, we do know that it allowed four developers to work on it in 2023:

This then grew to five developers during 2023; to the best of my knowledge, that's the current size of the team behind Servo, at least on Igalia's side of things.

fullscreen

Since then, the Servo project has also pushed for donations and sponsors, opening a GitHub sponsor and an OpenCollective. On the former, they have 313 current sponsors, which adds up to around $20k yearly.

Whereas, on OpenCollective, they also received an anonymous donation of $10k, $2.7k from The Linux Foundation, and many more; in less than a year they've raised $44k, and the estimated annual budget of the project is $61k, which - according to the project itself - should be able to cover six full-time developers.

As far as expenses goes, they have been mostly going towards servers to improve CI times, and not on development directly. Since the servers ad up to "only" $350 a month, most money is accumulating in their Collective, to be used later on.

fullscreen

This also suggests that all of these donations are on top of the mysterious "external funding", which is great news for Servo, as it means that the team could potentially expand over time.

What about Ladybird? Well, Kling has created the Ladybird Browser Initiative, a non-profit to "drive work on the browser and make it easier for supporters to sponsor development".

fullscreen

Since then, the board was joined by Mike Shaver, a founding member of Mozilla, Tim Flynn, who's been contributing to the project for four years, and Chris Wanstrath, GitHub co-founder.

Chris (and "his family") has also donated $1M to Ladybird's non-profit, wich - obviously - is pretty crazy!

Previously, Ladybird had received $100k in funding by Shopify, as the project is "a love-letter to the web, and proof that open technologies enable innovation by organizations of all sizes".

fullscreen

Since then, the project has also received $100k from Futo, another $200k total from Proton VPN, Ahrefs, Guillermo Rauch, and ohne-makler, plus various other minor sponsorships.

This allows the team to currently have 7 paid full-time engineers working on Ladybird, plus volunteers. They also strive to maintain 18 months of runway at all times. Note that board spots are "not for sale", and all sponsorship come in the form of "unrestricted donations".

fullscreen

Finally, Ladybird also accepts DonorBox donations from users, though it's impossible to know what they sum up to.

This makes a direct comparison with Servo extremely difficult, especially since Servo - again - does not disclose their external funding, but we do know that Ladybird is in a great financial position, and - as far as I know - has a couple more devs working on the project full-time, though the team size is nonetheless similar. Thus, I believe that Ladybird has a slight edge here, though it's arguable that it's not a significant one.

Web Support Tests

There's a few ways to compare the number of tests that each browser [engine] passes, so let's quickly go through them to have a rough comparison of the development status of the two.

Let's start with Acid3, though it's a bit of a dated test. I've already mentioned that LadyBird passes the test with a full score, but Servo only reaches an 83 out of 100 score on it.

A (much!) more comprehensive test suite is the web platform tests. These include around 2 million tests divided into tens of categories, from accelerometer to accessibility, cookies, CSS (obviously!), and more.

If we look at the raw number of passing tests, Servo managed to pass 76% of the tests, whereas Ladybird passes 88%, with a solid advantage. For reference, Chrome achieves a 97% score.

fullscreen

However, things are not so clear if we go category-per-category. As an example, Servo does beat Ladybird in CSS tests passing (49% vs 42%). It's the only "important" category where Servo holds a significant advantage, but it's nonetheless a pretty important one.

fullscreen

This is because most CSS tests are focus areas of improvement of Servo, where the Igalia team is dedicating the most resources; as an example, Servo wins in CSS2 tests, cssom, flexbox, and a few others, all of which are focus areas for the team.

fullscreen

It's worth noting that, until 5 months ago, Servo had the edge on the web platform tests, but Ladybird managed to catch up quickly.

Indeed, Andreas Kling has provided a graph over time of the score of various browsers on the web-platform-test over time; I'll have to admit, I was not able to understand how to generate it myself. In the graph, the purple line is Servo, the red line is Ladybird, and the orange line is another browser engine called Flow, whereas the group at the top are Chrome, Edge, Safari, and Firefox.

fullscreen

Overall, my impression here is that Ladybird has an overall faster pace of development when purely giving attention to compliance to web standards, though Servo does win in the few areas it's focusing on.

Performance

Well, it's very hard to compare performance on browsers that are mostly fighting to work at all on most webpages, rather than doing so quickly. Nonetheless, we can try to find benchmarks that work on both browsers and compare the scores to have a rough idea of where things are right now.

Let's start with JetStream, which mostly measures the JS engine performance. I'm afraid to say that the test crashes on Ladybird, but it does work on Servo with a resulting score of 129.833; for reference, Chrome achieves 243.338, so there's still some work to do.

fullscreen

Octane does run on both browsers. It's a test that's too focused on the JS engine according to Servo developers, but it's worth noting that here Servo has an easy win, with a score that's more than an order of magnitude higher than Ladybird.

fullscreen

Speedometer v2 also works on both browsers. Again, Servo easily beats Ladybird, with a score roughly seven time higher (and, believe me, it did feel like an eternity to wait for Ladybird to finish the test here). This test measures the "responsiveness of web applications, and uses a demo web application to simulate user actions such as adding to-do items".

fullscreen

For reference, Chrome manages a score of 294, finishing the test within seconds (instead of, well, twenty minutes). I'm not sure how much this will be representative on the day-to-day, but nonetheless it's another data point.

Please note that the Ladybird version I'm using is the latest one from git, and it's built on my computer following the official instructions; I'd be surprised if it lacked some optimization, though such a stark performance difference leaves me a bit speechless.

I have done a few tests on randomly picked governmental webpages, and indeed I found Ladybird to often load significantly slower compared to Servo on most of them. However, these were not scientific tests at all, which means I don't have concrete data for them; however, they do align with the benchmarks that we saw.

0:00
/0:15

Overall, my impression is that currently Servo has significantly better performance (this does not surprise me too much, as that was a bit the whole point of the Servo experiment).

Comments

Latest