Welcome to Ladybird

1 year ago (ladybird.org)

This is great to see either way, but does anybody know if Ladybird's engine is being designed with embedded use in mind?

One of the big missteps that led to Blink/Chromium and to a lesser extent WebKit overtaking Gecko was Mozilla's choice to remove embedding support from Gecko and effectively make Firefox the only modern Gecko browser. It'd be great to get a new browser but it'd be even better to get a new web engine to embed that's not the hulking behemoth that is Blink.

  • I've been waiting for an embedable, rust-based, browser library broken down into modules like "rendering", "scripting", "network", "encoding", etc, for over a decade now. At certain points, it felt like a foregone conclusions. These days, it feels like no one else even wants something like that (or at least, no one is willing to work on it in the open).

    All I want to do is write apps that have native performance using the world's most popular document format and styling language, and so far the only response that even remotely looks like interest in that from the OS designers has been "use a webview" because they apparently, inexplicably understand the first clause of this sentence as 'I would like to embed a full browser stack to accommodate visuals'.

    • Check what is happening in Servo (https://servo.org). Some active members also want something very modular, and this is helped by work being actively done to use the engine in various contexts.

  • As I understand, Ladybird was originally just the embedded HTML renderer for SerenityOS known as LibWeb. "Ladybird" is just the cross platform UI skin for an embedded LibWeb.

Video announcement by Chris Wanstrath (GitHub co-founder) of the 501(c) non-profit and $1,000,000 donation: https://www.youtube.com/watch?v=k9edTqPMX_k

  • Recent events really have affected how I look at the Ladybird browser.

    A year ago (or some) before Andreas Kling announced the large sponsorships this all felt like a hobby project with Andreas himself even admitting that he would not expect too much of it. However, now they are actually trying to build a web-browser that will handle modern websites and web-apps.

    I am truly impressed by the community and also very stoked to see how this will develop going into the next two years.

This is really awesome. I deeply admire what they're doing and hope it works out.

What I'd really love to see with this is some kind of monetization model outside of just relying on sponsors to a non-profit. Although I'm not a huge fan of their specific license, I think maybe the FUTO model might be something to look at: The user is fully free to inspect, modify, and redistribute copies of or modifications of the source code of the application, and the full features of the application are available at all times to all users, but there is a way to "pay for the application if you like it" built into the interface that is easy to access and convenient to use, that gives people some kind of "lifetime license" that just adds a rewarding cosmetic thing to their account or something. Maybe with a one-time notification reminding the user to pay after a certain amount of time using the application that can be permanently dismissed with a button that's part of the notification.

  • Agree with this. Similar to something like Frame.work, this kind of product will never have universal interest and is unlikely to take more than a couple percent of the market, but that’s Fine. Pick your audience, build them the product they want, and charge them money for it. I’ll happily pay for an open-source standards compliant browser with no conflict about who it’s building for.

    • Yes, I think that's at least one thing that the FUTO model shows, which is that there is actually a substantial proportion of people willing to pay for goods software that respects them as users. Whether that's enough to break even with development costs is another question though, but I certainly hope that would be the case.

  • Ladybird is explicitly forgoing any monetization. They will live of donations only. They are happy with a non copyleft license. Some people prefer this. They don't want a tit-for-tat, they just want to give unrestricted.

  • The real FUTO model is that a billionaire is funding the dev though... They are likely not making bank with the "pay what you want" model.

    Elementary OS also has a "pay what you want" option, but I could not find how much this is bringing them compared to their other funding sources.

    • > The real FUTO model is that a billionaire is funding the dev though... They are likely not making bank with the "pay what you want" model.

      That's fair, but Ladybird can emulate that through the sponsors of its non-profit foundation. So it can be partially funded through shareware-like stuff and mostly funded through sponsors keeping it funded. Maybe I'm just crazy here, though. I really don't know what would make a viable funding model.

      A funding model that I really think would be great and I wish people would use more is only providing source code and the tools and documentation needed to modify it and build it yourself for free and charging money for access to pre-built or packaged binaries. I judt don't tend to go around suggesting it because I feel like a lot of people would be pretty resentful of this with our current culture around software, even though I think it's probably the best model in our ideal world.

  • I think that cryptocurrencies get an undeserved level of hate, and that it would be perfect for monetizing a project like a web browser. Yes, there are scam coins, but there are also legitimate use cases for it.

    IMO the Basic Attention Token used by Brave is a good way to do it. Users have the option to earn BAT by watching "privacy-friendly" ads, or exchange fiat into BAT and skip seeing ads. They can then use the funds to support websites they visit, or the browser developer. I'm not a Brave user, but this always seemed to me like the best way to transition away from the intrusive and hostile ad-based business models, and into one that eliminates the middle-man and allows users to support content creators directly.

    • > perfect for monetizing a project like a web browser

      They could also try regular old fashioned money for monetization. It has worked for ~3,000 years pretty well and you can buy things like food and shelter with it in pretty much every country on earth.

      3 replies →

    • I disagree, as being able to earn BAT incentivizes fraud, and fraud protection cannot be done well without a significant loss of privacy.

      There's no way to confirm that you've watched an ad, you can write a Python script that pretends to be the Brave browser and sends the right requests to their API, and there's no way to distinguish those two on their side. The easiest (if not the only) way to make this difficult is to require lots of tracking and fingerprinting, which is hard to emulate well with a custom script. This is one major reason why tracking is so crucial for the ad economy to work.

      1 reply →

The old logo looked cute, the current one looks like a meta copycat. I wish they went for something with more personality, not this type of corporate logo.

This is exciting. Reminded me of the launch of Firefox and the New York Times ad with all the names from those of us who donated at the time. I wonder if Ladybird could do the same thing again.

I also cant believe 20+ years later we have to fight another Browser war.

This new homepage/logo lost the late 90s, early 00s charm that originally attracted me to Serenity. Instead, it looks looks not too different from hyped up, short-lived products that I've learned to avoid.

On a side note, I wonder if the constraints they've lost when decoupling from Serenity may impinge direction and, by definition, velocity. 2026 is a long way away for an Alpha.

  • Ladybird is for the modern web, not so the late 90s, early 00s anymore. I don't see a worry of integrating domain-specific third party libraries, we were able to drop thousands of lines of non-Web code that people would otherwise have to maintain.

    I'm guessing 2026 was chosen as people would be quickly discouraged by its slow rendering performance right now. The average person would just see it as just a slower browser rather than a serious contender.

  • There must be a middle ground between the old janky retro look and the new soulless evil corporate look... (It's sad to see an awesome project lose its personality.)

  • If they had kept the late 90s or early 2000s aesthetic, then most people would've assumed that it was sti one of those hobby projects more focused on a nostalgic (but not necessarily better in any actual way) technological aesthetic that certain tech people get really attached to, and not something that was meant for serious use and to be pleasant to use in the modern decade for people who prefer modern interface paradigms. Having a clean and well-designed website that's nice to look at and doesn't feel horribly outdated is a good move in my opinion — to me, it signaled that the project really has shifted its mentality and goals in a substantial way and is now looking towards the future instead of the past. As soon as I saw the new website design, I got excited because it confirmed for me that their mentality has changed and that this could be something that could really go somewhere.

    Maybe you've learned to associate a nicely designed website that's pleasant to look at with short lived projects that are worth avoiding, but I think that's more your problem:

    Maybe you should realize that most new things don't last very long and so of course websites that are designed in a new and modern way will often be for projects that don't live very long simply because new projects are more likely to use a modern website design, and they are also likely for unrelated reasons to only live a short time.

    And that these exact same pressures and considerations would have applied back in the 2000s or 1990s, such that back in those days oldheads might have looked at something with a 2000s or 1990s design and thought that was clear evidence that it wouldn't last very long, because most new projects made back then would have been made with contemporary design styles, and would have also not lasted very long simply because they were new, same as in the modern day.

    And that your association of long-lived products with 1990s and 2000s design aesthetics might simply be survivor bias: most long-lived software projects today 1st started in the 90s or early 2000s, at the very least, because that's just the first set of decades that are long enough ago for projects that were started then and still survived today to be considered long-lived. And so, of course, most long-lived projects you are familiar with in the current decade will have aesthetics from decades ago, because that's simply how longevity works. And so you've learned to associate longevity with an old aesthetic, but there's nothing really about the aesthetic that talks about or portrays a mentality that makes projects live longer. It's simply that longer-lived projects will be from an older era of aesthetics. But there were plenty of projects that were designed with 1990s and 2000s aesthetic sensibilities (and whatever magical philosophy you attribute underneath those) that didn't survive long at all, just the same as projects that were designed with modern sensibilities that don't last long, you're just not aware of them because they didn't last and so they didn't show up in your sample.

    Edit: It occurs to me that this comment probably comes off as overly hostile and confrontational for no real reason, so I do want to apologize for that. I'm in a very grumpy mood today. I think my reasoning is correct, but I do want to clarify that you're totally allowed to prefer 1990s and 2000s aesthetics. Personally, I like both modern and 1990s aesthetics (in websites specifically) roughly equally and for their own unique reasons. ,the reason I made this comment is just that I find the cargo culting of ancient technical aesthetics[1], as if they are not only indicators of good software in and of themselves, but also of some moral purity and improved moral fibre on the part of those who use them, very tiring. There are many things wrong with our modern technical aesthetics to be sure, but I think there is an almost equal amount wrong with the sort of older technical aesthetics that people tend to worship, like the Unix philosophy and its associated tools and development environment, and things like that. They are just different kinds of wrong.

    [1]: https://prog21.dadgum.com/74.html

    • Designer of the Ladybird website here. Thank you very much for providing such a long review! It means a lot to me.

  • > the late 90s, early 00s charm

    Aka outdated, clueless, and a little bit sad. Making a cleaner design like they did doesn’t cost a lot. Don’t let nostalgia turn you into the "it was better before" crowd.

> Singular focus

> We are focused on one thing: the web browser.

It is great that this was put first

  • Great jab at the Motzilla foundation that focuses on "Pocket", "Mozilla VPN", millions of dollars in CEO compensations, AI investments, political deplatforming and other things (maybe Firefox).

    • I think you're projecting.

      What it means is that now the browser is Andreas' main focus after he announced earlier last month that he will step down from Serenity OS's team.

      7 replies →

I'm glad to see this and hope it succeeds. A proper challenge to Chrome's dominance is long overdue, and though I love and appreciate Firefox, it doesn't look as if it will come from that quarter under the current management's drift.

Personally, I think it would've been better to keep Serenity OS support but drop the no 3rd party code rule. While I realise it would've gone against Serenity OS's write everything philosophy, it would've kept the browser as a rallying focus for the OS. Thinking about what actually happened, if the Serenity OS now treats Ladybird as a port, then I think the result will be the same minus the social effect.

We no longer have an open web. We have a Google web. No amount of coding will change that. Nothing will change until enough people stop using Chrome that devs can get paid to support other browsers. People won't stop using Chrome as long as they keep up the current pace of glomming on more complex APIs and syntax. No other team can compete. Well, a couple could but they quit for short term cost cuts

  • > People won't stop using Chrome as long as they keep up the current pace of glomming on more complex APIs and syntax. No other team can compete.

    I don't have any delusions of Ladybird ever touching Chrome's market dominance, but I disagree that no competition is possible if the goal is building an usable browser. Sure, web standards are blown up out of proportion and keep on growing, but how much of those standards are actually used on a daily basis? How many websites can't work without the GravitySensor or HighlightRegistry APIs [1][2], just to name a couple? How many new standards become absolutely indispensable vs being just bloat never touched by 99.9% of the web?

    Ladybird, Servo and others don't need to catch up to Chrome in terms of features to be useful, they just need to cover the metaphorical 20% of the specs to support the 80% of the web. In the case of Ladybird at least that seems to be the principle guiding its development, with devs dogfooding it and implementing specs to scratch their own needs.

    But I understand I'm probably arguing a different point than you were.

    1: https://developer.mozilla.org/en-US/docs/Web/API/GravitySens...

    2: https://developer.mozilla.org/en-US/docs/Web/API/HighlightRe...

Finally! Congrats to Andreas and the dev team that made it happen!

I hope a portion of the funds to go in Jakt's [1] development as it's a very promising language that looks both clean and elegant AND it's a memory-safe systems programming language.

[1] https://github.com/SerenityOS/jakt/

  • I highly doubt it, Jakt is a hobby project that is basically dead. Writing a web browser is enough work already but also building your own language on top of that seems... costly.

    Using proven and widely used technologies in a very hostile environment seems like a better choice than rolling your own language which will need a ton of scrutiny to be considered serious.

    • I think jakt it's far from dead; the last commit took place 4 days ago and to be honest with you, since I have it locally as a fork, I fetch updates daily and I can see they work on it quite extensively, almost on a daily basis sometimes, which is very impressive.

  • Looks like they're evaluating several alternatives to C++ but haven't chosen one yet:

    "We are actively evaluating a number of alternatives [to C++] and will be adding a mature successor language to the project in the near future. This process is already quite far along, and prototypes exist in multiple languages."

I hope it works, we need something like that, not just a new wrapper around chromium.

I miss the old, cute logo :(

  • Current logo seems very inline with the current style used by Meta and Apple Intelligence.

    • Normally I'm puzzled when people say "this word reminds me of this other bad word" or "this looks like that" (my brain doesn't really work like that), but in this case, I have to say that it does have the same feeling.

      Designing our new company brand: Meta - https://design.facebook.com/stories/designing-our-new-compan...

      Apple AI logo is intended to look unthreatening, and non-anthropomorphic - https://9to5mac.com/2024/06/17/apple-ai-logo/

      I hate to be a peanut gallery person, but I really hope they reconsider the logo!

      The new logo doesn't connote "ladybird" or "ladybug" at all ... it seems like there's obvious room to make it more distinct with that kind of association

Love the effort but...

> We are targeting Summer 2026 for a first Alpha version on Linux and macOS. This will be aimed at developers and early adopters.

this is frighteningly far out for a prototype...

  • Not to get too bogged down in semantics, but in my mind, there’s a pretty big difference between an alpha and a prototype. A prototype just has to prove out your basic approach, and you don’t put it in the hands of end users, early adopter or not. An alpha is a lot more work, and while it’s expected to be buggy and missing some features, it should be substantially representative of the final product.

  • It already loads most websites pretty well (The JS engine is nearly complete!). Currently the big tasks are implementing the remaining web APIs and improving performance, stability, and security, so IMO 2026 is a good target for the first Alpha-test releases.

  • It's an entire new browser engine. It's a moving target fueled by billions of dollars, dominated by megacorporations, with thousands of edge cases to account for. I'm surprised it'll be ready for alpha that soon.

  • Is it though? Modern web browsers have gotten very complex and, to me at least, it doesn't seem that insane.

> Ladybird is currently in heavy development. We are targeting a first Alpha release for early adopters in 2026.

It kinda sucks that it takes this long for an alpha release (I know that browsers are extremely complex). On the other hand, it also seems like this is quite quick for an alpha release of a browser that does not use code from any other browser before it. I can’t wait for 2026.

In a way, this reminds me of the early days of Phoenix (which is now Firefox).

  > Question: When is it coming?
  >
  > We are targeting Summer 2026 for a first Alpha version on Linux and macOS. 
  > This will be aimed at developers and early adopters.

From watching awesomekling's livecoding videos, this seems rather far out on the timelines, but godspeed. We need something outside the scope of the current browser models.

I have never built a browser so pardon my ignorance, but is the Ladybird browser team blazing a new trail in browser tech instead of following the same old path of KHTML/WebKit/Gecko?

The constraints of 1990s are no longer there in 2024, and many new novel breakthroughs are available that might not have existed back then.

  • Andreas is one of the most qualified people on the planet to know where this new trail is and actually make it happen. Many foundational parts will probably look familiar or very similar, but he's been talking about the possibilities of a clean slate project since the beginning of the browser.

    (He was working on the big browser teams before SerenityOS and Ladybird)

Amazing news! It would be great to read how did it come to attract such great sponsorships. Was that actively searched for by Andreas?

I am very happy to see this. I'm also excited to see what successor language they choose. I wasn't expecting them to integrate with another language, I'm curious to see what they go with.

"Backed by non-profit" .... shudders

I'm being unfair, but am I? Have been stung a few too many times by those words

  • Effective governance is a never ending need, but non profits are arguably the best entity type for such efforts. It also allows for tax efficiency for the spend involved.

    • But it's non-profit until it isn't.

      I've worked in too many companies that have a "charitable arm".

      And the "charitable arm" ends up being just a vehicle for, as you say, tax efficiency and profit maximisation and ways into markets otherwise barred to for-profit entities. Not actually focused on the point of the charity itself.

Single file packaged web browser will be just what the internet needs. Like QTWeb which is no longer supported.

I personally wait for Servo to mature and power a decent browser. Especially with Vulkan renderer.

  • I'm not sure it will ever mature, since it was dropped by Mozilla it seems like there are only a few people working on it in their spare time, though I could be mistaken.

    Ladybird seems to be gaining momentum, so I'd guess it will be generally usable sooner than Servo.

I have this totally hyperbolic belief that the most important part of the World Wide Web today is just CSS 2.1 and a few extra modules on top.

If anyone can implement a sane, readable, cleanly extendable CSS 2.1+ C library that gives you enough exposed metric information to do your own rendering, or maybe even expose a backing layer assisted abstraction since web rendering can be very expensive, you've solved what most people care about with making their own desktop software.

CEF is definitely not the answer for this, nor is Electron, and the people around Servo are deluding themselves or outright lying that they care about creating a solution that helps people rasterize web content. The latter most seemed to be all about self-promotion and false governance.

The WWW is great and all, but I think a lot of developers honestly want more direct control over their own apps.

I'm honestly surprised there's no popular alternative to CSS 2.1 that has come out because people realize that it's a lost cause trying to implement all of these worthless standards that get added to web browsers.

No one is using the joystick API. No one is using WebUSB. Just awful, worthless ideas.

From https://ladybird.org/why-ladybird.html

    The world needs a browser that puts people first, contributes to open standards using a brand new engine, and is free from advertising's influence.
     
    This is why I've co-founded the Ladybird Browser Initiative with Andreas and my family has pledged $1M to support Ladybird's development. I believe in Ladybird and I believe in Andreas' vision, and I hope you'll help us support an open, independent browser that supports you.
     
    Chris Wanstrath
    GitHub Founder & former CEO

Mildly disappointing, though understandable, that this is C++. (Would have been interesting to see a from-scratch Rust or even Zig implementation.)

Repo here: https://github.com/LadybirdBrowser/ladybird

Edit: From the FAQ...

> Ladybird started as a component of the SerenityOS hobby project, which only allows C++. The choice of language was not so much a technical decision, but more one of personal convenience. Andreas was most comfortable with C++ when creating SerenityOS, and now we have almost half a million lines of modern C++ to maintain.

> However, now that Ladybird has forked and become its own independent project, all constraints previously imposed by SerenityOS are no longer in effect. We are actively evaluating a number of alternatives and will be adding a mature successor language to the project in the near future. This process is already quite far along, and prototypes exist in multiple languages.

  • Majority of the high quality libraries are written in either C++ or a mix of C/C++. Leaving all that behind for a new language is a hard decision to make. Especially when they specifically left SerenityOS to focus on actually being a browser that is not a toy.

    Choosing a new language, even if it is something as well established as rust means going on a decades long yak shaving journey where they have to implement a lot of libraries that they would get for free if they chose c++.

    C++, for all its crimes against humanity, works. And it works very well. I wonder what successor language they are thinking of.

    • Makes sense.

      My comment was kind of off the cuff, and had more to do with my personal likelihood of committing time, not any technology reason. I wrote the first part before I had seen the FAQ entry. That answer shows that the team has given due consideration of whether those yaks are worth shaving.

      Either way, I'll be keeping tabs on the project, because I love the idea of a Firefox-as-it-should-have-been project.

I’m confused. One paragraph says it’s grownn into a cross platform browser. Next that it is in heavy development with an alpha release in about a year and a half from now

  • Those aren't conflicting statements.

    It started off as a project made solely for SerenityOS (as in no relation to other OSes). Now they switched and have been working on Linux/MacOS/Unix versions. The development thing is that they're not ready yet for any release.

Sounds interesting, but the lack of planned Windows or mobile support makes this DOA.

There are already Linux browsers with their own independent engines (for example, Konqueror uses KHTML), so what about this makes it special beyond having a Daddy Warbucks to fund its development?

I was very excited about this but I must say I lost a lot of that excitement when I found out it's written in a non-memory-safe language (C++). Browsers are one of the few things we use every day that really need to be as safe and secure as possible so it was a huge disappointment.

The past 20 years of seemingly endless browser vulnerabilities due to memory management issues has left me... Skeptical. We're still seeing vulnerabilities based on memory management bugs in Chrome and the non-Rust parts of Firefox!

The sooner we stop making stuff like browsers in unsafe languages the better.

  • Andreas has looked deeply into moving both SerenityOS and Ladybird to a successor language but at the time didn't find anything out there that met their requirements so he started a new language named Jakt which unfortunately never got enough traction to move to.

    One of the issues preventing them from adopting a language like Rust or Swift was the large number of 3rd party dependencies they would bring with them, this went against the "we build everything from scratch" ethos of SerenityOS. Now that Ladybird is forked from Serenity I hope they can revisit this decision.

    It wouldn't surprise me if they adopt Swift. Andreas really liked it and in the time since it was last evaluated Swift's C++ interop has improved a lot.

  • > However, now that Ladybird has forked and become its own independent project, all constraints previously imposed by SerenityOS are no longer in effect. We are actively evaluating a number of alternatives and will be adding a mature successor language to the project in the near future. This process is already quite far along, and prototypes exist in multiple languages.

  • Isn't it possible to write memory-safe code in modern C++?

    • Very. In fact it’s becoming harder to write non-safe c++.

      Stuff like nullptr has been in the spec for a while, unique_pointer and other stuff has worked its way in too.

      And Rust has plenty of ways to turn memory into Swiss cheese. Anyone who does not actively acknowledge unsafe and the fact you can embed C into rust is delusional.

      1 reply →

  • part of the reason Ladybird split from SerenityOS was to break the "no dependencies" requirement...Ladybird will now be integrating with best-of-breed third party libraries. These will be primarily C/C++ authored I assume, so you are getting C/C++ no matter what.

  • [flagged]

    • In Rust most function take a reference to its argument, which means the ownership is shared. However, you can also pass non-reference to it which indicate that you wish to transfer ownership to the function (of course the caller must be the previous owner). Once the function take ownership there's no way to take it out unless they returned it, so it achieve the effect you're looking for.

      I heard some HTTP library used that to expose a state machine, so functions that cause HTTP header to be sent will take ownership and return a new value which no longer expose HTTP headers setter methods.

      For freeing memory or resources, the recommended way to do it is in RAII-style, with custom Drop implementation that will get called when the ownership is dropped instead of explicit close() or free()