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…
Servo is still making quick progress though.
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.
Because they want to. What other reason would one need?
Okay, you do you. But it still doesn’t make sense to try to rally everyone else behind a whole new unfinished browser, when an otherwise very good one just needs new leadership.
i do not control mozilla leadership or their mishandling my data. the most influence i can exert as an individual is by not being a willing participant to their mischief. i’ll be happy to come back if the leadership changes and i get some guarantees.
Absolutely untrue. Firefox is entirely open-source. Forks of it already exist. The only thing that’s needed is for people who are willing and capable, to create a more dedicated stewardship model and the rest of us to get behind the hard fork they release. This is exactly the kind of thing software freedom is meant to allow us to do.
It is a debatable point which would be easier:
1 - get Ladybird to the point it is competitive
2 - establish a viable and popular alternative dev and governance infrastructure capable of stewarding and evolving Firefox
The fact that people want to try option one is far from crazy.
The problem with your scenario is that problem 1 is problem 1 and 2 for Ladybird, whereas Firefox is already a mature code base.
Having more than two browser engines out there would be nice for standardization reasons.
There are more than two browser engines. But it’s important to emphasize supporting Firefox’s engine because we’re already at threat of there being only one dominant engine.
it is also written from the ground up wich means it also has its own engine
explaining the difference between a Toyota and a Honda
God forbid someone on the internet has less niche knowledge about browser engines than you.
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.
that is actually really goofy, didn’t know about that
deleted by creator
c++ is adding memory safety features… it’s still modern and frequently updated
It’s not the C++ that I find strange hah
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.)
well, its possible to check if a rust equivalent would be riddled with raw pointers: just check the Servo code base.
personally I think its a good thing to have another browser implementation, regardless of specific choices they make about language or license
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.
I’m curious. Why do you believe the last statement to be true?
Did you paste the wrong link?
I don’t know if it’s riddled with it or not, but what I (think to) know is that one of Rust’s goal is to minimize them. No need for raw pointers when handling lists and buffers most of the time.
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
Don’t have time to factcheck so going to take your word for it. Interesting bit of knowledge! Honestly wouldn’t have thought that. How else are Chrome, Edge, Brave, Arc, Vivaldi and co getting away with building proprietary layers on top of a copyleft dependency?
I’m no legal expert. All I know is that when I’m picking dependencies at work, if it’s copyleft, I leave it on the table. I love the spirit of GPL, but I don’t love the idea of failing an audit by potential investors because of avoidable liabilities.
The three currently-maintained engines which (at their feature intersection) effectively define what “the web” is today are Mozilla’s Gecko, Apple’s WebKit, and Google’s Blink.
The latter two are both descended from KHTML, which came from the Konquerer browser which was first released as part of KDE 2.0 in 2000, and thus both are LGPL licensed.
After having their own proprietary engine for over two decades, Microsoft stopped developing it and switched to Google’s fork of Apple’s fork of KDE’s free software web engine.
Probably Windows will replace its kernel with Linux eventually too, for better or worse :)
How else are Chrome, Edge, Brave, Arc, Vivaldi and co getting away with building proprietary layers on top of a copyleft dependency?
They’re allowed to because the LGPL (unlike the normal GPL) is a weak copyleft license.
Thanks for teaching me something new!
So Chromium is based on Blink, which is LGPL – a less viral GPL. Hence, it can serve as a dependency in closed-source software.
As to the shared heritage of these well-established projects – I don’t know how else to interpret it other than a testament to the complexity of building a decent browser engine.
Btw, quick shout out to Orion, a rare WebKit browser by the makers of Kagi that’s apparently coming to Linux as well. I’m a monthly supporter. Even though I still mostly use Vivaldi, it’s been coming along really nicely. Proprietary software but idc. I appreciate their unspoken mission statement: pay or be the product. (No-one should be a product, obviously, but that’s capitalism.)
What about safari? Doesn’t it still use webkit?
yep. (see my other comment in this thread)
If you cant tell from just looking at the relative successes of BSD and linux that copyleft licenses are better than I dont know how to convince you of anything
-
using the Linux / BSD situation as a benchmark ignores a lot of history. I would argue that the BSD lawsuit was the deciding factor.
-
the Linux project is not representative of a typical GPL code base. It rejected GPL3 and features a rather significant exception clause that deviates from GPL2.
Clang vs GCC is probably a better metric for the role of the license in viability and popularity. Or maybe Postgres vs MySQL.
Why has nothing GPL replaced Xorg or Mesa or now Wayland?
Why hasn’t the MIT or Apache license held Rust back from being so popular? Why would Ubuntu be moving away from GNU Coreutils (GPL) to uutils (MIT)? How did Pipewire (MiT) replace PulseAiudio (LGPL)? How did Docker or Kubernetes win (both Apache)? Actually, what non-Red Hat GPL software has dominated a category in the past 10 years?
If the GPL is the obvious reason for the popularity of Linux, why would RedoxOS choose MIT?
This is not an anti-GPL rant.
My point is that choosing the GPL (or not) does not correlate as obviously with project success as you make it sound. It is an opinion that would require a lot more evidence.
-
I don’t like that “C++ isn’t memory safe”. It is. Users of that language are usually just not experienced or educated enough and therefore more mistakes happen.
I agree though, that other languages like Rust or Java can make it easier to prevent such mistakes.
In my experience, using smart pointers alone already solves 90% of memory issues I have to deal with. C++ improved a lot in that regard over the decades.
I agree that experienced users can write code that leaks less than in C, leaving aside the bottomless pit of despair that is undefined behaviour. But the the language isn’t memory safe, it doesn’t even prevent you from returning a reference to a local or helpnwitg iterator invalidation. you don’t have to jump through any hoops to enable making that mistake.
If a language prevents you from doing stuff like that, this always comes at a cost, since it has to do the work for you, almost always. This is additional overhead you can get rid of in C++ and therefore gain a lot of performance. But that again comes with more responsibility on the developer’s side and you might need to implement appropriate checks yourself where needed.
Every source I’ve seen has shown rust and c++ to be very similar in terms of performance.
It’s not just about runtime performance, but also about coding flexibility, and for example also reduction of boilerplate.
Ah yes, I love how C++ is has so little boilerplate. Sometimes I can even write several statements in a row without any!
You’ve missed the context. There are occasions in Rust where you have to use more boilerplate code which you wouldn’t have to implement in C++ to that extent.
But saying that C++ is free of boilerplate is of course ridiculous, if you are not able to heavily leverage templates, CRTPs, macros and alike.
sure, maybe, but performance doesn’t matter for deciding if a language is memory-safe or not. And C++ isn’t memory-safe by any commonly used interpretation of that word.
You may of course decide that the downsides of memory-safety aren’t worth it for your use-case, that is a separate issue
I think it boils down, how we define “memory safe”. C++ is perfectly memory safe, if you know what you’re doing. A lot of people don’t. Which is why Rust was born. that doesn’t make C++ a memory-unsafe language. It just demands more responsibility from the user. A design philosophy that comes with a lot more flexibility than Rust can offer.
Which is fine. Both languages have their perks. But saying C++ isn’t memory safe, while Rust is, is in my opinion just plainly wrong. Besides, with “unsafe” Rust inherently already the door for memory issues.
Modern C++ practises and dev patterns can handle most memory issues in C++ pretty easily. Consider smart pointers for example, or RAII.
It’s not the language’s fault if it is used wrong.
https://en.m.wikipedia.org/wiki/Memory_safety
https://www.memorysafety.org/docs/memory-safety/
https://media.defense.gov/2022/Nov/10/2003112742/-1/-1/0/CSI_SOFTWARE_MEMORY_SAFETY.PDF
https://www.cisa.gov/news-events/news/urgent-need-memory-safety-software-products
why do you want to redefine what the term means? why does it hurt to admit that C++ is not memory safe? It’s not about your weakness.
You’re right. Thanks for the links. Although I still think that C++ provides the tools to enable memory-safe programming, I guess the lack of enforcement makes it inherently memory-unsafe.
Point taken, I’ll stop saying that.
If the standard is “you know what you’re doing and never make mistakes”, then all languages are memory safe. All you’re doing is arguing against memory safety as a concept by redefining the term in such a way that it becomes meaningless.
Yupp. I’ve changed my stance on this.
Since C++ doesn’t enforce memory safe programming paradigms, it is inherently memory unsafe.
Which language would you say is not memory safe then? Is there any serious language out there where you should expect memory issues if you don’t make any mistakes?
No. I changed my mind just very recently throughout this discussion.
I agree now that the lack of enforcement of memory safe techniques in C++ makes it inherently memory-unsafe.
That doesn’t change the fact though that it’s possible to write memory safe code, if you know what you’re doing, use the right patterns, classes etc…
I’m very experienced with C++and I still feel like I’m juggling chainsaws every time I use it. And I’ve personally run into into things like use after free errors while working in Chromium. It’s a massive codebase full of multithreading, callbacks, and nonlocal effects. Managing memory may be easy in a simple codebase but it’s a nightmare in Chromium. Tools like AddressSanitizer are a routine part of Chrome development for exactly that reason. And people who think memory management is easy in C++ are precisely the people I expect to introduce a lot of bugs.
I’ve a very long track record using C++ as well and I can’t share the feeling. I don’t say it’s alyways easy. I’m just saying that it’s doable and therefore whether the software is memory safe depends on the expertise of the devs. Modern C++ practises, programming patterns and as well tools from the STL (or even your own implementation) make life a lot easier. If you don’t use them, that’s not the languages fault. In the end, how you use the language still matters a lot. If you’d like to think less about memory management, go on and use Rust or C# or Java or even Python if performance doesn’t matter. That’s perfectly fine. This can come with other issues, like more boilerplate in the case of Rust for example, but in the end those languages are tools. Choose the tool which gets your job done.
whether the software is memory safe depends on the expertise of the devs
No. Just stop. If a language depends on the expertise of the developer to be free of memory bugs, then by definition, it is not memory safe because memory safety means such bugs are impossible by design. Quit trying to redefine what memory safety means. A program being free of memory bugs does not in any way imply memory safety.
Yes. I stopped now. I was hinted towards the usual definition of memory safe languages at another point in this discussion.
Although it is perfectly possible to write memory safe code in C++, I agree that the lack of enforcement makes it inherently unsafe.
I don’t think this solely depends on the level of experience. People make mistakes, and these kinds of mistakes are very hard to find. And don’t tell me you are the perfect coder that makes no mistakes, introduces no bugs.
I’m not. But in my experience, using memory safe programming patterns, classes and possibly additional testing and analasys tools do the job quite well.
But yeah. I changed my mind about this memory-safety-property. The lack of enforcement really does make C++ inherently memory unsafe.
The good news is that the browser comes from Serenity OS which means it probably is lightweight and well written.
with mandatory male pronouns for users in the documentation.
(and no politics allowed!)
note
this issue was resolved eventually by another dev;
afaikthe lead devstopped commenting on it after heclosed 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
can I get some context for this, what is the reference to? I stopped caring about new browsers and now just use Firefox 🤷♀️
it’s about the ladybird browser. i edited my comment to add details.
mastoqueers
That was a good laugh! thanks for the explanation ❤️
This whole situation was a concern for me too, but with Ladybird being spun off into its own not for profit, these kind of things are much less likely to occur again going forward. The project is a lot more focused now.
-
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
What is the problem with a BSD-license? I’m not familiar with the different open source licensing models and their problems.
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.
Ok, then call it “plagiarising”.
That is definitionally not plagiarising. It follows IP law, which is the opposite of plagiarism.
There’s more than a legal definition of plagiarism.
Plagiarism is when you sell the work of others as your own without attribution. There are bucketloads of examples of legal plagiarism.
I’m pretty sure that everything H. Bomberguy discussed in his plagiarism video was legal, for example.
No, actually, plagiarism is a legalistic term. If IP law did not exist, neither would plagiarism.
And if you give someone permission to use your IP, and they go ahead and use that permission, it is not plagiarism neither legally nor by any colloquial understanding of the term. That is what happens when someone uses BSD or MIT code in their proprietary software. It is explicitly allowed, by design, by intention.
without attribution
BSD/MIT also don’t allow you to not attribute the author of the BSD/MIT code, so that doesn’t even make sense. You are perhaps thinking of code released public domain, in which case, again, the author specifically chose that over BSD/MIT, and the main practical difference is not needing to give attribution, so that must be what the original author wanted.
I think your legalistic view of the world is quite limiting.
It’s not illegal to rephrase what someone wrote in a book and pass it off as your own work. You can’t “own” a cultural analysis. It’s still plagiarism.
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.”
Apple, Sony, N*****do, Netflix all use BSD but they don’t contribute any code to the BSD project itself, because of the BSD allow other people/company to close source their code when using with BSD
TBH, considering those corporations, most of that would be DRM stuff, and they can’t let that leak in any format. Others are drivers.
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
Should’ve written it in python, smh
Copyleft is the true path
BSD is freer than GPL. Fight me.
BSD is freer for programmers (or frequently their corporate overlords), but not for people using the software.
That’s false. Derivative software that doesn’t use the BSD licence has no bearing on the BSD-licenced software itself. For example, Sony using FreeBSD for the PS3 operating system has zero impact on the freedom of a FreeBSD user. The GPL, on the other hand, directly infringes on the user’s freedom to fork and redistribute the software.
The only “freedom” the GPL infringes on is the ability to take the freedom the code originally had away from an end-user.
That’s also false. The GPL doesn’t only restrict non-free licences, it restricts any licence change on the derivative work. If I fork a GPL project and want to redistribute my changes with a free licence such as MIT, the GPL will prevent it to protect itself. It’s an authoritarian licence that doesn’t respect your freedom.
I fail to see how the share-alike nature of the GPL is “authoritarian” and “doesn’t respect your freedom”.
It is built to guarantee the freedom of the user. It’s imperfect, as it has to work within the constraints of the copyright system, but it’s a hell of a lot better than licenses like MIT for propagating freedom to end users.
Here’s a real world example:
If I want to root my android device with KernelSU or build a custom ROM, I need to recompile the heavily customised kernel built by the vendor for my specific device. Because Linux (the kernel of android) is under the GPL, the manufacturer is compelled to give the user the same freedoms that were given to them, which means I can download the source code and do this.
If Android were based on, say, the FreeBSD kernel instead, this would be impossible. There would be very few, if any, android custom ROMs, because the vendor could, and would, withhold the modifications they made to the kernel.
You’re again assuming that the GPL only restricts non-free licences. This is not the case. If I add a feature to a piece of GPL software, I can’t use BSD on my new code even though the new code isn’t derivative work. Hell, if I write a completely independent piece of software that links to GPL software, my new software has to be GPL even though not a single line of GPL code was used. All of this also applies to free licences like BSD. The GPL doesn’t protect freedom, it protects itself.
You’re assuming that the GPL protecting freedom and protecting itself are mutually exclusive. They aren’t. Again, the GPL is written to ensure the code remains free forever.
Also, I’ve already pointed out the flawed nature of licenses like MIT and BSD, and if the GPL could be relicensed to them, it would provide a very easy way for proprietary developers to strip the freedom from the GPLed code when passing a derivative on to their users.
It is unfortunate that it cannot be relicensed to other copyleft licenses, as that would not pose such a problem, but without an explicit list of licenses it can be relicensed to I’m not sure that’s even legally possible under copyright.
The GPL, on the other hand, directly infringes on the user’s freedom to fork and redistribute the software.
that’s plain bullshit. under GPL, you are free to fork it and redistribute it
You’re not unless you keep the licence.
well of course. you can’t betray the will of upstream: to not feed the rich. not a big ask.
but the user, as you said, has no reason to object to that, because it protects them from parasites
This argument only works if you assume everything that isn’t the GPL is feeding the rich.
Redistribution only becomes an issue if you try changing the license or selling it. GPL primarily protects against businesses profiting off of it. There are use cases for both licenses.
The GPL doesn’t restrict selling. Go read the damn thing before arguing about it.
Yeah but GitHub defaults to GPL, so checkmate nerd 😎
The GitHub owned by Microsoft? That GitHub?
I won’t fight you because I agree. But a lot of people think it’s more free to have freedoms end when it comes to proprietary forks and such.
To me, that’s just one less freedom.
Copyleft protects the freedom of the user, regardless of who is the developer, I think that is way more important if what we want is to make software for humanity rather than pragmatic business choices.
It is a point of what you regard as real freedom, do you wish to eventually lock in your users or let who might fork/take over your project do that?It is one less freedom.