# Ladybird

Ladybird (englisch für Marienkäfer) ist ein freier, unabhängiger Webbrowser für Linux und macOS. Ladybird wird seit Juli 2022 von Andreas Kling und der Community entwickelt und seit 2024 von der gemeinnützigen Ladybird Browser Initiative geleitet. Ladybird war ursprünglich Teil des SerenityOS-Projekts, bis es im Juni 2024 von SerenityOS abgespalten wurde. Ladybird nutzte bis zur Abspaltung dieselben Programmbibliotheken wie der im Betriebssystem SerenityOS integrierte Webbrowser.
Von den üblichen Browsern hob sich Ladybird ursprünglich durch fehlendes kommerzielles Interesse eines oder mehrerer Unternehmen ab, allerdings hat Ladybird seit 2023 kommerzielle Sponsoren. Weiterhin sieht das Projekt einen Vorteil in der weniger komplexen Codebase, die zu weniger Sicherheitslücken führen soll.
Ladybirds JavaScript-Engine LibJS ist seit 2022 eine durch das Ecma International Technical Committee 39 (verantwortlich für die ECMAScript-Standardisierung) anerkannte Engine für Implementierungen neuer JavaScript-Standards. Von November 2022 bis August 2023 war Linus Groh, damals inoffizieller LibJS-Leiter, eingeladener Experte (invited expert) im Technical Committee 39.

## Geschichte

Die Browser-Engine von Ladybird, die hauptsächlich aus einer Kombination der Bibliotheken LibWeb (HTML und Rendering) und LibJS (JavaScript) besteht, wurde ursprünglich Juni 2019 gestartet. Damals gab es nur einen einfachen HTML-Renderer, der für Rich-Text-Anzeige in regulären GUI-Programmen von SerenityOS gedacht war. Die Rich-Text-Funktionalität wurde nie fertiggestellt, doch ab Oktober desselben Jahres entstand dann ein eigenständiger SerenityOS-Browser. Wie auch im sonstigen Projekt zu dieser Zeit war Andreas Kling der Hauptentwickler aller dieser Komponenten.
Im März 2020 begann Kling mit der Entwicklung einer JavaScript-Engine und benannte die HTML-Bibliothek in LibWeb um. Kurze Zeit später wurde die Browser-Engine in ihren eigenen Prozess ausgekoppelt, wie es bei modernen Browsern üblich ist, allerdings wurde der In-Prozess-Modus noch einige Jahre beibehalten.
In den nächsten zwei Jahren wurde die Engine von Kling und einer wachsenden Anzahl Beitragenden stetig verbessert, bis der Browser im März 2022 den Acid3-Test und seine Vorgänger bestand. Dank der seit Juni 2021 durchgeführten JavaScript-Tests (test262) ist bekannt, dass LibJS seit einiger Zeit ähnlich JavaScript-kompatibel wie große Engines ist, z. B. V8 oder SpiderMonkey.
Im Frühjahr 2022 portierte SerenityOS-Entwickler Dex die Browser-Engine auf Linux und macOS, wobei zunächst ein einfaches Tool namens headless-browser ohne GUI bereitgestellt wurde, welches in der Lage ist, Screenshots von Webseiten zu erstellen. An der Ermöglichung dieser Arbeit waren viele Entwickler beteiligt, da über die vorangehenden Jahre zunächst die sonstigen SerenityOS-Bibliotheken auf andere Betriebssysteme portiert werden mussten. Ausgehend davon begann Kling im Juli 2022 mit der Entwicklung eines Qt-Frontends für die Engine, welches er Ladybird nannte. Die Möglichkeit, die neue Engine auch auf üblichen Betriebssystemen verwenden zu können, sorgte für einige Resonanz, und Ladybird wurde in Kürze ein integraler Bestandteil des SerenityOS-Projekts.
Im Juni 2023 kündigte Andreas Kling an, dass er ein Ladybird-Sponsorship über 100.000 US-Dollar von Shopify erhalten habe. Dies war das erste öffentlich bekannte finanzielle Investment eines Unternehmens in Ladybird. Zuvor wurde Ladybird von Freiwilligen entwickelt, die nur vereinzelt Spenden von Einzelpersonen für ihre Arbeit erhielten.
Im Juni 2024 wurde Ladybird vom SerenityOS-Projekt abgespalten. Am 1. Juli 2024 wurde die Gründung der Ladybird Browser Initiative bekanntgegeben, eine gemeinnützige Organisation nach dem US-amerikanischen 501(c)-Recht. Mitgründer ist neben Andreas Kling als Projektgründer und Hauptentwickler der US-amerikanische Unternehmer Chris Wanstrath. Stand Anfang 2025 arbeiten sieben Vollzeitentwickler am Browser, und das Projekt plant, einen Alpha-Release im Sommer 2026 zu veröffentlichen. Außerdem ist die Umarbeitung der C++-Codebase in Swift geplant.

## Technik

Die Browser-Engine von Ladybird besteht aus den Bibliotheken LibWeb (HTML, CSS, Rendering), LibJS (JavaScript-Engine) und LibWasm (WebAssembly-Engine) sowie deren Basisbibliotheken (LibCore, AK und einige weitere). Besonders an dieser Softwarebasis ist, dass sie von keiner anderen Browser-Engine abstammt, wie es sonst bei allen großen Browser-Engines der Fall ist. Ursprünglich war der gesamte Quellcode vom Projekt selbst verfasst worden ohne Abhängigkeiten zu externen Bibliotheken, allerdings werden seit 2024 externe Open-Source-Bibliotheken benutzt. Obwohl die Bibliotheken auf die Kompilierung für und in SerenityOS ausgelegt waren, ermöglicht das projekteigene Portierungssystem Lagom (zur Herkunft des Begriffs siehe Lagom) die Kompilierung in vielen Unix-ähnlichen Systemen, insbesondere Linux und macOS.
Es existieren eine Reihe an Oberflächen für Ladybird. Die Qt-6-Benutzeroberfläche ist die ursprüngliche und damit älteste Ladybird-Benutzeroberfläche. Inzwischen hinzugekommen sind AppKit (macOS) und Android. Stand Anfang 2025 sind ausschließlich macOS und Linux als Zielplattformen für Ladybird geplant.
Im November 2023 begann Andreas Kling mit der Entwicklung eines Just-In-Time-Compilers, der die Ausführung von JavaScript auf Webseiten weiter beschleunigen sollte. Später wurde der Just-In-Time-Compiler wieder entfernt.