However, the thought has also crossed my mind if we're finally seeing fruits of browsers being better standardized on "95%"+ of the popular features -- and if writing a browser today is in fact easier than both writing AND maintaining a browser a decade back. While the web is of course still evolving, it feels more "settled in" than 10-15 years ago.
There's also the factor that past developers didn't have the more complete roadmap set when they initially planned browser design, but now we have huge amounts of web standards already there AND also know how popular they got over time i.e. what to prioritize to support a modern web. One might superficially think there's simply more of everything, but I also think ideas that can be discarded. Just imagine that Internet Explorer had XSLT support, and FTP was common once upon a time!
It would be interesting to hear more about their own thoughts on these topics!
Edit: My bad; XSLT is still commonly supported and by all major browsers but a rarely used feature and stuck in limbo in XSLT 1.0. So it's probably among those things that can be safely omitted for quite some time.
Thanks jug! I'm super proud of all the folks who have worked on it with me :^)
> However, the thought has also crossed my mind if we're finally seeing fruits of browsers being better standardized on "95%"+ of the popular features -- and if writing a browser today is in fact easier than both writing AND maintaining a browser a decade back. While the web is of course still evolving, it feels more "settled in" than 10-15 years ago
This is definitely true! I've worked on browsers on and off since 2006, and it's a very different landscape today. Specs are better than ever and there's a treasure trove of tests available.
If anyone threatens Google position, they can literally throw money at the problem, invent some overcomplicated standard, implement it in Blink, and have the competition chase them. It doesn't need to go through W3C either, if it works in Chrome, all web developers will adopt it and any smaller engine will necessarily have to support it or risk losing whatever little market share they have left.
Having control of the internet now is of greater strategic importance than it was 20-30 years ago when Microsoft was king of the hill.
It is conceptually despicable, especially for devs, but it prevents Google from completely running the show.
Now the European Union is coming after Apple without trying to rein in Google's influence... This seems short-sighted.
I think you have a fundamental misunderstanding of the goals of the EU in this matter. The objective is not to keep both companies on even keel, but it is merely about enforcing existing anti-monopoly laws. If this results in Google gaining a de-facto browser monopoly then those same laws can be used to break up that monopoly when we get to it.
What would be the alternative in your opinion? Allow Apple to break the monopoly laws in hope that they will be able to rein in the growth of the Google browser? What good is a law if it will not be enforced?
At the very least, if the EU really wants to limit the tech giants' grip on the web, it needs to fund independent open source web engine development handsomely; their pockets are more than deep enough and projects like ladybird and servo can use the extra resources.
That's the problem. They should go after Google too. Honestly all of these megacorporations should be broken up.
This is why we, tech nerds who understand the problem, must resist monopolies: object to using such APIs. Chrome wouldn't be in quite this position if, instead of embracing the monopolist, more techies had warned their non-techy friends and family away from it, like they did with IE.
They didn't listen or care.
Becoming part of it isn't hard either, if you test software either as a SW engineer on a team or as a full time tester it might actually save you some time :
- If you use Mac, test in Safari first. On any other platform, install Firefox (or the Debian version, or Librewolf) and use it as the first tool to test applications.
- If it doesn't work (and the customer hasn't very explicitly said they absolutely only care about Chrome or IE^CEdge) report it as a bug.
I mean, seriously, who would have accepted a feature that only worked in IE 6?
---------
OK, some people might say: but IE 6 was an old and outdated browser, you cannot compare IE 6, or any version of IE for that matter to Chrome.
Or one might say: Chrome has already won, your idealism is appreciated, but you are too late.
Well, here is the thing: IE was at one point in almost the exact same postition as Chrome is now:
- biggest browser by far
- endorsed (or even enforced) by IT
- lots of features only worked in IE. (I remember one particular customer who seemed to be obsessed with security to the point were we had to keep a VM with Windows XP and IE 8 around with both Active X and Java Applets enabled to sign into them. This was around 2014..! Yes, if you find this notion of security absolutely ridiculous then we agree.)
---------
OK, one key difference:
Back in 2006 when I started fighting IE we had Mozilla on our side. Firefox was innovating like crazy. We had extensions that let us embed IE in a tab to render certain web sites. We could automatically archive a full website for offline access (full rewrite of links so they worked on our copy was included). Full developer tools that everyone knows from every browser these days started out as just an extension to Firefox, named Firebug IIRC.
Today, while I understand that the extension API had to be reigned in before a disaster happened, it went way to far and today we cannot even get a function in the API to programmatically remove the top tab bar when we add a tab bar on the side. And not only that, but if someone asks about that particular issue, someone will come and hush and hide the comment.
So godspeed to Ladybird devs and Orion devs, Librewolf devs and actually even Safari devs and everyone else who challenges the current monopoly!
Elsewhere in this comment section someone literally said they use Chrome because Reddit does not work in Firefox, which is utter nonsense.
Doesn't work since the corporation can just fire you and replace you with someone who has no such objections.
It's almost as if backwards-compatibility is seen as something to be avoided in certain web dev communities. Lots of "drop support" and "moving forward", zero consideration for simplicity and interoperability.
How is Instagram dependent on whatever Google decides? How is Facebook, TikTok and Snapchat? How are streaming platforms dependent on Chrome? Big businesses with a ton of users easily launch their own apps to sidestep Chrome. And if Chrome makes fundamental breaks of HTML and CSS, then most of the internet is going to be broken in Chrome.
If your bank website stops working in Chrome, they're not going to change their website. They're going to ask you to install another browser.
A decade back, maybe... but decades ago the number of things you had to support was just so much smaller even if you only looked at HTML! Consider https://www.ietf.org/rfc/rfc1866.txt vs https://html.spec.whatwg.org/multipage/
Writing a web browser was hard in the old days for a lot of reasons, but trying to write a full-featured one today is a huge undertaking and we're still adding a bunch of new features all the time and expecting browsers to support them
I thought, oh, that's not so bad. Then I realized what I was looking at was a 10 page index.
Probably not. Yeah we have web standards and some idea of how to architect it, but the total set of APIs and HTML/CSS features a browser supports is probably changing faster than the Ladybird team can actively implement it. The API surface is just impossibly large compared to 10 or 15 years ago. Look at all of these: https://developer.mozilla.org/en-US/docs/Web/API
And that doesn't include the updates to Javascript, MathML, SVG, HTTP-based security features, encryption or media support.
- standards are really detailed at this point and a large reason why the three remaining browser engines (chromium, safari, and firefox) largely do exactly the same things.
- There are a lot of open source components. It's not necessary to start from scratch on things like wasm and javascript interpreters for example. There are some nice low level graphics libraries out there as well. And of course things like Rust are now pretty mature and there's a lot of rust code out there that does stuff that a browser would need.
That being said, it's one hell of a hobby project to take on and I don't see much economical value in an independent implementation of something provided by free by three independent browsers already; two of which are open source.
Which begs the question: why?!? Is there qualitative argument here of doing the exact same thing but somehow better?
The main argument for doing it is because it is fun, just as with SerenityOS. Having alternative implementations is never a bad thing for web diversity though.
1. https://www.webkit.org/blog/14633/get-ready-for-interop-2024...
The idea of being able to ship an XML template with basic logic like for loops alongside the actual XML data source is really unique today. If people cared to use XML at all, that really does cover quite a few use cases that we current reach for JSON + client JS today.
I've been watching the development videos for a year or two, and the speed that this has progressed in such a short time is unbelievable. Now they have multiple volunteers and enough sponsorship to pay more than one developer, it's pretty exciting what could happen here!
He did not even use the C++ standard library, when he says "from scratch" it includes his own string class, for better or worse, which is fine since it's "just for fun", "to learn" etc. And just when you think a library and an OS are crazy, he announced a browser and a JavaScript engine on top. Then a JIT compiler, then Jakt, their own novel programming language, because neither C++ nor Rust is what makes him perfectly happy.
More than his expertise I admire his modesty and kindness - unlike Linus etc. he is not full of himself, and each of his videos gives lots of credit name by name of who did what. A perfect role model for open source.
Also, you would think that having to implement EVERYTHING themselves ( they are making their own image decoders as an example -- inclding SVG ) would slow them down. However, as it is written in a mono-repo from soup to nuts, this allows them to very rapidly add support throughout the stack. They do not have any of the endless conversation and arguing that happens between components in Open Source. They do not have to work around things missing upstream. If they need something, they add it.
(At PARC we avoided) putting any externally controlled system, in- house or out, on one's critical path. ... Thus, virtually all the PARC hardware ... and software ... were completely built inhouse by these few dozen researchers.
This sounds disastrous, (because) in programming there is a widespread first order theory that one shouldn't build one's own tools, languages, and especially operating systems. This is true --- an incredible amount of time and energy has gone down these ratholes. On the second hand, if you can build your own tools, languages, and operating systems you absolutely should because the leverage that can be obtained (and often the time not wasted in trying to fix other people's not quite right tools) can be incredible.
For Ardour, we feel entirely free to just bring an upstream library into our source tree if we need to. And we also have our dependency stack builder that configures and occasionally patches upstream libraries to be just the way we need them. We do not wait for upstream adoption of our patches.
Most recently, for example, we became aware of impending moves by various Linux distros to remove GTK2, which we rely on. Even though we don't support distro builds, we want Linux maintainers to still be able to build the software, so we just merged GTK2 into our source tree.
This idea that using a 3rd party library becomes some sort of constraint is very, very far from reflecting universal truth. If we need to hack a 3rd party lib to make it do what we need, we just do it. Meanwhile, we get all the benefits of that lib. Ardour depends on about 86 libraries - we would be insane to rewrite all that functionality from scratch.
Considering the vast amount of exploits that continually comes out of media decoders everywhere, this basically guarantees I will never ever use this browser.
I can't imagine how it can be for worse; the standard C++ string library is awful. It makes perfect sense that a super-talented C++ dev would make something better if they have the energy and time.
TBH Jakt defaults to reference counting, which makes it compete more with Swift and Go rather than C/C++/Rust.
That being said I've seen a few people here suggest it's easier to use rust's Rc and Box for everything and treat it like Haskell or Scala. So it might not be so different in practice.
Would love to read more details about this, or have a link to a video where he describes and follows the process.
It’s still really impressive but he is not the new kid in town when we talk about developing browsers.
Ladybird also comes with their LibJS runtime, which has good coverage of the JS standards and even manages to implement some new features before the big browsers all get to it.
I would consider contributing but development is coordinated on Discord and I avoid proprietary software… [1]. It's a shame. Can't blame them though, they are doing it for fun.
[1] https://drewdevault.com/2022/03/29/free-software-free-infras...
He claims that authors promoting their open source software on channels like Twitter, Hacker news, LinkedIn or even Github is "selfish and unethical outright":
> Many projects choose to prioritize access to the established audience that large commercial platforms provide, in order to maximize their odds of becoming popular, and enjoying some of the knock-on effects of that popularity, such as more contributions.
> To me, this is selfish and unethical outright, though you may have different ethical standards.
I find Zealotry like this tough, and promotes a definition of FOSS that feels hostile against those who want to simply build something cool, and share it with the world - (or even more controversially, make money from FOSS).
Given such a strong view, it's really surprising that he then posts stuff like "Can I be on your podcast"[1] to try to promote Hare - his programming language.
He didn't ask for podcasts that aren't distributed on platforms like Spotify or Apple Podcasts. In fact - he's right there with several appearances promoting Hare.
That feels like hypocrisy.
[1]: https://drewdevault.com/2023/11/09/Can-I-be-on-your-podcast....
I doubt Drew is against making money from FOSS. He actually runs a business (businesses?) around FOSS.
I don't think it's controversial to make money from FOSS anymore. FOSDEM just happened, many companies making money from FOSS were there, and they are liked. Some specific ways of making money might be less appreciated, but not the whole concept.
People are not silly, they know money helps develop (free) software and also many would love to be paid to work on free software.
> That feels like hypocrisy.
No, that feels like living in an imperfect world and trying to make it better. To improve something, you generally need to be part of it and its imperfections.
Right, but that's the hypocrisy, no? He's being rude about people who use github, or post an article on HN, but surely most of those guys are doing just the above. When is it OK to use non-free software and when not? Maybe there's a dividing line you can draw about "platforms".
Fair call.
Isn't this the exact opposite of zealotry? Zealotry is imposing your ethical standards on others.
But after reading that article, I was definitely left feeling judged because I choose to do exactly the things he's talking about, for exactly the reasons he's suggesting. Maybe that's on me, but I certainly felt his standards imposed on me, disclaimer or not.
Also, given the conviction with which he argues with in the article, that disclaimer feels a little weak -- kinda like when someone says "No offence, but... <very offensive thing>".
It’s even more specific than that though isn’t it? A fanatical belief in a single cause to the exclusion of all else.
Requiring the use of priorietary software to access and discuss it is a problem, and requiring complicated software is not that good either, but it is also possible to use open protocols with multiple software.
(In the specific case of GitHub, they had previously allow viewing files without needing JavaScripts; that has changed now, but the data is included as JSON data within the HTML file, so I was able to write my own much shorter script to substitute for theirs. Of course, that does not help much if you do not have that script, but you can still use the git protocol to download the files, or to use the API (the form for creating a new repository has stopped working on my computer, but I have been able to do so by using the API).)
One thing they do not mention is NNTP, which I think can be a helpful alternative than mailing lists (although you can also have multiple interfaces for the same messages).
Just because you don't necessarily have a solid counterargument to his convictions, doesn't make anything he said "over the top." That's just a disingenuous dismissive attitude towards what is clearly a post on his personal website that builds on established and clearly communicated values (freedom of software.)
There's absolutely nothing in that article that criticises making and sharing free software. It is clearly criticising using a certain type of medium to share free software. If that's zealotry, then any argument against doing anything is, too.
I wager that this hostility felt by these views are projections of guilt, devoid of criticisms towards said views or values. In fact, I'd argue that having no opposition towards a certain ethos then opposing it for frivolous reasons such as personal offence out of a public blog post is as close to hypocrisy as one can get.
Well, it's a tough call. I agree that communicating trough them strengthens them because of the network effect. But if you never reach "unaware" people with your ideas where they are (on those platforms, that is), you are not really helping either.
So it's not clear using those platforms only hurts. It could be a net win, all effects taken in account.
In any case, I agree that you should not force people to use these platforms to follow you.
That would correspond to the NonFreeNet antifeature in F-Droid [1].
They could update the code they released for good measure though [2].
Running Discord is on another level for me. I would consider accessing a Discord using a Matrix or IRC bridge.
" 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. "
Nice take.
It's a huge shame that there are no nightly builds of ladybird to try out but I assume that's because they just don't want the bug reports (if everything doesn't work it's pointless getting random bugs filed).
(agreed, it is a credible alternative to Blink's dominance)
> it is a credible alternative to Blink's dominance
WebKit -> Chrome
Bun -> Node/Deno
It is good to have competitions in Ecmascript landscape, even though it is currently a duopoly, but with introduction of AWS LLRT, and QuickJS, maybe small player can even have a say so in this. It would be good the big corp comply to the Ecmascript and Web API standard.
And for me there is the question of canvas, threejs, react-three-fiber and react-drei. Is it possible that - especially with mobile - that canvas could be used to provide a better user experience? Who writes games for mobile with a HTML and CSS? Not saying it can't be done, but I wonder how many web sites require HTML & CSS instead of canvas?
A big barrier to browser competition is needing to implement obsolete and outdated technology. Why not just a minimum set of html and canvas.
Just thinking. Your thoughts?
I don't think it'd help much.
- There's been a Cambrian Explosion in the web API surface era. The modern stuff dwarfs the old stuff. Dropping support for older/less frequently used mechanisms does not shed as much code and complexity as you might think.
- Beyond mere surface area, the level of engineering required to implement a sort of "Restricted Core Profile" to a competitive degree (e.g. performance) is quite high, if you're talking true blank-canvas development.
- There's a long tail effect in full force, where even mostly-modern websites will use and rely on some cruft here and there, making very few pages work in your supposed browser.
That is to say, it's still a very large, tough project. But the FOSS community has achieved quite a few large, tough projects; it's not the same as saying that it's not possible, of course.
Please stop following Google who is trying to turn the Web into an OS for their own ad-fueled, user-tracking profit.
If you want to make connected (or not) apps, there's already the Internet and OSes for that. And you don't have to make your interface worse by fighting with the browser about it ! (Especially important for games and other "deep" software.)
The whole point of the Web is to be an hyperlinked collection of documents, sometimes multimedia, with maybe a little bit of interactivity with some forms and scripts sprinkled on that.
(As an example to how incongruous the current situation is, imagine a parallel universe where it was Adobe rather than Google that got humongous, and it was the JavaScript in PDFs that was (ab)used instead to make apps.)
Interview with Andreas Kling of Serenity OS (2022) - https://news.ycombinator.com/item?id=39286638 - Feb 2024 (134 comments)
Related to OP:
Ladybird browser update (July 2023) [video] - https://news.ycombinator.com/item?id=36939402 - July 2023 (1 comment)
Chat with Andreas Kling about Ladybird and developing a browser engine - https://news.ycombinator.com/item?id=36620450 - July 2023 (65 comments)
Shopify Sponsored Ladybird Browser - https://news.ycombinator.com/item?id=36502583 - June 2023 (1 comment)
I have received a $100k sponsorship for Ladybird browser - https://news.ycombinator.com/item?id=36377805 - June 2023 (166 comments)
Early stages of Google Docs support in the Ladybird browser - https://news.ycombinator.com/item?id=33511831 - Nov 2022 (84 comments)
Github.com on Ladybird, new browser with JavaScript/CSS/SVG engines from scratch - https://news.ycombinator.com/item?id=33273785 - Oct 2022 (1 comment)
Ladybird: A new cross-platform browser project - https://news.ycombinator.com/item?id=32809126 - Sept 2022 (473 comments)
Ladybird: A truly new Web Browser comes to Linux - https://news.ycombinator.com/item?id=32014061 - July 2022 (8 comments)
Ladybird Web Browser - https://news.ycombinator.com/item?id=31987506 - July 2022 (2 comments)
Ladybird Web Browser – SerenityOS LibWeb Engine on Linux - https://news.ycombinator.com/item?id=31976579 - July 2022 (2 comments)
Google, on the other hand, provides a web engine with a nice license and reasonable ergonomics that can be used for all sorts of projects. This allows them to execute an EEE strategy:
Embed (into all kinds of projects)
Enforce (moving-target standards of your own making)
Exhaust (any potential competitor/resources that needs to chase after them)
This is why I wish we can get an alternative, OSS, easy-to-embed engine soon.
It's (IMO) very pronounced and hard to avoid on Mastodon.
Discussion: https://news.ycombinator.com/item?id=36502433 (246 points | 7 months ago | 66 comments)
Step 2: ????
Step 3: Profit.
If the language becomes mature enough, and there are people interested enough in doing that porting, it will likely happen.
I think their C++ code is also constrained enough due to the use of their custom standard library that it would be possible to write a transpiler from C++ to Jakt.
I will note though that development on the Jakt language has slowed down significantly. After extremely fast initial development, most Serenity developers no longer contribute to the language. Because everything is done exclusively when the contributors feel like it, development happens in bursts. And right now, Andreas is not actively working on Jakt, so very little improvement is happening there. The main developer working on the language is Ali Mohammadpur, but I don't think he is currently being paid to work on the project. So his contributions are also inconsistent.
What are the chances that this could become a real world usable replacement for chrome or Firefox witching the next couple of years?
I hate what a small group of lazy front-end people have done to our world...
Which ones? I have always exclusively used Firefox and rarely have issues.
The real problem is that firefox is tier 2 support or not even. It's a small percent of users so it's a cost/benefit for these businesses.
A recent issue I had was buying tickets from air india. You can't with firefox... it'll hang at a certain point. Switch to chrome... works perfectly.
The web is dead. It's basically client/server nowadays. Firefox is still my main browser, but I keep chrome/chromium around when I need it.
You can report websites that don’t work in Firefox on webcompat.com and Mozilla web developers will test and diagnose the problem. When possible, they attempt to reach web developers at the site (using personal contacts or referrals when official channels aren’t working) to share the bug report and a suggested fix.
In other cases, Firefox can include a site intervention script to patch the site or send a different browser User-Agent string to make it work.
I've never had issues loading/using reddit from any browser aside from their annoying "use our app" popups.
you mean minor aesthetics differences or functionality? I just use firefox, I don't even have chrome, and everything works. And I use mainstream web, nothing too niche.
web should be able to be viewed in any browser and get the same document.
If there are sites that work on Chrome but not Firefox, it just seems to me that either:
- Chrome or Firefox must be breaking web standards
- Web standards must be unspecified for that use case
I have no idea the fix though, the web is so massively complex now, that I don't even know what specifying standards for every use case would involve.
I've seen them putting all effort on eye-candy while ignoring that the page only works on "retina" display and then only on Safari.
What happens when you put a percentage height on a row in a table. What happens when an element has a margin that doesn’t fit in its parent. How does adding display: flex effect how text is laid out inside an element.
These are things that Gecko and WebKit/Blink handle differently. Some of them are defined in the spec and have tracking bugs, but some of them just aren’t addressed. I don’t think it’s maliciousness or laziness on anyone’s part, but the web is too complicated for there to be multiple perfectly compatible rendering engines.
This seems like hyperbole, frankly.
Seems like they're involved in many browser technologies, and other technologies.
It's a religious disagreement.
There are tools which are much more user-friendly than IRC (and even Discord, in some aspects), such as Matrix or Zulip. They easily enough could’ve been more pragmatic picking those instead.
> 2023-06-28: Welcoming Shopify as a Ladybird sponsor
Hmm, no new sponsor since august 2023. Not a good sign. I cheer for them to succeed though!
> #!/usr/bin/env bash
> cd ${HOME}/serenity && ./Meta/serenity.sh run lagom ladybird
I guess you could create a .desktop file that invokes the script, or just the "serenity.sh" script directly.
I also find it curious that they are sponsored by a real estate site (:
"Where are the ISO images?
There are no ISO images. This project does not cater to non-technical users."
This comes off as really abrasive. Wanting an ISO image to quickly test this out is not an indicator of someones technical ability.
I'm sorry I don't want to boot up a linux vm, install a lot of development packages and then build my own boot image just to try this out.
I think that’s often the point with OSS projects, especially those that have an ambitious long term vision. If you “don’t want to boot up a Linux VM” etc, they don’t want you. It’s a filter. It means their concern at the moment is the coherence of their community, not increasing their numbers. It’s the same reason projects like this often have absurdly ugly logos, and landing pages that don’t work on mobile. Fast growth is often seen as destructive when you already have a nice little community vibe. It’s essential to maintain that vibe carefully if you have a long term goal of building something important.
Anyone can set up a pipeline to distribute ISO images though, it's open source.
What if the goal is to keep the relevant communication channels populated exclusively with technical users?
I've seen F/OSS projects completely overrun with support requests from non-technical users. Is it wrong to want to avoid this from the start?
If it's just for fun, we need to temper our expectations accordingly.
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones.Is it really important to answer this question? A lot of widely used software started as "just for fun", e.g. Linux or OpenSSL.
I think tempering our expectations should be the default for Open Source software.
And that having expectations as a end user is still a bit premature.
You can expect the project to move somewhat fast.
Is this true?
I guess I'll stick to links and/or lynx and/or netsurf.
So, they stay on the bleeding edge if C++ compilers. So in terms of core language features, they are C++20-something.
But, everything is written from scratch, including the standard library.
As such, the code is a lot cleaner than a typical C++ codebase.