I tried it only two weeks ago on latest Haiku Nightly 64bit.
Rebasing the patchset over the current source worked without any conflicts, if I remember right.
The browser still worked fine, but crashed often, not much changed here.
Note that most work nowadays goes into the forked Ladybird that is developed outside of SerenityOS.
I also tried porting that one to Haiku, but failed at its dependencies.
Most of them were rather easy to port, not so with Angle, then I’ve given up.
I assume it is this GitHub - google/angle: A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android.?
Can you elaborate on the problems faced? Perhaps x512 or kallisti5 might help if it is graphics related?
Yes,it’s that.
Here’s a screenshot of the error message when trying to compile it: Making sure you're not a bot!
It fails early in the build system without even starting to compile the code.
It complains about build/config/gclient_args.gni not existing and I can confirm that this file is really not there.
I should note that Angle has dozens of dependencies it includes as submodules,and some of them seem to require authentication to clone (WTF?) so that could explain the missing files.
After all,that thing seems like a huge mess and I didn’t feel like wasting more time on it.
Did you try ./build/install-build-deps.sh ? This is Linux only but it may work
Yes,and it’s not only Linux-only but even then,it expects apt-get so it’s Debian-based-only.
Here’s the result of trying to run it:
install-build-deps.py [ERROR]: lsb_release not found in $PATH
install-build-deps.py [ERROR]: try: sudo apt-get install lsb-release
And even if it worked,I’m not sure if it would be of much help.
I looked into the file and it does only install system packages that are required to build Angle,but my problem is (most likely) with the submodules in the Git repository itself.
I tried myself and got stuck to CIPD not working correctly while installing depot_tools
Submodules need to be initialized one time:
git submodule update --init --recursive
then whenever you update your repo, make sure submodules are synchronized:
git submodule update
That’s all there is to it.
After the recent interest for Ladybird here in the forum,I tried building the latest version from the SerenityOS project once again.
It’s been quite a while and there are some additional small patches required to get it working again.
Here’s my latest patchset to make Ladybird from SerenityOS work on Haiku: https://upload.odirf.de/file/BCsU6KVjcU15.patch
Also note that GCC 13 isn’t recent enough anymore for it to build,but I had success with Clang 21.
You need to change the cmake command to tell it to use clang:
cmake -GNinja -S Ladybird -B Build/ladybird -DCMAKE_C_COMPILER=/bin/clang -DCMAKE_CXX_COMPILER=/bin/clang++
After that,it’s working with the same quality as it previously did (not super stable,some crashes,and not all websites are working excellently).
I didn’t give the new Ladybird from the now separate project another try,as I never had success with it on Haiku.
I’ve been trying to get the standalone version of Ladybird to compile, for which I need to get vcpkg to compile and then to make Ladybird use a custom version of vcpkg rather than fetch the source from upstream.
Two parts are causing me headaches; the first is the telemetry code itself, which contains a bunch of ifdef’s to obtain a MAC address. I elected to just return “0”. The second issue is that vcpkg wants to know the path of the binary corresponding to its process. Again, this involves ifdef’s and OS-specific syscalls
Ladybird collects telemetry and MAC addresses? No thanks.
No,Ladybird doesn’t collect any telemetry and it even has an built-in adblocker to protect you against trackers online.
It’s vcpkg,a dependency manager for C++ libraries built by Micro$oft,that collects telemetry and MAC addresses.
The new Ladybird project recommends it to fetch some dependencies,I always tried to get around that and fetch dependencies directly from Git (but failed at some point).
The Ladybird version from SerenityOS doesn’t need that at all,it bundles almost all needed libraries in its own codebase,and the rest can be installed using pkgman.
I was interested to read that Ladybird, having previously selected Swift as the programming language that would replace C++, decided to abandon this plan and are now experimenting with auto-translating their codebase into Rust.
The announcement admits Rust is an inferior way of expressing the design of Ladybird compared to Swift, but feels compelled to give it a go apparently because that is what everyone else has done. Personally I think it would be worth them waiting to see whether Carbon (Google’s grand successor to C++) amounts to a replacement. Certainly their decision process might inform debates found elsewhere on this forum as to whether (and if so, how) Haiku replaces C++.
That recent development,besides my technical difficulties to get it to work,was another reason to focus on the Ladybird version from the SerenityOS project.
I’m personally not a big fan of Rust,but if someone knows the language well and writes good software with it,why not?
But rewriting great C++ applications in Rust for no reason other than following the hype around Rust makes no sense to me,and if that’s done using a LLM that doesn’t actually understand the code and will probably introduce hundreds of small subtle bugs along the way,then I’m really not interested in using that.
I hope that Haiku stays in C++,it’s a massive and mature codebase and the contributors already know C++ well.
And I think that a browser engine written in C++ provides the best basis for good integration and bindings,which makes WebKit a great choice for WebPositive and the C++based SerenityOS Ladybird a interesting thing to play around with from time to time.
WebKit is suffering a lot from using C++: slow build times, considerable time spent tweaking the memory management classes to find better compromises between moving checks to compile-time, reducing runtime overhead, and keeping the life of the developers easier.
This is the cause of a lot of source changes in WebKit, with several systems coming and going over the years and as compiler technology improves.
I think a lot of these problems would be solved by using Rust. But you have to design a web engine from scratch. The good news is that the Servo project is doing exactly that. I would rather look there. I lost count of Ladybirds announcements of changing languages, if I remember correctly, even during the Serenity days someone had started thinking of an ABI-compatible C++ replacement for the project? Then it was Swift, and now Rust. Probably it will be something else next year, then?
There is some truth to that of course. But the Ladybird project does have a specific reason why they want to move at least some parts of the application (like the javascript engine, and now the HTML parser) away from C++ to a more modern language, and that is security. Whether that is technically warranted and will work out in the long run is to be seen, but the important point here is that they are not just moving to Rust because it’s cool or something like that.
It was a bit surprised about the LLM usage as well, we will also see how that works out, eg. in comparison to the recent events around rsync. But I think we have to admit that LLM usage as a tool by someone like Andreas and his team is a different story than all the “vibecoded” apps that now flood the internet and are completely AI generated by people who have no idea what they are doing.
Fair enough. Personally I think the Ladybird version from Serenity is a dead end. I’m much more interested in having the new Ladybird available on Haiku. I’ve built it on Linux, that was quite straightforward. The biggest hassle was to get recent enough versions of many of the tools installed. They sure like to stay on the edge of new versions with their build requirements.
Rust have even worse build times. And it do not work well with dynamic libraries, so it need to recompile every package.
I am both in favor of WebPositive and Ladybird. I do think it’s impressive Haiku ships out of the box with a native lightweight browser, and I think development of that should continue!
However, I am also very excited for Ladybird (in general, not just for Haiku) since the browser space has been dominated by a handful of massive players (again, in general - not just Haiku). Ladybird is built from the ground up and has paid developers and funding, so I think it could bring about some good change.
The non-Serenity Ladybird is now rejecting all external contributions: Changing How We Develop Ladybird - Ladybird
So, any port will haâe to be done out-of-tree, with no way to even submit it upstream. That makes it even worse than blink/chromium, where you could at least try.
Well, that is sad. Open source, but closed development ![]()
That’s very bad news for Ladybird as a FOSS project,but it doesn’t really affect porting to Haiku.
My current port is already a out-of-tree patchfile that I keep updated somewhat regularly.
I’d like to submit it upstream,but they offer exactly zero open non-proprietary communication channels,no email address,no forum,no IRC,nothing,so that doesn’t work for me.
Well,maybe now that the new Ladybird is rejecting hobby developers,there will be more activity in the SerenityOS version again,we’ll see.
I just checked and the last update to LibWeb was 2 month ago,to LibJS 4 month ago.
SerenityOS still looks like a very active project overall,but they seem to focus more on other parts of the project currently,not so much on their Ladybird version and the web libraries.