how to build ladybird https://github.com/LadybirdBrowser/ladybird/blob/master/Docu...
Last time I tried, I couldn't find a website that worked with it. Where do you even begin contributing to such a large, complex, very much WIP project? The barrier to entry is daunting.
That was the case for me last time I tried it as well, which was a few months ago. Tried it again yesterday and I could load many pages. Could even render complex real life pages like YouTube.
I recommend anyone to build it themselves. It is a very simple and smooth experience.
- you don't need to understand the whole in order to help
the kind of bugs you can start with are like :
- this icon is a bit weird, it's off centre by 2px - how do I add 2 pixels to this icon? either by moving it or by changing the underlying image asset? if I'm moving it, what is the subroutine that paints it? if I'm changing the image asset itself, where is it stored? (is it in a packed store? or is it just a plain file, etc)
- when I click this button, trace the pathway - it's supposed to add to history and turn blue. is it doing that?
etc.
For large projects, start super small and work your way out from there.
However, there are two barriers to me building it myself and submitting PRs. The first is that it's not officially supported to build or run on Windows, so I'd have to get familiar with WSL first or set up a dual-boot environment.
The second is that it's written in the obsolete and unusable language of C++. I would have loved an opportunity here to get into Rust or something, but C++ has proven itself hazardous to my mental health, so I'm staying away from it.
Oh come on. There's nicer ways to say "I'm not good at it". It's OK you know, you can't be good at everything. Just don't make it other people's fault.
Millions of people have built meaningful software with C++ over the past several decades. It is everywhere and it mostly works OK.
Of course, C++ is not necessarily the best choice for everything or anything. But it is a mostly reasonable choice for lots of things in 2025, just like it was in 1995.
Now, with that out of the way. Andreas has been very clear about the reasons why C++ is the chosen language. He has years of experience with it along with writing browsers.
Im paraphrasing here, but he has said that the web evolved around the era of OOP and C++ is the OOP language of that era. Including statements on how C++ fits nicely with the OOP styles of web specs.
As for C++, Ladybird uses very modern C++ that makes it substantially easier to write reasonably safe code than the C++ of yore.
Still, as much as I would like to see the world move to safer languages, C++ is everywhere. Every major browser is written in it. It's not "unusable" in the slightest (though I certainly understand not wanting to learn C++ as an outsider at this point in time, it's a quite boring language in comparison and the C++ job market probably won't let you make use of modern language features that might make it interesting).
I would love to live in a world where projects with security risks like web browsers would "just" use Rust instead of C++ but you'll have to convince the people building the browser to spend their own time or their bosses' time to learn Rust first, and that's a tough sell.
There's Servo if you want to contribute to an open source browser in Rust. It looks like it can certainly use the help it you compare its development speed with Ladybird.
And it doesn't hurt that Andreas seems to be such a nice, humble guy.
The SerenityOS project literally has "NIH syndrome" at its core ["the SerenityOS project, which has a strong culture of writing everything from scratch.", https://ladybird.org/#faq] so I would expect a degree of skepticism of AI code generation.
But there was the post semi-recently about Cloudflare developers shipping a mostly-AI-generated software, overseen by real devs [https://news.ycombinator.com/item?id=44159166] Perhaps Andreas' use of Copilot is a similar thing, where he saves keystrokes and finds errors in the generated output with his own experience. I'll go watch some VODs.
of course, he’s a very, very proficient developer and a browser specialist. he’s not just vibecoding, like you might be implying. but he also uses llms for development.
Starting a new browser, using LLMs... Is not going to maintain enough context.
Whilst Andreas does use Copilot a fair bit [0], he tends to do a line at a time, frequently disagree and rewrites his own, before prompting again. That is... He basically uses it as a fancy autocomplete. Not much else.
Truer words have never been spoken!
His monthly update videos are so soothing to watch.
The native JS semantics are UCS-2. Saying that it's UTF-16 is misleading and confuses charset, encoding and browser APIs.
Ladybird is probably implementing support properly but it's annoying that they keep spreading the confusion in their article.
Generally though JS's strings are just a list of 16-bit values, being intrinsically neither UCS-2 nor UTF-16. But, practically speaking, UTF-16 is the description that matters for everything other than writing `str.length`/`str[i]`.
No. Windows use UTF-16 internally. Most GUI toolkits do not.
> It can be said that UTF-16 is the de-facto standard in-memory representation of unicode strings, even though some runtimes (Rust) prefer UTF-8.
No, that wouldn't be true at all.
Your technical merit seem to be limited by your Windows experience, and even that is dated.
Microsoft recommends UTF-8 over UTF-16 since 2019 [1].
1: https://learn.microsoft.com/en-us/windows/apps/design/global...
Why are you guys talking like there were dozens of GUI toolkits in mainstream use? It's basically web stuff, Qt, and then everything else. Web would be UTF-16 as discussed above, Qt is UTF-16, and even if we entertain the admittedly "large just behind-the-scenes" Java/.NET market, that's also all UTF-16. WxWidgets being a fence sitter can do both UTF-8 and UTF-16, depending on the platform.
Which players am I missing? GTK and ImGUI? I don't think they are too big a slices of this pie, certainly not big enough to invalidate the claim.
The feed is right there in the link being discussed.
> Websites using requestAnimationFrame now render at up to 120Hz on supported hardware
But the phrasing of it about "can now" suggests to me that this may simply be a performance issue too. They changed it from 60 to 120. Perhaps in the future they can go from 120 to 144 or even 240.
net01•4h ago
https://github.com/LadybirdBrowser/ladybird/tree/master/Docu...
Here are the latest Web Platform (WPT) tests:
https://wpt.fyi/results/?run_id=6292901677236224
There is a Discord if you want to ask questions:
https://discord.gg/c8JEZkDvtY
Compile it yourself (it takes 15-20 minutes to fully compile) and test it on a website. Compare it to Firefox or Chrome and see what's wrong. Fix it and submit a PR.
how to build Ladybird https://github.com/LadybirdBrowser/ladybird/blob/master/Docu...
hyperbolablabla•4h ago
net01•4h ago
Look at a WPT test and try to focus on it.
Look at the web spec
Ask questions in the Discord about where it would be, and people are gladly willing to help. :)
its-kostya•1h ago
Ladybird is an outlier and there are probably a few more project like it, but anyone looking to be employed should pick up the new skill that is rust. Contribute to ladybird and learn c++ if the project interests you, but don't learn it for a career.
saidinesh5•1h ago
The advice about career is very geography and industry dependent. Almost no one hired Node.js developers in my city back when i started.
xdfgh1112•1h ago
zarzavat•50m ago
desdenova•42m ago
There's basically 0 rust jobs available that aren't scam startups.