Skip to content
EntityQ114127561· pop 9· linked from 282 articles

Also known as Ladybird browser

independent web browser project

Described at

Ladybird: A new cross-platform browser project

This post describes the Ladybird browser, based on the LibWeb and LibJS engines from SerenityOS.

awesomekling.substack.com

This post describes the Ladybird browser, based on the LibWeb and LibJS engines from SerenityOS. What started as a little therapy project for myself has blossomed into a huge OSS community with hundreds of people working on it all over the world. We’ve gone from nothing to a capable system with its own browser stack in the last 4 years. At this point, we might as well tweak the scope from “browser engine for SerenityOS” to “cross-platform browser engine” and build something that many more people could potentially have use for some day. :^) Both LibWeb and LibJS are novel engines. I have a personal history with the Qt and WebKit projects, so there’s some inspiration from them throughout, but all the code is new. Not to mention, hundreds of people have worked on the codebase since I started it, all adding their own personal influences, so it’s definitely its own thing. The browser and libraries are all written in C++. (While our own memory-safe Jakt language is in heavy development, it’s not yet ready for use in Ladybird.) LibWeb has a Platform layer where Ladybird injects Qt support code for event loops, timers, system font settings, etc. We currently use Qt for networking in Ladybird, as the multi-process RequestServer system is not available outside of SerenityOS yet. Likewise, Ladybird is currently single-process, while the SerenityOS browser is process-per-tab. All of this is temporary and will change over time. Ladybird and its engine are freely available under the 2-clause BSD license . You cannot buy influence over the project, but you can improve the browser by participating in development! In addition to myself, you can already directly sponsor Linus Groh and Sam Atkins who both do a lot of excellent browser work. Please note that we’re still early in development, and many web platform features are missing or broken. It’s going to take a long time before Ladybird is ready for day-to-day browsing. We’re very much in the “make it work” part of the “make it work, make it good, make it faster” cycle. As such, we tend to focus a lot more on correctness and feature support rather than optimization. Performance work happens mostly at the architectural level, although targeted optimizations that relieve particular pain points do also happen. As you can see above, we do pass the classic Acid3 standards test , which covers a bunch of basic CSS layout features, and various DOM/HTML APIs. However, the test does not cover many of the features used on the web today (like CSS flexbox, CSS grid, etc.) Fidelity of modern websites in Ladybird is steadily improving, but you’ll often see lots of layout and compatibility issues. For example, here’s Reddit right now: Sometimes people write articles saying I’m “single-handedly” doing this or that. I’m not! Both Ladybird and SerenityOS are community efforts that hundreds of awesome people are pouring their heart and soul into. I write a lot of code, and I do my best to cheerlead for the community, but I absolutely wouldn’t be here without them! So far, we’ve seen it running on Linux, macOS, Windows (WSL) and Android. The Linux version is definitely the most tested. Since the libraries come from SerenityOS, they’re already self-contained, and we only need Qt to help us with GUI and networking. This makes the browser quite portable, and in theory we could run wherever Qt runs. In practice, we’ll see what happens. I don’t know. It depends on what you consider “ready”, but I’d expect a few more years of development before we have something solid. You can accelerate this process by participating in development and/or supporting our developers financially. The most important work ahead of us is fixing bugs and adding missing features to LibWeb and LibJS. If you try opening your favorite website in Ladybird, you will find bugs! To participate in development, figure out the bug and fix it. Development discussion primarily happens in the browser and js channels on our Discord server ,

Excerpt from a page describing this subject · 17,275 chars · not written by Vinony

Source code

SerenityOS is a love letter to '90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems. Additionally, there are over three hundred ports of popular open-source software, including games, compilers, Unix tools, multimedia apps and more. Man pages are available online at man.serenityos.org. These pages are generated from the Markdown source files in Base/usr/share/man and updated automatically. When running SerenityOS you can use man for the terminal interface, or help for the GUI. The build system supports a cross-compilation build of SerenityOS from Linux, macOS, Windows (with WSL2) and many other Nixes. The default build system commands will launch a QEMU instance running the OS with hardware or software virtualization enabled as supported. Ladybird runs on the same platforms that can be the host for a cross build of SerenityOS and on SerenityOS itself. And many more! See here for a full contributor list. The people listed above have landed more than 100 commits in the project. :^)

Excerpt from the source-code README · 11,001 chars · not written by Vinony

Available in 8 languages

via Wikidata sitelinks · CC0