ladybird/Documentation/FAQ.md
2024-11-09 11:07:55 -07:00

9 KiB
Raw Blame History

Frequently Asked Questions about Ladybird

What does 'Independent' mean, if you're including third party dependencies?

Independent means:

  • We implement the web platform standards ourselves: Ladybird is not a Blink/Chromium shell, not a WebKit port, not a Firefox fork.
  • We don't take money from anyone with strings attached

Windows support when?

There are very few Windows developers contributing to the project. As such, maintaining a native Windows port would be a lot of effort that distracts from building out the web platform standards in a reasonable amount of time.

After we have a solid foundation, we may consider a Windows port, but it's not a priority. In the meantime, Windows developers can use other tools such as WSL2 to work on Ladybird.

Will Ladybird support $THING?

Eventually, probably, if there's a Web Spec for it!

When will you implement $THING?

Maybe someday. Maybe never. If you want to see something happen, you can do it yourself!

Is there a release roadmap?

  • 2026: alpha release (daily driver for developers and early adopters) for Linux and macOS.
  • 2027: beta release; downloadable app for Linux and macOS.
  • 2028: stable release for general use image

Well, how do I run this thing then?

Simple, my friend! Just refer to the build instructions.

I did a git pull and now the build is broken! What do I do?

If it builds on CI, it should build for you too. You may need to rebuild the toolchain. If that doesn't help, try it with a clean repo.

If you can't figure out what to do, ask in the #build-problems channel on Discord.

Where did Ladybird come from?

For full details, see the Ladybird: A new cross-platform browser project announcement from 12 September 2022.

Heres a short timeline:

What makes Ladybird/Ladybird Browser Initiative different?

  • Fully independent: Written from scratch, using no code from any other browser engine.
  • Singular focus: Doing only one single thing: building a new browser engine and browser.
  • No monetization: Will never take funding from default search deals or any other forms of user monetization, ever.

Are there video/audio announcements and interviews about the start of the Ladybird Browser Initiative?

Can you describe some of the project goals and its culture?

  • Eventually give everybody the choice of a whole new browser they can use for their daily browsing.
  • Prove it is in fact possible to build a completely new browser, by implementing from the WHATWG/W3C/etc. specs.
  • Have a lot of real fun together actually doing it.
  • Prove that developing an engine doesnt take hundreds of engineers — and not anything close to even just a hundred.
  • Browser engineering: Further help de-mystify it and make it a standard thing to learn (hat tip: https://browser.engineering/).
  • Using project Discord server for communication discord.gg/nvfjVJ4Svh.
  • Using one GithHub repo for everything: issues (no bugzilla or other), patch/PR submission/review, CI/test automation.

What are some of the project coding conventions? And do you have any activity metrics?

Do you have some general details about the code and basic architecture?

  • C++ while selectively migrating parts to Swift and while keeping an eye on things like Sean Baxters Circle & Safe C++.
  • Some use of third-party libraries (e.g., Harfbuzz, Skia, simdutf, libcurl).
  • Performance optimizing is not yet a super-high priority (but performance-boosting changes are regularly getting made).
  • Code size:
    • Roughly same size (number of lines of code) as Servo.
    • About 1/15th as many lines of C++ code as WebKit.
    • About 1/20th as many lines as C++ code Gecko.
    • About 1/50th as many lines as C++ code Chromium.
  • Level of standards support: wpt.fyi/results?product=ladybird has current test results for all WPT tests.
  • LadybirdBrowser/ladybird#features:
    • UI process, ImageDecoder process, RequestServer process, WebContent processes.
    • LibWeb: core web-rendering engine (HTML, CSS, Events, DOM, APIs).
    • LibJS: JavaScript engine written from scratch (currently JIT-less).
    • LibWasm: WebAssembly implementation written from scratch.
    • AK: Ladybird standard library/abstractions: asserts, smart pointers, strings, numbers (e.g., fast_float impl.), more…

What about funding?

  • Ladybird YouTube channel: monthly Ladybird project updates from Andreas.
  • Andreas YouTube channel: 1000+ videos from 6+ years; incl. “car talk” + OS/browser “hacking” (live-coding) videos.