Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐞Ladybird: A new, independent browser engine — written from scratch #56

Open
sideshowbarker opened this issue Sep 6, 2024 · 3 comments
Assignees
Labels
session Breakout session proposal

Comments

@sideshowbarker
Copy link

sideshowbarker commented Sep 6, 2024

Session description

An intro+Q&A for the Ladybird browser engine: a completely new engine written from scratch (using no code from Blink/Chromium, WebKit/Safari, Gecko/Firefox, or any other browser), and backed by the non-profit Ladybird Browser Initiative — with a policy to never take funding from default search deals or any other forms of user monetization, ever.

Session goal

The session goal it to give a detailed intro to Ladybird, and answer attendees’ questions about it.

Additional session chairs (Optional)

@ADKaster, @gmta, @tcl3

Who can attend

Anyone may attend (Default)

IRC channel (Optional)

#ladybird

Other sessions where we should avoid scheduling conflicts (Optional)

No response

Instructions for meeting planners (Optional)

Preferred time: 10:00am (because we’ll have some Europe-based Ladybird project members joining remotely).
Andrew Kaster, Jelle Raaijmakers, and Tim Ledbetter from the Ladybird Browser Initiative will be attending remotely.

Agenda for the meeting.

Some of the details planned to be covered include:

  1. What Ladybird is not (just to be clear):
  • Not a Blink/Chromium shell.
  • Not a WebKit port.
  • Not a Firefox fork.
  1. 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.
  1. Very short history.
  1. Related early video/audio announcements and interviews (July–August 2024).
  1. 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 public.
    image
  1. Project goals and 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 doesn’t 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.
  1. Project coding conventions and activity metrics.
  • Implement web-platform features exactly according to the actual steps in spec algorithms.
  • Abundant code comments with verbatim spec text copy/pasted in — showing exactly what’s being implemented.
  • Additional “AD-HOC:” comment convention to mark code that doesn’t map to any spec requirements.
  • Class/file names tend to closely match actual current spec terms; e.g., Navigable.h, Transferable.h.
  • “critically reading standards and reporting what is wrong”
  1. Project activity metrics.
  1. How you can get the code and build it, and contribute new code/patches.
  1. Code details and basic architecture.
  • C++ while selectively migrating parts to Swift and while keeping an eye on things like Sean Baxter’s 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).
  • 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…
  1. Current code size: cloc --vcs=git details/comparison (as of 2024-09-01):

    Engine C++ files C++ lines of code
    Ladybird 1695 313947
    WebKit 17189 4586173
    Gecko 14187 5396911
    Chromium 63826 14902914
    Engine Rust files Rust lines of code
    Servo 1010 268796
  2. Testing.

  • Has its own test harness/runner and some in-tree tests.
  • Currently passing ~79% of WPT (compared to major engines 95%–97%) — and that percentage is growing weekly.
  • CI/regression-testing: Can’t yet practically run all WPT tests on every PR (takes ~5.5 hours, many timeouts).
  • So, to have automated regression testing, we currently add some tests in-tree that may be redundant with WPT.
  • wpt.fyi/results?product=ladybird has current test results for all WPT tests.
  1. Financial support: Funded entirely through donations and sponsorships.
  1. Where Ladybird fits in at the W3C.
  • This means we have six engines in active development: Gecko, Servo, WebKit, Blink, Flow (88% WPT), and Ladybird.
  • Five open-source engines in active development — and six engines in total: both things we’ve never had before.
  • Imagine: Can the Ladybird project grow into a first-class citizen in the W3C community, along with other engines?
  • Enlightened self-interest: Helping a new engine project helps improve our specs, get new editors on board, etc.
  • You can bring your specific W3C/professional experience to help refine/align Ladybird code in key W3C focus areas:
    • Accessibility: ARIA, AOM, testing with AT, more…
    • Internationalization: CJK handling, layout, many other opportunities…
    • Security: CSP implementation, standards related to Spectre mitigation, security-related error messages, more…
    • Privacy: Lots of opportunities for implementing particular specs, for privacy-related browser/UI features, more…
  1. Resources.
  • FAQ: Independent? • When is it coming? • How many people? • Hiring plan? • Windows? • Mobile? • C++? • Swift?
  • 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.
  1. Tangentially-related background.

Links to calendar

Meeting materials

@sideshowbarker sideshowbarker added the session Breakout session proposal label Sep 6, 2024
@tpac-breakout-bot
Copy link
Collaborator

Thank you for proposing a session!

You may update the session description as needed and at any time before the meeting, but please keep in mind that tooling relies on issue formatting: follow the instructions and leave all headings and other formatting intact in particular. Bots and W3C meeting organizers may also update the description, to fix formatting issues or add links and other relevant information. Please do not revert these changes. Feel free to use comments to raise questions.

Do not expect formal approval; W3C meeting organizers endeavor to schedule all proposed sessions that are in scope for a breakout. Actual scheduling should take place shortly before the meeting.

@sideshowbarker sideshowbarker changed the title Ladybird: A new, independent browser engine written from scratch 🐞Ladybird: A new, independent browser engine written from scratch Sep 6, 2024
@sideshowbarker sideshowbarker changed the title 🐞Ladybird: A new, independent browser engine written from scratch 🐞Ladybird: A new, independent browser engine — written from scratch Sep 6, 2024
@sideshowbarker
Copy link
Author

sideshowbarker commented Sep 18, 2024

I notice this is scheduled for the Redondo room — which is not one of the larger rooms but instead can seat maybe 25 people or so?

Maybe I’m being overly hopeful, but I suspect there’s a good chance this session might end up attracting significantly more than 25 in-person attendees. I may be wrong, but it’d be a shame for interested people not to be able to sit in on the session just because the room doesn’t have enough capacity.

So if in this same time slot but in a larger room there’s another session scheduled that the planners assess might not actually need that larger room during that slot — but could likely manage with doing their session in the Redondo room —then maybe we could swap rooms?

(But if it’s too much of a logistical hassle to deal with at this point, then please don’t knock yourselves out trying — I can appreciate how much of challenge it’s already been to try to get things balanced/sized out in the right way for ~90 different sessions spread out over 15 rooms on 3 different floors…)

@ianbjacobs
Copy link
Contributor

@sideshowbarker, we'll move this to California B

@tidoust tidoust self-assigned this Sep 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
session Breakout session proposal
Projects
Status: No status
Development

No branches or pull requests

4 participants