Build a standards-based browser from scratch without relying on existing engines
If you want to build a browser using a new engine based on web standards rather than mainstream browser engines, this repository is your starting point. Ladybird is a standalone web browser written in C++. It is currently in a pre-alpha stage, making it suitable only for developers to build and test. This article explains Ladybird's structure, the environments where it runs, and what you need to know to participate.
Multi-process architecture and isolation design
Ladybird uses a multi-process architecture consisting of a main UI process, a WebContent renderer process, and helper processes responsible for networking, image decoding, compositing, and media processing. Documents from different sites run in separate renderer processes and are sandboxed and isolated from the rest of the system. Image decoding and network connections are also handled outside the process for each site, increasing robustness against malicious content.
Core libraries inherited from SerenityOS
Many of Ladybird's core library support components are inherited from SerenityOS.
- Web rendering engine LibWeb is the engine that renders web pages.
- JavaScript engine LibJS is the engine that executes JavaScript code.
- WebAssembly implementation LibWasm implements WebAssembly.
- Encryption and security LibCrypto and LibTLS handle cryptographic primitives and transport layer security.
- Networking and graphics LibHTTP provides an HTTP/1.1 client, while LibGfx handles 2D graphics and image decoding.
Build environment and execution platforms
You can find instructions on how to build and run Ladybird in a separate build manual. This browser runs on Linux, macOS, Windows (when using WSL2), and many other *Nix-based operating systems. Code-related documentation is available in the documentation folder.
Developer participation and contribution guide
You can join the Discord server to participate in issues and development discussions. If you are new to Ladybird, it is recommended to read the 'Getting involved with Ladybird' document. Before opening an issue, you must review the issue policy and detailed issue reporting guidelines. Project participation guidelines are included in the CONTRIBUTING.md file.
Practical limitations of the pre-alpha stage
Ladybird is currently in a pre-alpha state and is explicitly stated to be suitable only for developer use. It is not yet ready for general users to use for everyday web surfing, and stability or completeness is not guaranteed. The license is the 2-clause BSD license. If you consider building this project or contributing, be aware that it is in an early stage and allow time for setting up the development environment.