Copyleft is the true path
Hey it could be worse. It could be the completely and utterly worthless MIT license.
As long as we're filling out our fantasy browser brackets, I'm hoping that the Servo engine and browser/s can become viable. Servo was started at Mozilla as a web rendering engine only, before they laid off the whole team and the Linux Foundation took over the project. Basically revived from the dead in 2023, the current project is working on an engine and a demonstration browser that uses it. It's years away from being a usable replacement for current browsers and the engine is certainly the main project. A separate browser which employs Servo as its engine is a more likely future than an actual Servo browser.
Still, you can download a demo build of the official browser from the web site. Currently, it's only usable for very simple web sites. Even Lemmy/Mbin display is a little broken, and I think of those as fairly basic. YouTube is out of the question. One of the sites that's been used to demonstrate its capability to render web pages is the web site for Space Jam (1996) if that gives you any idea of its current state.
Well… according to ladybird, at this point they are more conformant than servo in web standards…
does the ability to view websites other than Space Jam '96 really improve your life?
I will give you that
I won’t give you that. Ladybird is already quite a bit more capable than that. The JavaScript engine is not nearly fast enough but more and more real websites just work.
Honest question, since I have no clue about web/browser engines other than being able to maybe name 4-5 of them (Ladybird, Servo, Webkit, Gecko, … shit, what was Chromium’s called again?):
What makes browsers/browser engines so difficult that they need millions upon millions of LOC?
Naively thinking, it’s “just” XML + CSS + JS, right? (Edit: and then the networking stack/hyperlinks)
So what am I missing? (Since I’m obviously either forgetting something and/or underestimating how difficult engines for the aforementioned three are to build…)
JavaScript alone is not a simple beast. It needs to be optimized to deal with modern JavaScript web apps so it needs JIT, it also needs sandboxing, and all of the standard web APIs it has to implement. All of this also needs to be robust. Browsers ingest the majority of what people see on the Internet and they have to handle every single edge case gracefully. Robust software is actually incredibly difficult and good error handling often adds a lot more code complexity. Security in a browser is also not easy, you're parsing a bunch of different untrusted HTML, CSS, and JavaScript. You're also executing untrusted code.
Then there is the monster that is CSS and layout. I can't imagine being the people that have to write code dealing with that it'd drive me crazy.
Then there are all of the image formats, HTML5 canvases, videos, PDFs, etc. These all have to be parsed safely and displayed correctly as well.
There is also the entire HTTP spec that I didn't even think to bring up. Yikes is that a monster too, you have to support all versions. Then there is all of that networking state and TLS + PKI.
There is likely so much that I'm still leaving out, like how all of this will also be cross platform and sometimes even cross architecture.
Adding on to this, while this article is fast approaching 20 years old, it gets into the quagmire that is web standards and how ~10 (now ~30) years of untrained amateurs (and/or professionals) doing their own interpretations of what the web standards mean--plus another decade or so before that in which there were no standards--has led to a situation of browsers needing to gracefully handle millions of contradictory instructions coming from different authors' web sites.
Here's a bonus: the W3C standards page. Try scrolling down it.
Thanks for these explanations, that makes a lot more sense now. I didn’t even think to consider browsers might be using something else than an off-the-shelf implementation for image/other file formats…, lol
Sorry I didn't mean to imply they don't use shared libs, they definitely do, but they have to integrate them into the larger system still and put consistent interfaces over them.
What makes implementation so difficult is that browsers cannot just "work", they need to be correct in what they do. And support all websites.
The standards of HTML, CSS and JS have developed over a long time, not only is the amount of stuff massive, over time sometimes strange features where implemented, that were then used by website developers, and now these all need to be handled correctly by all new browsers.
Emulating and reimplementing existing stuff is often more difficult, especially if you cannot leave out any feature, no matter how obscure, because that might break someone's website.
I'm never going to be one to dog on something before I try it. If it's good and can offer the same or better experience as Firefox then sign me up. The biggest sticking point for me, though, is potentially losing Firefox's massive add-in library. I really like my uBlock Origin and Restore YouTube Dislike and my VPN extension and Metamask and all the other crap I've got there.
I think I could get by with Bitwarden/uBlock as a minimum. Addons like enhancer for youtube are super nice though.
Not only C++ but also Swift, which just feels strange
Why build a new browser in C++ when safer and more modern languages are available?
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 have evaluated a number of alternatives, and will begin incremental adoption of Swift as a successor language, once Swift version 6 is released.
Swift is a pretty fully fledged systems language at this point ... however, it's far from tried and tested for use cases like this and cross platform support is still garbage, so still a pretty questionable choice.
c++ is adding memory safety features… it’s still modern and frequently updated
It's not the C++ that I find strange hah
Everyone knows links2 is the best browser.
#links2gang
I don't understand why everyone wants to jump ship to a whole new browser, when the governance of a browser is the real issue to solve regardless of which browser is supported. A good stewardship model has to be established by people of integrity, technical skill, and funding. From there forking making a hard fork of Firefox is way cheaper and easier than trying to invest in one that's not even finished.
Having more than two browser engines out there would be nice for standardization reasons.
That's not controlled by Google...
It is also important to note that the license is still foss and GPL compatible. In the future they could made it GPL.
Every contributor needs to have signed a CLA in order for the license to be changed
I’m OOTL. Are these actual issues people have with the project?
C++ might not be as memory-safe as Rust, but let’s not pretend a Rust code base wouldn’t be riddled with raw pointers.
BSD tells me the team probably wants Ladybird to become not just a standalone browser but also a new competing base for others to build a browser on top of – a Chromium competitor. Even though BSD wouldn’t force downstream projects to contribute back upstream, they probably would, since that’s far less resource-intensive than maintaining a fork. (Source: me, who works on proprietary software, can’t use GPL stuff, but contributes back to my open-source dependencies.)
BSD tells me the team probably wants Ladybird to become not just a standalone browser but also a new competing base for others to build a browser on top of
with mandatory male pronouns for users in the documentation.
(and no politics allowed!)
note
this issue was resolved eventually by another dev; ~~afaik~~ the lead dev ~~stopped commenting on it after he~~ closed a PR and said people who wanted to remove the docs' implied assumption of users' maleness were "advertising personal politics".
edit: ok, i went and checked, here are the details:
-
https://github.com/SerenityOS/serenity/pull/6814 is the first PR he closed in 2021 saying "This project is not an appropriate arena to advertise your personal politics."
-
https://github.com/SerenityOS/serenity/pull/24648 is the PR where it was eventually fixed, after it was publicized in july 2024
-
here https://xcancel.com/awesomekling/status/1808294414101467564 the day after the fix was merged, he sort-of almost apologized, while also doubling-down on his defense of his decision to reject the first PR 🤡
-
https://en.wikipedia.org/wiki/Ladybird_(web_browser) was later spun out of SerenityOS in to its own project
What is the problem with a BSD-license? I'm not familiar with the different open source licensing models and their problems.
It's not really an issue for the end user. But it's basically made for companies to take advantage of free hobbyist developers without needing to give anything back in return.
So if you're the kind of person who runs to foss software to get away from corporate tech bull, having a license that benefits companies more than users just kinda feels scummy.
Remember the Minix operating system that runs on your processors ? It's a proprietary spyware now because of BSD licencing
Basically, it allows you to steal all the code and use it in your closed-source programs, giving a green light for corporations to use open-source code without giving anything back.
GPL doesn't allow that, forcing you to open-source anything that was produced using other GPL-licensed code. That's, for example, why so much of Linux software is open-source - it commonly relies on various dependencies that are GPL-licensed, so there is no other legal option other than sharing the code as well.
It's not "stealing". It's explicitly allowed. Using IP according to its licence is the opposite of stealing.
Unrelated to this exact discussion, but like, the law does not dictate morality nor the other way around. If I believe that using someone's hard work to make a profit without paying them or contributing some work of your own is morally wrong, I can reasonably say it's 'stealing'. Even if the person who did the work fully understands that the license under which the work was released makes it not actually stealing.
I am judging someone as a thief, not legally but morally.
I never stated what was or wasn't moral; I stated what was legal, and stealing is a legalistic term. How can you enforce property ownership, intellectual or material, without law, and legal rights to property?
For the record, I want the abolition of property and of law. I do not believe stealing to be wrong. "Stealing" can only be a legal category if you believe it to be morally neutral.
That definition also makes no sense. If I gift you a laptop I worked hard to afford and you use it, no sane person would call that stealing, even to those to whom stealing is a moral category. That is the same thing as someone using MIT code according to the licence. The original coder gifted the code to the public and said "I explicitly want you to use this however you like, under the sole condition that you credit me." Just like if I gifted you a laptop I'd be saying "I want you to use this laptop however you like."
linuxmemes
Hint: :q!
Sister communities:
Community rules (click to expand)
1. Follow the site-wide rules
- Instance-wide TOS: https://legal.lemmy.world/tos/
- Lemmy code of conduct: https://join-lemmy.org/docs/code_of_conduct.html
2. Be civil
- Understand the difference between a joke and an insult.
- Do not harrass or attack users for any reason. This includes using blanket terms, like "every user of thing".
- Don't get baited into back-and-forth insults. We are not animals.
- Leave remarks of "peasantry" to the PCMR community. If you dislike an OS/service/application, attack the thing you dislike, not the individuals who use it. Some people may not have a choice.
- Bigotry will not be tolerated.
3. Post Linux-related content
- Including Unix and BSD.
- Non-Linux content is acceptable as long as it makes a reference to Linux. For example, the poorly made mockery of
sudo
in Windows. - No porn, no politics, no trolling or ragebaiting.
4. No recent reposts
- Everybody uses Arch btw, can't quit Vim, <loves/tolerates/hates> systemd, and wants to interject for a moment. You can stop now.
5. 🇬🇧 Language/язык/Sprache
- This is primarily an English-speaking community. 🇬🇧🇦🇺🇺🇸
- Comments written in other languages are allowed.
- The substance of a post should be comprehensible for people who only speak English.
- Titles and post bodies written in other languages will be allowed, but only as long as the above rule is observed.
6. (NEW!) Regarding public figures
We all have our opinions, and certain public figures can be divisive. Keep in mind that this is a community for memes and light-hearted fun, not for airing grievances or leveling accusations. - Keep discussions polite and free of disparagement.
- We are never in possession of all of the facts. Defamatory comments will not be tolerated.
- Discussions that get too heated will be locked and offending comments removed.
Please report posts and comments that break these rules!
Important: never execute code or follow advice that you don't understand or can't verify, especially here. The word of the day is credibility. This is a meme community -- even the most helpful comments might just be shitposts that can damage your system. Be aware, be smart, don't remove France.