Ladybird is a groundbreaking cross-platform browser project that's taking the mobile app development world by storm. Based on the LibWeb and LibJS engines from SerenityOS, this innovative browser is poised to revolutionize the way we interact with the web.

As the driving force behind SerenityOS, my goal has always been to create a complete desktop operating system that I can use as my daily driver. But what started as a personal project has blossomed into a massive open-source community with hundreds of people working together from all over the world. Over the past four years, we've gone from scratch to building a capable system with its own browser stack.

As Ladybird takes shape, my focus is shifting from building an OS for myself to creating a cross-platform web browser that can be used by anyone. And what started as a simple debugging tool has now become the foundation of a powerful mobile app development platform.

The Birth of Ladybird

Ladybird was born on July 4th when I recorded a video of myself building a simple Qt GUI for the LibWeb browser engine. With recent breakthroughs from Dex and others, we'd achieved headless mode on Linux, and I decided to take the leap and create a GUI around it.

Initially, I envisioned Ladybird as a tool for debugging LibWeb in Linux, but now I find myself using it for most of my own browser development work. It's been two months since then, and I've tweaked the scope from "browser engine for SerenityOS" to "cross-platform browser engine," building something that many more people can use.

LibWeb and LibJS: The Engines That Power Ladybird

Ladybird is built on top of LibWeb and LibJS, two novel engines that have been in development since 2019. LibWeb started as LibHTML back in June 2019, while LibJS began nine months later in March 2020.

Both engines are written in C++ and are designed to work together seamlessly. The browser stack includes:

  • Ladybird: Tabbed browser GUI application
  • LibWeb: Web engine that supports multiple standards like HTML, DOM, CSS, SVG, etc.
  • LibJS: ECMAScript language, runtime library, garbage collector
  • LibGfx: 2D graphics, text rendering, image formats (PNG, JPG, GIF, etc.)
  • LibRegex: Regular expression engine
  • LibXML: XML parser
  • LibWasm: WebAssembly parser and interpreter
  • LibUnicode: Unicode support library
  • LibTextCodec: Text encoding conversion library
  • LibMarkdown: Markdown parser
  • LibCore: Miscellaneous support functions (I/O, datetime, MIME data, etc.)
  • Qt: Cross-platform GUI and networking

A Note on Maturity

Please note that we're still in the early stages of development. Many web platform features are missing or broken, and it will take time before Ladybird is ready for day-to-day browsing.

We're currently focusing 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 occur.

The Road Ahead

As we continue to develop Ladybird, our focus will be on building a truly independent cross-platform browser that can be used by anyone. We're excited to invite anyone interested in working on a completely new browser to join us on this journey.

With hundreds of people working together on SerenityOS and Ladybird, we're confident that our community-driven approach will lead to the creation of something truly remarkable.