Mike[tm]Smith has been a friend and mentor of mine for many years. I first interviewed him 10 years ago about his work on the W3C HTML checker. Today he is talking about the Ladybird browser:
Mike, tell us about you and your work
I live in Tokyo and I’m employed by the W3C as part of the W3C Japan team. Since what the W3C does basically is to create new cross-browser web technologies for web developers to use to solve problems for people using the web, I guess I could say that like other W3C staff, the work I do is broadly about getting new web technologies out for web developers to use, and about helping web developers be successful at using those web technologies to get things done for everybody using the web.
One of the ways I do that is by writing and contributing code patches for browser projects — by implementing features from W3C specs in browser engines. And currently the browser-engine project I’m mostly contributing to is Ladybird.
Mike, tell us about Ladybird
Ladybird is a relatively new browser engine that’s being written completely from scratch — without using code from any existing browser engine. So it’s not yet another Blink/Chromium shell, and not a WebKit port, and not a Firefox fork. Instead, it’s completely independent — both in the sense that it doesn’t rely on any code from any other browser project, but also in the sense that the project has made a promise to the community that it will never take funding from default search deals or from any other forms of user monetization, ever. Instead it’s 100% funded solely by direct donations and sponsorships.
And in that sense I guess you could say that Ladybird intends to be community-owned, and driven by the priorities of the community. And given all that, I think it wouldn’t be too inaccurate to describe Ladybird as a “next-generation” browser.
Mike, tell us about your involvement with Ladybird
I’m just one code contributor to Ladybird among the several-dozen or so people who contribute code patches to Ladybird each month. To put that in more context: there’s a team of ten people or so who are the core maintainers/reviewers, and most of them are actually employed by the Ladybird Browser Initiative to work full time on Ladybird — paid by the funding that Ladybird is receiving from donations and sponsorships — and then there are few dozen more people like me who are external contributors who submit patches each month to implement particular features or to fix bugs.
The biggest area I’ve been focusing on so far in my code contributions to Ladybird is: implementing features from the W3C accessibility-related specs such as the ARIA spec and the HTML-AAM spec and the Accessible Name spec and so on. After some months of working on implementing those.
We are now at the point where we have Ladybird passing nearly 100% of the accessibility-related tests in the Web Platform Tests test suite.
Mike, what is the importance of the Ladybird browser (engine)?
I think Ladybird is important to different people for different reasons. But I guess the biggest common reason is the independent nature of Ladybird, and the project’s commitment to continuing to remain independent forever.
In some sense, Ladybird can also be seen as a kind of “reference implementation” of all the specs for the web platform: including the WHATWG and W3C specs and the EcmaScript spec and so on.
The Ladybird project philosophy with regard to specs is to implement them from scratch as closely as possible as they are actually written — rather than, say, just peeking at the code from other existing engines and following whatever they did, or, say, taking any shortcuts around what the specs say implementations should do.
So, Ladybird is important to the W3C and the WHATWG and others in that Ladybird really is attempting to be a kind of reference implementation for all the specs — including, to some degree, to demonstrate or prove whether the specs as written can actually be independently implemented from scratch.
Mike, how do browser engineers (from the other engines) view Ladybird?
The ones I’ve talked to about it have all been very positive and supportive.
And I think in general that browser engineers like when there more engines out there other than the engine they work on themselves — rather than less. Among other reasons, having more people working in implementing the specs helps to expose possible bugs and problems in the specs — which can result in fixes or refinements getting made to the specs. And making the specs better helps everybody.
Mike, is the work on ladybird seen as important by the W3C?
I can’t speak authoritatively for the entire W3C, but I can certainly say that I’ve talked with quite a few people who are closely involved at the W3C see the work on Ladybird as important.
Mike, what language(s) are used in the development of Ladybird code?
Currently the Ladybird code is almost entirely C++. Even the Ladybird code for generating other necessary C++ (code that has to be built and that the browser needs when it runs but that, because of the nature of it, isn’t in the git sources) is written in C++.
That said, the project has a plan for going forward that involves implementing particular parts of the code in Swift rather than in C++. And some significant work has already started in that area.
Mike, how does somebody get involved in the development work?
There is a Getting started contributing to Ladybird that’s a great first stop — and the project also has its own Discord server which anybody and everybody is welcome to join and come in ask questions and get help, or even just for general chat about the project.
Mike, in what ways can people support this work?
For people who are interested in contributing code, getting directly involved in the development work is a a really great way to support the effort.
For people who want to help with funding to keep the work going, they can donate through both DonorBox and Polar. The Polar mechanism has the neat characteristic of making it possible for you to earmark your donation — or tie your donation — to work on resolving a particular issue in the Ladybird issue tracker. So you can either browse through the existing issues and find one that you’d really like to see resolved/implemented — or else, you can actually raise a new issue on your own (say, for some particular web-platform feature you want to see implemented), and then you can earmark/tie your Polar donation to your own issue.
Many thanks for your time and insights Mike!
Pic of Henny Swan, myself and Mike Smith at TPAC 2008
Further listening
Lyrics
Yonder, she's walking She comes my way Red dress on Her long black hair Talkin' like Walkin' like Walkin' like She comes to me Oh baby, I love you so I need you now I want you back I can't go on Helpless baby Evil child I've known you well, and if you wanna stay, that's alright You want me again And then you come to me Well, you know, that's, that's alright! That's alright, that's alright! Now, she's gone She's walkin' away Red dress on Her long black hair I love her so But now she'll come runnin' Anytime I say Well, that's alright Oh baby, I love you so I want you back I need you now I can't go on Oh baby, I want you back I need you now I love you so I can't go on-