Today, we're excited to introduce Gosub, a new open-source browser engine that we are building from the ground up in Rust!
Gosub aims to be a modern, modular, and highly flexible browser engine. While still in the early development and experimentation phase, Gosub is shaping up nicely, and we’re looking to onboard more contributors to help us bring this project to life.
Some of the key highlights:
* Written in Rust: We're leveraging Rust's safety and performance features to create a robust and efficient engine.
* Modular Design: The project is organized around modules, allowing for clean separation of concerns and easier collaboration. It also allows us to easily swap components based on needs and allows more freedom for engine implementers in the future.
* Collaborative and open source: We’re building Gosub with the intention of making it approachable and open to contributions, aiming to create a project that's easier to understand and collaborate on compared to existing browsers.
Instead of writing another shell around Chromium or WebKit, we decided to write a browser engine from scratch. We believe that having a diverse landscape of engines is the only way to defeat a monoculture that is currently threatening current browsers and by extension the internet itself. We cannot and should not let a very small number of large companies dictate the future of the web and its usage.With Gosub, we're aiming to build something more approachable that can evolve with the latest web technologies, all while being open to contributors from day one.
We’re looking for developers with or without experience in Rust. You just need to be interested in browser technologies. There are plenty of opportunities to work on core modules, document our progress, and help shape the project's direction.
We can already render simple pages, including the hackernews front page. However, to render most sites correctly, it is still a long journey, so come and join us!
Small things to be noted ( in the small, but noticeable category):
- repeated paragraph ( https://gosub.io/learn-more/ )from 'Gosub started' to 'open and free' - that is it for now:D.. I will be personally watching it with some interest
edit: some grammar
Why isn't contributing to existing projects like Servo feasible? Do they reject the benefits of modularity?
What existing code is being leveraged, or is this entirely from scratch? Why was lifting code from Servo or elsewhere not sufficient?
Is this project intending to remain fully non-profit or is there some kind of vision for monetization to support the gargantuan amount of effort it would take?
It says writing a javascript engine is out of scope, but it still isn't clear definitively what is in-scope or out of scope.
Some examples: https://www.reddit.com/r/browsers/comments/124kphe/what_do_y...
Obviously we cannot write everything by scratch, but we don't know yet where we draw the line.. We like to keep things modular as possible so we can easily swap out the systems we use in favor of better ones in the future.
The Firefox engine is great if you don't want something controlled by Google. And it's going to be much easier to develop plugins or extensions for that versus trying to write your own browser from scratch, which to be honest will probably cost hundreds of millions of dollars. If not more.
I do imagine tools like this being useful for something like web scraping, but it's never going to be an end user product.
Would parts of Chromium be fundamentally incompatible with these standards?
There are plenty of browser engines that have fallen by the wayside, often for reasons unrelated to the founders, but that particular list actually paints a surprising amount of the opposite to me. For once since Chrome came out (it at least introduced v8 even if it started with webkit) I have the feeling there are browsers engines in development that can actually attempt to load the modern web and will actually have products for general use cases (instead of specialized ones) in the coming years.
I am reminded of this:
“I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones.”
– Linus Torvalds, announcing the software that became what we now know as Linux
The fact that they are writing their own bytestream abstraction does not bode well.
That said, I hope they succeed at shipping something, even if it’s not competitive with Chrome.
My previous thoughts on the topic: Why you can’t build a web browser and why you should anyway.
You want to elaborate on why exactly? Seems like a kind of shallow dismissal, but then I'm no browser engine developer exactly, maybe it's obvious.
Do we need more "fully compatible" engines? I could imagine there are use cases for browser engines that work with just parts of the specification, particularly the most common ones used in the wild.
Rust has lots of bytestream abstractions already with a ton of work put into them. Maybe they have a valid reason for going their own way. I’d like to know.
- Might be interesting to integretors (FFI, dylib, Rust projects)
- Signals some characters: that it's probably safer than alternatives written in non memory safe languages in same class, has good performance
- Might attract contributors (ie I'm sure there's an intersection of people passionate abou the web and Rust)
- This is hacker news, so it might earn a few extra +1s :P
Edit: formatting
Like an application platform (forget documents) built entirely on wasm, and with capability based security. That would let you launch apps made within the platform just as easily as you currently open a website.
The platform would need some primitives for rendering, UI, accessibility and input handling. But hopefully a lot of those APIs could be much lower level than the web provides today. Move all the high level abstractions into library code that developers link into their wasm bundles. (For example, I’m thinking about most of what css does today.)
That would allow much faster innovation in layout engines and other things the web does today, and a smaller api surface area should lead to better security.
It’s quite possible to build something like this today. It’s just a lot of work.
Maybe when chatgpt is a bit smarter, it might be able to do the lion’s share of the work to make this happen.
In the end you will end up with the platform / OS which will lose to competitors because of performance and lack of features and do not expect it to be secure. Developers will manage to leave some holes and hackers will find their way.
By tighter integration with the final product, the browser can provide specialized elements or APIs to simplify the actual application code.
I think it's used a few other places as well.
Mozilla had one a while ago: https://github.com/browserhtml/browserhtml . I'm sure it could be updated.
Contributor: Hey, can we add this? Maintainer: No.
I'm fed up with it, so I'm writing a browser - https://news.ycombinator.com/item?id=37608580 - Sept 2023 (477 comments)
2) It mattered enough for you to complain about it for some reason, so look at that reason, then look at its reflection.
I switched back to Safari and it worked normal immediately.
P.S. the website and the probably AI generated logo is giving a sketchy vibe about the project :)
I'm fed up with it, so I'm writing a browser (September 2023): https://adayinthelifeof.nl/2023/09/22/browsers.html
HN discussion at the time: https://news.ycombinator.com/item?id=37608580
Change any of those variables and you may have a winning proposition.
certainly some reasoning would be more constructive than a smiley face, because I looked at the website, I looked at the logo[0] - I didn't share the same feeling.
Certainly it could be AI generated, but why 'sketchy'? Is it something to do with your own personal feelings on AI use, or just the aesthetic in general?
I genuinely don't understand -- this isn't a criticism or witty comment lest it be taken that way.
Yes, the initial logo design was generated by AI, however the current logo was made by a designer from the AI's draft.
I don't know if it is a compliment that my website design skills match the ones of AI or if it is more an insult
“The Gateway to Optimized Search and Unlimited Browsing”
Doesn’t really mean anything to me and does sound vaguely scammy. Anyone promising me the gateway to unlimited anything gets a raised eyebrow, two if it’s something I already have unlimited access to.
Neither, it has nothing to do with design. I just wanted to point out that putting an AI generated logo, and writing vague statements like "optimised search and unlimited browsing" seems unprofessional to me.
Is anyone working on something like that?
Even the old pre-tvOS Apple TV apps were kinda web apps - XML and JavaScript delivered over HTTP
Lateron, we might have some compile time flags to reduce memory usage in cost of a bit of speed. Most Electron apps don't require that big oomf performance on the startup, since everything is locally and can be cached in a better way.
And we plan to allow fine grained configuration of the feature set, so if you don't need certain image formats or layout algorithms or networking support, then you can disable them and save on binary size.
Might be, or better just use the name as the logo. At this initial stage no one expects to see a good branding I guess.
I've recently seen lots of low effort, sketchy looking projects using "sub-par" quality AI generated assets...and in turn when I see these kinds of images used in some project it really just shows off "put least effort to get things done" mentality...I feel.
[1] https://www.reddit.com/r/cscareerquestions/comments/ntvtzq/c...
The web's sandboxed security model makes it better for users. And that in turn drives popularity.
I think the same could be true for a good application platform. The trick is using the sandboxing + capability based security model to enable "new" usability features that traditional applications can never deliver.
Also if it was written in anything else, it probably wouldn't get the coverage it gets ;)
It comes from things built for children to play in that have an edge with contents inside it. You play "in a sandbox" without having to deal with anything outside of the sandbox.
The sand in a children's sandbox spills over and gets everywhere. The children playing inside it .. they don't have to care. They are playing inside the sandbox, and for now, the world outside it is not relevant.
Each material has its own qualities, which means its own pros and cons in a given context.
This naive belief that there will be one language to rule them all (and is name is <fill-in-the-blank> ignores history and the world outside of programming in a rather silly way.
That is why, for all its flaws ( and current set of issues ), current attempt at self-organization is simply better in the long run even if it is a little messy.
My girlfriend has strong opinions about how we use the word "library" to describe a software package.
Surely the metaphor should be that one package is a "book" and the entire package repository is the library, right? Left pad is an entire library? Huh?
And then we have no collective noun for collections of libraries!
I'd be fine with someone building a new browser out of stone, concrete, wood, or even rope.
Just don't build it out of C/C++ because those languages aren't memory safe.
Starting your own project you can set the agenda and pace and truly create your vision.
The people who want to do the first idea are very different from the group that want to do the second.
Of course there are impressive projects made with C. But we generally don't build large bridges out of wood anymore do we.
Wait, you can toggle that thing on and off? I knew I've been doing something wrong!
Some would say that's the mark of a great engineer.
(Here's to hoping Rust for Linux continues to drive progress for bare metal Rust!)
[1]: https://tauri.app [2]: https://syntax.fm/show/821/is-tauri-the-electron-killer/tran...
There are risk-reduction strategies one can follow with C++, which offer some fraction of the reduction that Rust does (opinions vary on the value of the fraction). Rust enforces risk-reduction strategies, which in some contexts may be of value all by itself.
Language choice does not eliminate risks in software.
Notable, sure. But it could turn out to be Tacoma Narrows bridge.
We never did build large bridges out of wood, I think. For the right context, wood is still a preferred material for some bridges.
I've been writing an open source DAW for 25 or more years. Every time I see somebody else working on their own new open source DAW or DAW-adjacent project, I find myself wondering whether it would be a better or worse thing if they put their efforts into our already-existing project.
Gosub, despite have 2.6k Github stars, has a grand total of 0 sponsors. They literally take in no money. This is someone's unpaid side project.
I expect a designer would be welcome to contribute a design, just like coders can contribute code.
Layout is much harder because the CSS spec is full of UB, so you will have to do some reverse engineering there.
They don't really. It's been shown by many studies that 2/3 of security bugs are memory safety errors. That's the minimum that Rust can eliminate.
It actually should eliminate more because it also has the strong type system and tree-ownership style that help reduce the chance of logic bugs unrelated to memory safety too (similar to Haskell and other very strongly typed languages).
This is probably the biggest data set:
https://security.googleblog.com/2024/09/eliminating-memory-s...
Unfortunately they don't break out non-memory safety vulnerabilities, but they've almost eliminated memory safety vulnerabilities by writing new code in Rust.
I've heard this a number of times; but circa 1991 I'm not convinced. The critical GNU components to scaffold Linux adoption were:
- GCC + C runtime
- A shell (plus a bunch of small utilities)
You could make a reasonable argument that Linux was and remains a much bigger achievement, namely because GNU has never actually managed to make a usable kernel (Hurd still has no USB support, for example. I don't know if this is for technical or political reasons). On the flip side, there were plenty of compilers and shells kicking around that Linux could have bundled.
RMS makes all sorts of wild claims about how much of a distro is "GNU software" (a criterion that is never clearly defined - is any non-kernel GPL software part of GNU?) by comparing lines of code; but at the time of these claims distros tended to bundle anything and everything that you might possibly want.
Contemporaneously to all this, 386BSD had created a full freely-distributable Unix with no GNU code; and its descendants might have captured the mindshare were it not for an extended copyright battle from AT&T.
> In 1980, Stallman and some other hackers at the AI Lab were refused access to the source code for the software of a newly installed laser printer, the Xerox 9700. ..This experience convinced Stallman of people's need to be able to freely modify the software they use.
And Linux.
> Frustrated by the licensing of Minix, which at the time limited it to educational use only, he began to work on his operating system kernel, which eventually became the Linux kernel.
Well, both that and the ability to work on a project that requires you to run a toolchain whose minimum barrier to entry wrt resource use and developer experience makes the C++ ecosystem that preceded it seem lean and inclusive.