> Q: Why bother? You can’t make a new browser engine without billions of dollars and hundreds of staff.
Sure you can. Don’t listen to armchair defeatists who never worked on a browser.
> Q: Why bother? You can’t make a new browser engine without billions of dollars and hundreds of staff.
Sure you can. Don’t listen to armchair defeatists who never worked on a browser.
If we start slowly, focus not on delivering a working product ASAP but a nice codebase that's accessible for other developers to read, carefully split modules so each part of the browser is a mini project by itself, with clearly defined business logic, outward connections (GUI, APIs, Drivers, etc), it can be done.
Yes, it will be a lot of work. But with a tidy codebase and a welcoming community (at least for a programmer) that "a lot of work" will instead become a playground to hack whatever component they desire.
The problem is that people don't want another Linux-like hobby project, they want another Firefox
The enduser couldn't care less what if-else nightmare logic you ran in your "application engine" in order to reach the current framebuffer, they care only about the framebuffer. Following this logic, that tidy codebase should perhaps be also tiny: in the extreme case, just thinking on a whim right now, it should be comprised of only one "module": a stable diffusion-like algorithm which ingests the HTML/CSS/JS specification documents and the requested website response and "simply" outputs the adequate framebuffer, with which the enduser interacts accordingly. This kind of approach probably reduces the cost from billions to only a few millions for the GPUs training time. Sort of a "generative browser", a "genser", if you will.
I don't want to build another Chromium. I want to build a web browser. I don't think every browser is required to be like or support as many websites as Chromium does. Note that competing with the popular browsers of today has never been stated as one of Ladybird's goals.
Mild nitpick but "web browser" and "rendering engine" and "JavaScript" are different.
Anybody can take WebKit and do some cool stuff on top in the UI and call it a "web browser".
At the end of the day, without patching to the HTML/CSS rendering engine, it's going to perform like every other WebKit based browser, right?
https://en.wikipedia.org/wiki/Comparison_of_browser_engines
I know Chromium uses Blink and not WebKit now.
Looks like Ladybird is based on https://en.wikipedia.org/wiki/SerenityOS "LibWeb"
That's all just rendering. You need to hook a JavaScript engine up to the rendering engine as well (with glue to the DOM from what I know?)
Chromium is Blink + V8, right?
Does Ladybird SerenityOS Libweb also do JavaScript?
> Browser with JavaScript, WebAssembly, and more (check the spec compliance for JS, CSS, and WASM)
It does. https://github.com/SerenityOS/serenity https://github.com/SerenityOS/serenity/tree/master/Userland/...
Not even Google started from scratch. They started from WebKit and used their billions to overhaul, maintain and change everything from the engine to the renderer.
> But maybe you don't even need to build another Chromium.
That's what Servo said years ago. I don't see the progress or hype around that anymore.
Maybe Ladybird is different, but overall I'm very skeptical; but an alternative browser that is not Firefox, Chrome or Safari needs a high multi-person and project contribution for it to work.
And WebKit didn’t start from scratch either, it started from khtml.
A few years ago there used to be 4 active browser lineages, now there are just 2.
The Mozilla team didn’t intend Servo to be a fully functional new browser. The project was amazing as a Rust-only implementation of the basics of a browser. But ultimately, the utility of Servo was that it served as a place to rewrite modules into Rust for use in Firefox.
Incidentally, there were some good talks by the Firefox team about how they chose to select which modules to rewrite in Rust (since a complete rewrite with feature parity is prohibitively expensive).
This is not accurate. Some parts of Mozilla thought that way, other parts didn't. And thoughts changed over time. For years Servo was officially an experiment, with many possible futures.
Had it succeeded in rendering the modern Web well enough, I think it could have become a fully functional new browser. Sadly, that didn't happen.
(source: I was at Mozilla at the time, and adjacent to the Servo people, who I talked to a lot)
The if-else nightmare logic it's exactly what drives developers away and a surefire way to kill a project before it's even born.
Since the success of Ubuntu as a distro, people started to think of the FOSS ecosystem as a competitor to commercial software but gratis. And IMHO that's a wrong approach to Open Source.
We should go back to the roots, forget about competing, focus on what's the best not for the end users but on what's fun for the FOSS developers, and bring back the hobby on open source projects. Maybe someday, this project will become huge. Maybe not. Dunno.
I am all for going back at the roots, but at the root of all the roots is the enduser: the machine must do something useful, otherwise it's a niche postmodernist art contraption (not that there's anything wrong with that).
I don't entirely agree with the end user being the root of all, at least in FOSS. While they shouldn't be alienated, the focus should be on having a good approach to the project, one that is friendly with the idea of having to code after a full time job, like most open source developers do.
Keep in mind that this isn't a job, nobody will fire you and most complains by end users can be ignored with no consequences. If the project is not fun and engaging, then what's the incentive to keep going?
I prefer Blender's approach of heavily prioritizing users over developers [0]. It's been a huge success.
haa, that's a fun idea! setting aside efficiency, though, neural networks aren't usually Turing-complete, so arbitrary JS isn't going to work. but, I could imagine building a very strict, minimalist browser engine (think XHTML and Scheme rather than HTML and JS), and learning a transformation between the two.
and for perf to be attainable, rather than an NN you could learn a bunch of syntax transformation rules between the two.
I wouldn't worry about performance: Nvidia breaks world records with H100 [2], Intel is going for 6 GHz processors [3], for performance you just have to be patient.
[1] 2019, Jorge Pérez et. al, On the Turing Completeness of Modern Neural Network Architectures, https://arxiv.org/pdf/1901.03429.pdf
[2] https://blogs.nvidia.com/blog/2022/09/08/hopper-mlperf-infer...
[3] https://www.tomshardware.com/news/intel-teases-8-ghz-raptor-...
It would be interesting to see if a search engine's worth of raw data, and enough training on Chrome's output, could build a JS interpreter. I'm skeptical but don't see why not in principle.
Reminds me of: "According to all known laws of aviation, there is no way that a bee should be able to fly. Its wings are too small to get its fat little body off the ground. But the bee doesn't know that, so it flies anyway."
I guess Kling & co. didn't get the memo :)
Chromium isn't successful because of the billions thrown at it. It's successful because it was significantly better than anything else during its rise:
It was significantly faster than IE and FF. Much better memory management and crash handling via separate processes. Strict adherence to web standards. Seamless auto-updates that required no user intervention - ever. No admin privileges needed for updates. Clean UI that stays out of your way. Top-tier developer tools built-in. Very secure. Has there ever been a widespread instance where users were infected with malware from a Chrome exploit? I haven't heard of one yet.
Any competitor to Chromium needs to be significantly better than it for genuine reasons. Unfortunately, "not Google" and "privacy" aren't going to cut it for most average users to switch over. Unlike Meta, Google's reputation isn't in the trash so people still trust them.
I think you're dramatically underestimating the importance that advertising and bundling had in the rise of Chrome. Every non-techie I've talked to about this basically uses Chrome because Google told them it was the best, and Google is the first internet page they go to whenever they go to the internet.
We've seen Microsoft throw money and bundling with IE and Edge, and it still hasn't done much. Even with being able to bundle Edge as the OS default - the biggest advantage anyone could ask for.
IIRC some Firefox devs also accused them of tweaking sites like Youtube in particular ways that only affected competing browsers and made performance worse comparatively.
Then Microsoft bundled IE4, and killed Netscape (it took a while, but the unstoppable momentum was built with bundling/embedding).
Chrome is “bundled” with Google. Every Google search recommends it, and everyone uses Google. Same for YouTube which to this day works better and faster on Chrome. Android (80% user base at the time it happened) also pushed Chrome.
Chrome wouldn’t have become popular if it wasn’t good. But the market dominance did not come from being good - it was just a necessary condition for market dominance in a market already dominated by incumbents.
Maybe not widespread attacks, but the Chrome team regularly see 0days being actively exploited in the wild, I imagine as rare and isolated incidents instead of mass pwning billions of users. For some exploits to work you have to visit a carefully crafted page that has the payload in it. And that's not easy to do at scale. You'd have to cajole millions (billions?) of people into navigating to a specific URL. Also I imagine you don't hear about these exploits because the actors would have good op-sec and keep all their data gathering secret.
This is akin to saying that if you want visit the US from Europe you must built a wooden tall ship, secure a crew of sailors, pack several barrels of limes, and spend weeks sailing across the ocean.
That's how they got there the first time but the choices they made then were determined more by the information they had at the time (or lack thereof) and the technology they had (or lack thereof).
Re-implementing a browser, starting today, is a fundamentally different process from building one starting over a decade ago while the web was constantly evolving.
Of course, the n-th time is cheaper, easier, faster, case in point: I implemented 'deon', a notation format for structured data [1], using your amazing "Crafting Interpreters" for which I paid nothing since I was reading the web version as you were writing. Never had the chance to say thank you, somewhere in my drafts there is an email of appreciation: reading your book and applying it chapter by chapter, crafting a final, useful artifact, has been a beautiful experience, thank you very much, for all your writing, since I am a longtime reader of your technical and otherwise texts.
Sorry, yes. I didn't intent to disagree with your entire comment, but just remark on the first sentence of it.
I'm glad you enjoyed the book! :D
My understanding is that this is exactly the opposite of how Linux was started. It started off as a barely working product on 386 only and went from there.
It was a barely working product, but it was accessible enough to other developers to develop on it and extend it.
The comparison doesn't make sense.
Linux was not released in 2022, competing against 2022's Windows, it was released in 1991, competing with the technology at the time, and has since evolved and grew progressively, as the competition evolved and grew.
Releasing a new browser in 2022, competing against 2022's Chrome and Firefox, is a way bigger task (not that it's their goal).
The competition at the time was also cutting edge at the time, the result of billions of dollars of investment over decades, and Linux was nothing. There's no reason that your argument couldn't have been made in 1991. Why, specifically, would it have been a bad argument in 1991, since we now know it would have been?
I don't deny that, but just the feature gap was a lot less compared to what it is now.
We're talking about a time where video games were made by teams of 5 people, not 500.
If the cutting edge technology is using a rock on a stick and you're using a rock, it's easier to catch up than if you're using a rock and they already have tree cutters working on nuclear energy.
Related: are you trying to make an argument that a small team or a single person shouldn't try to write a video game in 2022?
I don't want that at all. Firefox lost their spine long ago, and at this point they aren't a Chrome clone, but its pretty close.
I wouldn't be surprised if 80% of the work spent on current webbrowsers is spent on maintaining compatiblity and edge cases.
Also, lightweight browsers have been a dying breed for a while, if ladybird ends up as a more modern alternative to surf and Dillo, I'm already satisfied.
[1] https://surf.suckless.org [2] http://www.netsurf-browser.org
So, the project does _not_ cover rendering web pages and tracking the HTML, CSS and JS standards. Those are separate projects.
What remains, then? I guess that would be the user interface and user experience.
> What remains, then? I guess that would be the user interface and user experience.
To be clear it uses a novel rendering engine (libweb) that the creators of LadyBird develop, it's just that that rendering engine has its own name and exists as a separate library.
This is not just another skin around webkit or chromium.
It's usually "ok" and I can deal with performance issues; but these little niggles just makes you want to not deal with it.
OTOH, if the page is black and not repainting, that might be a graphics issue (in Firefox or the GPU driver). Firefox uses the GPU more than Chrome for rendering and video decoding, which can be great for performance but unfortunately means users can be exposed to GPU driver bugs.
How can you possibly use any web browser without an ad blocker installed?
I don't really see anything wrong with a browser that doesn't fully support every website and every weird example of HTML and CSS that a developer decided to hack together. If a browser supports the standards well and does a pretty good job of rendering modern websites then I'd happily trade failing to render some ancient HTML for a web browser that was truly open and free and doesn't send swathes of data about me back to some corporation.
Web browsers are compatible with old HTML because we choose to make them that way. That is a choice. If the cost of having a free and open browser is a requirement to drop some backwards compatibility with old HTML then I think that's actually quite a simple choice. After all, if people want to view an old website then they can still use Chromium or something. It's not like people have to pick a single browser and stick with it.
Consider from the perspective of the user. They're using chrome and browsing the web - all their favorite sites work. They switch to a new browser and some of the sites stop working correctly. Is it the fault of the browser? or is it the fault of the site?
For most users, if site X works using browser A and breaks using browser B - then it is browser B that is at fault.
This is a lesson that Microsoft learned. https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost... There's no refund involved, but switching back to the old browser is certainly possible.
> This is a system by us, for us, based on the things we like.
Nowadays it runs in almost every home at least in the developed world.
New browser is not inevitable, as the need for free-ish browser is already satisfied.
> They're written from the perspective of the developers
And I get it. A few years back I had an open-source project [1] get users and it was terrible. What had previously been a fun technical exercise became a pain in the ass that felt a lot like actual work. I was relieved when my hardware broke and I had an excuse to archive the project.
But that does create a huge gap that mostly gets filled by commercial interests.
There are a couple of implicit assumptions here that I think should be unpacked;
First, you're assuming that users have favorite websites, and that those sites wouldn't work. As I said in my post, so long as the browser worked with standards compliant modern websites I think that would be fine ... and that would cover 99.9% of user's favorite websites. People don't carry on using old, unmaintained (or even maintained) sites for a particularly long time. I don't believe people return to old websites that haven't been maintained very much. I don't think many users would even notice if their browser stopped supporting things that browser developers consider edge cases that eat up dev time.
Secondly, you're assuming that users who choose a browser like Ladybird wouldn't understand the choice they're making. Of course they would. They could still make that choice though. The idea of trading out-of-standards compatibility for increased privacy is actually really appealing to a lot of people. Hell, a lot of people see out-of-standards compatibility as a bug rather than a feature.
I wonder then why developers test on multiple browsers... Is it because website developers code not to standards per se, but rather how their top two browsers behave?
That being said, I think this is a cool project and since the goal is personal satisfaction and usability, there isn't the pull to satisfy hundreds of thousands of users.
Do they still? I find myself using only Firefox and I haven't had a Chrome-related bug for a loooong time. I do however avoid using latest features and wait until the support is good enough.
I agree with GP, seeing a new hobbyist browser enter the arena is awesome, I need to check it out. I for one don't care if some pages don't display, I can still open them in FF. I just hope that corporation doesn't "happen to it" too soon...
Define which subset of standards would qualify for "standards compliant". Don't forget that quite a few of standards (for example, HN's darlings like bluetooth) are barely drafts.
Both are true almost in my case. Browsers based on older Firefox versions such as Palemoon and Seamonkey don't work with GitLab and Github - which are not my "favorite" websites but rather, are hard to avoid.
> I don't think many users would even notice if their browser stopped supporting things that browser developers consider edge cases that eat up dev time
That's not the issue. The issue is that some websites use the shiny new features - probably through some new shiny framework - that older browsers don't support.
And this is a loser's game for browsers done from scratch, because by the time they implement one missing features, two others have been standardized. That will probably kill Firefox too.
There are also the "Mom's cooking blog" that is running an ancient copy of Wordpress and mom still doesn't understand that <b><i>This is important</b></i> is not formatted correctly. Some browsers are able to handle this, but if you browse it with a "this browser only follows standard compliant html" you may get the entire page in italics or bold.
The article even acknowledges this - https://awesomekling.github.io/Ladybird-a-new-cross-platform...
> Fidelity of modern websites in Ladybird is steadily improving, but you’ll often see lots of layout and compatibility issues. For example, here’s Reddit right now:
> (mangled layout)
We could put Reddit in that list of favorite sites that need to work. And so, is it the fault of reddit or the browser that the page isn't rendering right? As reddit works on other browsers, surely its the browser's fault and not something janky that reddit is doing that the other browsers happen to work with.
And thus my post - if a page works correctly in a different browser but incorrectly on Ladybird, to a user it is always the browser's fault.
If the average user wants to lean to a corporation and use its product because on the reliability it offers then that's fine. While the privacy concerns are there, I don't think it's wrong for a consumer to reach to a company to fulfill their needs.
Product mentality can be a problem on FOSS software. People forget that all of this started as a project made by volunteers because it was fun to them.
Google Chrome is a product. But a new browser doesn't have to be a product. And doesn't have to compete with Chrome.
Linux as a project wasn't created to compete with other Unixes. And it wasn't deemed a failure when it lacked features compared to them 20 years ago
more than that, i don't think this framing does you any good with the segment this browser is targeting, as developers still want others to recognize their (good) work. but that's fine, as there's plenty of time to develop the brand (and yes, brand also exists outside of being a formal product).
There are still loads of cross compatibility issues and performance differences based on certain features of course! But I would say the set of "sites that require weirdness" is going down, not up, every day
Something that will work reliably on every site and support the gazillions of APIs that Chrome provides? Hell no. Even Microsoft threw in the towel on that. Mozilla barely manages it.
You can make a browser that people can use if they really really want to make a point of using your browser. You can't make one that the average person would choose.
What we do need is to make one that you may choose if you want to be able to fully control the system (with fine customization, and interaction with other programs including native codes in C), and is designed for advanced users who have read all of the documents, rather than trying to hide things from the user or believe they know better than what the end user specified, and also it must be one that avoids all of the bad stuff that Google put in.
If the goal is to have something that's usable in limited cases for a self-selected set technically competent enthusiasts, then this is well within reason and not without value.
What I find particularly interesting is that there's an intent to support WebAssembly. That may turn out to be overly ambitious, but if they succeed there's a lot of potential upside to having another WebAssembly engine that's independent from the major browsers.
I don't even have it installed and yet I'm typing this into a website.
This is all true.
On the other hand, operating systems are huge, complicated beasts, hardware compatibility is a constant moving target, and manufacturers won’t uphold compatibility guarantees.
I think that's the irony here, the standards are pretty much set in stone and just incrementally grow. Some old cruft is beyond obsolete though. On the other hand nobody uses most of the bleeding edge APIs. But JS (and the part that is actually in use) is indeed growing at a solid pace.
https://awards.acm.org/software-system/award-winners
For example, Richard Stallman (GNU) and Chris Lattner (LLVM) have both won the software system award, but it seems unlikely for them to be considered for a Turing award.
The web was a bit simpler back then, but still...
I am still sad that xhtml-basic failed, as it was an attempt to create a legacy free spec that might be feasible on embedded devices and phones. It got some adoption and then the iPhone ran full safari and that was the end of that.
I know it isn't a pretty thing to hear, but someone in this comment section has to say it.
Then let's not - death to irregular HTML and let the era of lean browsers begin !
Yes, I know, Martian Headsets (https://www.joelonsoftware.com/2008/03/17/martian-headsets/) - but considering how much of a contemporary web browser is about supporting irregular markup and other grandfathered hacks, deliberately scoping them out is an exciting approach to a possible non-RFC793 compliant future. Won't fly with mass market, but worth exploring by people who don't care about the mass market - and the marketing will come later, once someone with no money and a device to ship figures out how fast such browser can be with ridiculously low resources !
If rendering is usable but not pixel-perfect, then maybe that's fine. Especially when what's being rendered is in categories like "visual fluff" and "needed for advertising".
Who's going to support a browser compatible with stuff from 2011? There are companies like Ekioh that make niche solutions for embedded stuff, but there's nothing open source.
So what? Interested people can have multiple browsers installed.
Not even Firefox is supported by all sites, in which case I dust off Chromium I keep installed for just such situations.
You cannot make a useable, modern engine without such huge investments.
But it’s a cool hobby project.
And the elephant in the room, regardless of adoption it will never be on iphone.
I suggest reading https://justforfunnoreally.dev/ .
They are doing it though; it's "real." Perhaps you are setting goals for them that they are not themselves setting?
> can't compete
You actually can read about their goals on the linked page, though. They are not attempting to "compete" with Chromium.
> iphone
So don't use iPhone, and use a phone that allows you to use the browser engine you want to!
It's obviously the grandparent meant it as not a toy implementation. As in, non computer literate people can use it without complaining about broken sites.
The first 80% will take 10% of time. Now last 20% will take 90% of the time.
There are lots of tiny quasi browsers lying around.
- a developer who uses firefox 99% of the time
There is no winning going down this road for Mozilla other than maybe going the firefox phone route, and we all saw how that went.
I'm afraid there is no route for sustainability for Mozilla at this point.
Apparently they can't but they still do. Typing this from a mozilla browser.
> realistic
Having looked at the project and followed a few serenityos updates videos and if there is one word I would do to describe Andreas Kling and his contributors is that they are realistic about what they do and do not.
Same, but I doubt I'll continue to do so in far future, unless something major changes. Mozilla seems to be inching closer and closer to just another Chromium.
Like Google being forced to remove Chrome integration.
Google has been caught sabotaging browser based on user agent.
In addition to its strong marketing machine.
Not sure I understand this. I mean Chrome drives the feature set and performance, but it's not like Mozilla's switching to Blink/v8 AFAIK. Competition is good. Even the proliferation of WebKit/Blink browsers is fine to me.
I run into the occasional site that does the block-by-user agent of ye olde IE days and an odd niche commercial product used by my company that only works in Chrome or Safari. And honestly, I hit more of the latter that only work in IE and I have to RDP to an old windows server host to use them.
I like the Firefox UI better, and it doesn't get as sluggish as fill-in-your-chrome on my Mac. Now, that's "feel" and not measurable. Safari's a lot snappier, but too sparse for me. To me, browsers and OSes are like shoes. Pick what's comfortable to you. There's not a "right" answer.
Addressing the thread more than you: This project never states it's trying to slay the giant. The whole argument is weird. I'll play with it once I can without compiling (I'm lazier than I used to be). It'll be fun. Probably not a daily driver, but interesting.
And who knows? KHTML was a broken (and oft neglected) toy and now dominates with world via Blink/WebKit. We may all bemoan Ladybird in 20 years.
For now. If they are willing to fire their Servo team, MDN on a whim. Why not fire your engine team and outsource it to Chromium/Blink?
> Pick what's comfortable to you.
That's the issue. I like Firefox, but I have doubts that they'll soon replace their shoes with a model that is two sizes smaller for me.
> And who knows? KHTML was a broken (and oft neglected) toy and now dominates with world via Blink/WebKit. We may all bemoan Ladybird in 20 years.
Only after two big corps (Apple and Google) injected huge amount of cash and developer man hours on it.
you are lost.
maybe if mozilla tried to compete, instead of all the irellevant activities they waste their energy on