Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Servo's progress in 2024 (servo.org)
439 points by brson 11 months ago | hide | past | favorite | 184 comments


I'm convinced that using an embedded browser engine to render app UI is the future. Browser rendering engines are so powerful and versatile and universal I don't see how they can lose.

"But Electron!" Yes, Electron hasn't taken the world by storm because it has two huge deficiencies: 1. It takes an enormous amount of resources including ram and disk. 2. It has no native DOM API bindings so it takes even more ram and cpu to compile and run JS quickly.

I'm excited for the new crop of browser engines because they could fix those deficiencies, opening up browser tech to app developers without hugely compromising the experience.


I am not excited, because HTML is not a great UI framework at all.

It just happens to be the most widespread by accident, because hyperlinked documents - HTML - became huge and then more and more UI elements were bolted on top of it. And suddenly it became the goto, because the plattform run everywhere.

But it is still a ugly mess underneath and you might be right, that it is the future, but it is not a great one. I hope a great one will surface one day and then we can start new with something sane.

"I'm excited for the new crop of browser engines because they could fix those deficiencies"

And I cannot see what fixing those deficiencies could mean other, than throwing most of the standard away. It doesn't mean all of it needs to be thrown away. WebAudio API, WebGPU, etc. all became great standards. But simple UI elements, like a slider or color picker are still just ugly and impossible to make beautiful and behave sane, besides making a new one by hand, or using a libary from someone who did that. But - with WebGPU especially - I am excited for the possibility to build a sane framework on top of some subsets of the browsers capabilities.


That's really a good point. If you're building a native app or similar, why constrain yourself to HTML?


Because flexbox & grid are amazing. And you'll probably need it anyway if you ever have to render arbitrary rich text.


Flexbox, grid and rich text are not the sole domain of HTML.

How do people imagine rendering is implemented in browsers to begin with?


> But Electron!" Yes, Electron hasn't taken the world by storm because it has two huge deficiencies: 1. It takes an enormous amount of resources including ram and disk. 2. It has no native DOM API bindings so it takes even more ram and cpu to compile and run JS quickly.

In my observation, Electron's deficiencies go beyond these two. One glaring issue is the UX not conforming to the native OS guidelines/conventions, including things like keyboard based navigation and OS feature integration.

Give me a native app and an Electron (or similar app, including the abominations that are Catalyst apps on macOS), and I'll choose native apps every time.


Numerous video games have been doing precisely that for the past decade using CEF: https://en.wikipedia.org/wiki/Chromium_Embedded_Framework


BeamNG does it, and their UI responsiveness is the worst I've ever seen. It runs at most 20fps and using it is straight up painful.


FiveM uses CEF and let's you replace much of the built in GTA V scaleform with it.

It's incredible what can be done but can be far less responsive than the scaleform it replaces, but this may partially be due to it being a third party mod to the game.


Minecraft Bedrock uses React + a "web-like platform" (I assume this means they've just implemented the bits they needed) for their UI: https://github.com/Mojang/ore-ui


Bedrock's interface also feels slightly more sluggish than Java's, Though its definitely faster than the other examples here.


Ironic when it's faster than Java almost every other way.


s/o to CefGlue, the C# bindings: https://github.com/space-wizards/cefglue


and before that Scaleform!


The Bloomberg Terminal is rendered using Chromium and has been for many years. You don’t need to wait for new browser engines to use the existing ones, but you do need resources to contribute, maintain, bugfix, etc. because there is no such thing as a free lunch.


Props to Bloomberg for contributing too. I've noticed that they have sponsored the development of CSS Grid and other features in Chromium.


> I'm convinced that using an embedded browser engine to render app UI is the future.

I think Facebook had the same thoughts at some point and they invested heavily in web tech. Later when that backfired (because of performance issues) they started the React Native project.


Yes, they prioritized just straight up mobile web for a while, citing things like HTML5 as the future of apps.

I think that an embedded web rendering strategy for UI within the context of a framework that provides other native interfaces may indeed become a bigger thing


Apple purposefully limits what web tech can achieve on their platform so web vs native discussion needs to be heavily caveated on iOS what should be possible just isn’t.

We also know it’s not a case of just Apples native tech being better because MacOS has truly lost to webtech, hard to even name an app built in the last 5-10 years by a 3rd party in Apples own tech. Everything is just Electron or cross frameworks.

Personally I love truly native Mac apps but it’s certainly clear no one else cares and electron is enough.


> hard to even name an app built in the last 5-10 years by a 3rd party in Apples own tech. Everything is just Electron or cross frameworks

Was 5-10 years ago was the last time you used MacOS? Or do I live in a bubble? Because your statement sits opposite of my perception of things. Maybe I don't use enough apps to say for sure. I don't use most of these, but here are some that I can think of off-hand. You can tell me if these are too old, some of them may be I don't know.

Starting with ones recently seen on HN:

- pISSStream

- Ice

- Ghostty

- Stats

- NetNewsWire

- Wealthfolio

- Orion Browser

- Iina

- Dato, Velja + most others from Sindre Sorhus

- Proxyman

- Transmission

- SwiftBar

- AppLite

- MonitorControl

- BetterDisplay

- Maccy

- CodeEdit

- Does HandBrake count?

- Zed?

There's also a number of sites/lists dedicated to these types of apps. Sometimes it feels like there are too many apps even.


Wait, I understand Apple limits competitor browsers, but non-browser apps should have no issue embedding Chromium or Gecko, right?


They can't:

https://developer.apple.com/support/alternative-browser-engi...

(except through the, purposefully onerous, EU alternative regulations. Which apple charges apps a per-install fee for. Normal apps can only use Webkit, without any plugins or changes)


"It has no native DOM API bindings"

I wish we'd get direct DOM access from WASM anytime but I have little hope.


Actually, building WASM direct DOM api first, then building the native DOM api as an extension of that sounds like a great idea.


My understanding is that "the DOM API" is specced very much in terms of Javascript, so WASM component stuff might see a "DOM2 API" that's similar but not really the same API. Lots of work in speccing that out, I bet. But yes, please!


why? it doesn't matter in any non-trivial app


In other contexts people complain about every byte shipped too much but whenever WASM comes up kilobytes of useless JavaScript shims don't matter. And it is one unnecessary extra request we should not need. It is one extra build step to generate the bindings.


How does it? Worst case it adds 1% KB on top (WASM has fairly big binaries in general). The unnecessary extra requests are not performance critical and the programmer doesn't even notice one more build step in the build steps of dozen other pkgs.

Surely it would be nice, but it's not a real deal breaker


Unfortunately, the best GUI in existence atm is a proprietary middleware and the language for it is XAML.

NoesisGUI: https://www.noesisengine.com/xamltoy/0e2a866b60bc2b9a724b4c6...

And it even has a studio for paying clients which makes designing a GUI trivial. https://www.noesisengine.com/studio/

The studio is made using their own GUI library and its sleek af. Not even QT holds a candle to it. Would have been nice to have such a project in the open source world.


Qt certainly holds several candles, what happens is that people always complain about having to pay for tools, while expecting to be payed themselves.

https://www.qt.io/product/ui-design-tools


Is that desktop only, or does their demo just not work on mobile but other stuff can? I don’t get a keyboard when I focus their password input on iOS Safari.


we need something like this but with a css-html-js output


https://platform.uno/ is an option for building web apps with xaml


.NET? Ugh.


Care to say more than that?


Why would anyone choose .NET for anything non-Windows (or non-Microsoft)? Besides familiarity of course but that means jack shit.


Why would anyone not choose one of the best platforms in 2025?


With C#, VB.NET, and F#?

Anyways, to each their own.


Two of these are still ahead of the rest of the industry in their respective domains. And both are beautiful languages to write concise and performant code in.


I prefer C, OCaml, Ada, Elixir, Go, Factor, Lua (LuaJIT), etc.


Well, your loss.

If you want to criticize .NET, you should do better. We're really short on critics who can produce something substantiated. So far all the replies are of incredibly poor SNR.


If you keep posting programming language flamewar comments to HN, we're going to have to ban you again. It's not what this site is for, and destroys what it is for, so please stop.

https://news.ycombinator.com/newsguidelines.html


It was not a proper critique (as you noted) of .NET. I dislike anything JVM, too, including Clojure, while I do like Common Lisp.

If you give me an example use case, I would be able to tell you what I would use, however.


> Browser rendering engines are so powerful and versatile and universal I don't see how they can lose.

Well browsers are pretty damn heavy for an app that won't use 99% of its functionality. Maybe some of this can be amortized with clever distro work so apps don't have to ship the whole runtime but that hasn't happened yet.

(In fact, it's a little odd to me electron is based on chrome rather than the WebKit that actually ships with macos.... you should be able to ship that sort of app with a few megabytes)

I'd also rather eat glass than be stuck with javascript, easily the most frustrating ecosystem I've ever worked with by a very wide margin. Just the language is ok, but the build pipelines/bundling/transpilation/polyfillls is absolutely miserable to work with and lack of a decent standard library really hurts. It's crazy how we've basically lifted up the concepts of compilation and linking c objects to the world of javascript, just to ship code in a language the browser already fully supports.

Maybe WASM will help but my understanding its use of the DOM is quite awkward and still requires javascript usage.


How does WASM help with the concepts of compilation and linking c objects?


I mean... Just to be clear, Electron has pretty much taken the world by storm.

Huge number of Enterprise/productivity apps are shipped on Electron.

It's hard to beat the value proposition on the business side if you need a website for the product.


True but anyone that cares about battery life or runs more than one of these apps hates it. So I guess my threshold for "taken by storm" is both "very common" and "users don't hate it".


It is tragic that the only robust solution for cross platform apps eats up so much memory and storage but we're getting to the point where it's not that big a deal.


Java and .Net/Avalonia are right there... Electron is not the only cross platform solution.


While .NET has the cross-platform-vm thing going, is not particularly suited to cross-platform rendering. The web is. And don't get me started on WPF.


That's why I mentioned https://avaloniaui.net/ which does the part. WPF is not bad compared to everything happening in the web frameworks.


I disagree. After working with WPF for a while, I'd prefer almost anything from the frontend world (except React) over WPF. Avalonia is nice though.


Is WPF cross-plaform?


* WPF: Windows-only.

* MAUI: Windows, macOS, Android, iOS.

* Avalonia: Windows, Linux, macOS, Android, iOS, browsers.


I can remember when the rhetoric against Java apps being "slow" was just as strong as it is against Electron now. And they've always been less native-feeling and clunkier than Electron.


Java is a ferrari when compared to Electron.


How so? I know there are theoretical arguments and microbenchmarks that Java might be faster than JavaScript, but I've never seen an actual user-facing GUI app in Java that felt smoother to use than good Electron apps.


Electron shifted the scales to below the old Java while Java improved. It's still not great, but given a choice? Let Electron die.


If you need a Website, use a browser.


They do and and they did. You just don't like that they used the browser in both places.


My computer already has an browser installed, I am not a browser collector.


Might be better if you were, though.

Personally - I collect quite a few for different things. I almost always have at least chrome, firefox, ungoogled-chromium, and - recently - ladybird installed.

Not to mention a couple different chromium versions for various electron apps (slack, discord, etcher, bitwarden, vscode, postman, etc).

Different browsers do different things well, and electron does the "desktop app" niche better than the others right now. In the same way that ladybird does the "not tracked by corporations" part, and firefox does the "still supports manifest v2 extensions" part.

You can complain all you'd like (and I recognize you from other places hating on electron) and it's fine, but it doesn't change incentive structures for the folks deploying these, and as a full time linux user... I am SO fucking happy to have all the BS apps my company requires "just work" on my computers because of electron.

If you don't want to use software developed with Electron... more power to ya. Go make that choice. Leave the rest of us out of it.

From my side... it'd be great if we can make electron suck less (and trust me, I definitely agree that we can), but right now... it's still a pretty huge win.


Only one Electron app is tolerated on my computer, VSCode, and that is because for some stuff that is the only place I get plugins for, and that is about it.

Everything else, if there is a Web app, then I use the browser, no need to ship it alongside every single application out there.

It is like those garbage mobile apps, that are exactly the same website that I can access via the Webbrowser, packaged inside a "native" app.

And I say this as someone that works primarly in distributed systems and Web.


I don't like VSCode, but I wanted to agree that I use Discord and Slack in a browser tab and see very little reason to run them in their own exe.


Pretty much this.


Except that means you're locked in to web APIs.


As it should be.


Yeah I was going to comment the same thing. A very big reason why we are even having this conversation about a browser engine powering native apps is because electron exists. Yes it's sub-optimal but that hasn't impeded its conquest in the slightest.


> I'm convinced that using an embedded browser engine to render app UI is the future.

Sciter exists: https://sciter.com/

And it indeed is great for UI.


> In almost 10 years, Sciter UI engine has become the secret weapon of success

oh neat, I like learning about “secret weapons” like lisp/erlang

> for some of the most prominent antivirus products on the market: Norton Antivirus and Internet Security, Comodo Internet Security, ESET Antivirus, BitDefender Antivirus, and others.

I saw that sentence ending differently in my head...

It just doesn’t seem like a very strong claim, that all these products which don’t really hinge on having great (or even good) UIs consider Sciter to be their secret weapon.


Yeah. It's a one-man company that has great tech, but very little capacity to build an ecosystem around it.

A comparable ecosystem is QML in QT, but Sciter is an order of magnitude leaner and faster.


How exactly QML is not lean and fast? I’ve built and app that is both in QML and Qt[1][2].

[1] https://www.get-notes.com/

[2] https://rubymamistvalove.com/block-editor


The _entire_ Sciter SDK is 8Mb, and it can go even lower. This includes a scripting language and an HTML/CSS renderer. It starts in milliseconds and can work over a raw framebuffer.

My friends are using it for an industrial controller that can boot in half a second after a power outage.

I'm not saying that QML is bad, it just is much more massive.


A QML app can be compiled to C++ and reap the exact same benefits with the right configurations when compiling Qt from source.


Seeing “War Thunder” on their jumbotron, maybe they have other things in mind with “secret weapons” rofl


Has it ever been made easy to use on mobile? That’s the big thing that’s always given me pause on investing heavily in using it. Especially since it uses weird syntax in places and isn’t “just a browser”.


It works... But it doesn't have a lot of integration. It's OK for its main use, a UI framework for primarily C/C++ programs, rather than a pure JavaScript+HTML host.

A company that I'm advising is using it for their industrial IoT control dashboards, and it's great for that purpose.


Sciter is great but is also just a minefield of bugs and quirks. And its main developer Andrew is too stubborn to realize why it's not popular because he refuses to hire an evangelist that would take care of its missing ecosystem.


I mean, most OSes already ship with a WebView component that you can use instead of shipping an entire browser runtime.

Wails does that: https://wails.io/

Tauri also does that: https://tauri.app/

That does help with the app sizes quite a bit: https://github.com/Elanis/web-to-desktop-framework-compariso...

Sadly it doesn’t change the memory usage much so the technology is still inherently wasteful, but on a certain level it feels like a lost battle - because web technologies often feel like the choice of least resistance when you want GUI software that will run on a bunch of platforms while not being annoying to develop (from the perspective of your run of the mill dev).


Correct me if I'm wrong, but isn't the problem with tauri and wails that they are still dependent on the client's native OS webview? I know Tauri uses WRY which essentially takes in your request, finds the webview present in the client and calls a corresponding function. The differences between these webviews are vast and you end up with different UIs or cobbled together adjustments for each OS to split the differences. Fully embedding a browser is extremely storage inefficient but it does guarantee apps look identical regardless of platform.


> The differences between these webviews are vast and you end up with different UIs or cobbled together adjustments for each OS to split the differences.

Like frontend developers do all the time? Why would this be an issue for apps but not on web? Reminds me of the old ”our website works best in Internet Explorer” banners.

The webviews on windows, Linux (gtk) macOS, iOS, Android all support modern CSS and are basically identical. Speaking from experience.


Depends on what you care more about: the package size or that sort of consistency in exactly how things look. For example, when I was using Wails to quickly throw together a UI for managing some other client software, small package sizes were great and since whatever I do inside of a WebView/browser will always be different than the native OS GUI solutions, slight differences were inconsequential. Someone else might have vastly different requirements.


> consistency in exactly how things look

It's not just how things look, though, there are a ton of differences between browsers in terms of how things behave, too.


More different than the normal differences webdevs need to handle, safari vs chrome vs firefox vs edge?


No, less, since it's really only two:

- Blink for Windows/Qt hosts.

- WebKit for macOS/GTK hosts.

I remember when web developers actually gave a damn. Just call yourselves Chrome developers because that's what you are now.


> That does help with the app sizes quite a bit: https://github.com/Elanis/web-to-desktop-framework-compariso...

Interesting resource, thanks!

Was not expecting the start up values for Tauri, they're abysmal ._. Welp, at least the executables are small.


Tauri uses the native webview on the platform, which is presumably why startup values are all over the place. (It's also somewhat suspect to the point of warranting investigation; even using the native webview there seems no reason for something that takes half a second on Windows to take 25 seconds on Linux).


For me Tauri/Wry starts up pretty instantaneous. This is using Wry as the renderer for the DomTerm terminal emulator (https://domterm.org), invoked with 'domterm -Bwry'. This is on Fedora Linux 41 x64. Admittedly using a rather old version of Wry (0.43.1) with webkitgtk 2.46.5 - I haven't had time to update.


I had this same observation. My guess is because Tauri uses WebGtk and Linux doesn’t really have a “native webview” so it’s kinda shipping the whole thing? The startup time seems like Tauri’s a non-starter for a lot of apps if you want them to be cross platform, had no idea this was a thing.


These startup times do not make any sense. I've developed a little toy app using Tauri+React and it starts pretty much "instantly" in all platforms.


I recently build a torrent streaming app on tauri (lemontv.xyz), it is just amazing framework, it is damn fast on every platform. The only issue is that accesing system api's a bit problematic especially on android side...I needed to get into JNI calls to run a background thread on android so that when the user puts the app on foreground, the app needs to do a bit more of buffering. I mean in general, Tauri is or could be one of the best options if you are writing rust backend and have cross platform requirements.


>"But Electron!" Yes, Electron hasn't taken the world by storm because it has two huge deficiencies: 1. It takes an enormous amount of resources including ram and disk.

Why would an "embedded browser engine" be any better? Electron after all is also a browser engine, and that's what makes it slow and bloated compared to native UI, not the embedded part (by which I asume you mean something like a browser engine wrapper widget).

>2. It has no native DOM API bindings so it takes even more ram and cpu to compile and run JS quickly.

Huh?


>Why would an "embedded browser engine" be any better? Electron after all is also a browser engine, and that's what makes it slow and bloated compared to native UI, not the embedded part (by which I asume you mean something like a browser engine wrapper widget).

There are legacy parts of browser layout that make it impossible(?) to optimize some rendering while being standards compatible. If you just chose a subset that is fast to implement and focused on being subset you narrow the scope of the project and enable optimizations.

Electron has to implement everything chrome has to support even though the apps running in it will never touch it.

Also web engines have to be heavily sandboxed because you cannot allow internet code break out of the sandbox.

Native apps shipped with electron already ship Node and just waste resources sandboxing stuff with security layers.


To be fair, there's lots that could be stripped from chrome bundled with electron. Nobody's really attempted that yet as far as I can tell - but I really hope we'll get there. I mean, there's hundreds of compilation options in there, for components that will never be used by a simple app.

Does your desktop app need a gyro, webrtc and gamepad support? But they're loaded anyway.


> Does your desktop app need a gyro, webrtc and gamepad support?

I doubt those impose very much (if any) overhead for just being present but unused. In any case, those aren't the things that the OP was talking about; there are plenty of layout-related standards like floats that are almost never used in modern web apps yet inhibit or prevent many optimizations that could potentially significantly increase rendering performance. For a more extreme example, imagine how much faster layout rendering could be if you removed all types of layout other than grid—you'd be able to remove a bunch of checks and all the code that handles edge cases, significantly simplifying the happy path.

Nobody (to my knowledge) has done this because it's not as simple as forking Chromium and removing code. Without the mentioned optimizations, I don't think you'd see much benefit.


>There are legacy parts of browser layout that make it impossible(?) to optimize some rendering while being standards compatible. If you just chose a subset that is fast to implement and focused on being subset you narrow the scope of the project and enable optimizations.

Embedded browser engines though are either wrappers for Webkit and Blink (thus also including the "legacy parts of browser layout that make it impossible(?) to optimize some rendering") OR simplistic web rendering engines that are not as capable as Chrome/Webkit for layout and not compatible with all modern CSS/HTML features.


But that is where servo can fill the niche, focus on modern/fast parts, ignore legacy compatibility.


For (2), I believe they want to interact with the DOM directly (via whatever language the rest of the app is written in) without needing to go through JavaScript.


No one mention Opera before adopting webkit/blink it was lightweight and fast. And even it's source code appeared in some places after a leak.



> It has no native DOM API bindings so it takes even more ram and cpu to compile and run JS quickly.

By this, do you mean something like a C/C++/Rust API to the DOM?


I am betting my chips in dioxus. Looks like a very clean project although few critical parts missing.


Except on iOS because Apple can't get its sandboxing act together.


Yeah but I don't want touch JS for this


I think Servo's killer application would be a mobile-first browser for postmarketOS/Mobian/other mobile Linux distros. It's a weird vacuum because Firefox has its Android port, but when you run Firefox on small linux (touch)screen, the experience is very suboptimal. I'd call it unbearable if it wasn't for bunch of tweaks in form of https://gitlab.postmarketos.org/postmarketOS/mobile-config-f...

Chrome is no better, as it has a very weird hardcoded minimum window width of 500px.


I've long thought its killer feature would be embeddable cross-platform UI and native-wrapped web apps like Electron and Capacitor. For these cases it doesn't need to render the entire public web, but the subset used by the application developers. It's a much more tractable problem.

Chrome had a project a long time ago called Razor whose goal was to make a 120fps streamlined subset of the web platform for those types of use cases. They tried to throw away warts of the web that slowed down parsing and rendering like quirks modes, floats, negative margins, infinite entity expansion, element adoption, and probably most built-in elements, leaving a few core built-ins and custom elements.

Razor apps could have run on the web, and in a Razor runtime. Unfortunately, IMO, they kept removing things until they removed the document, and swapped in Dart for JS and the project became Flutter which is not very web-like at all.

I thought Razor was a neat idea, and Servo could really fill that space well.


Fascinating, and I’ve been working on a native UI project I call Figuro for a couple of years now (1) that’s built on the idea of simple nodes.

It’s surprising how similar to HTML it’s becoming. I feel like it's sorta an inverse of the Flutter story. Lately I’m working on adding a subset of CSS. Adding padding and margins too seems like a good idea too, etc. Part of me wonders how much of a webpage I could render with it.

1: https://github.com/elcritch/figuro


Yes this is the ideal space for a performance minded web rendering engine rewrite.

And if you do it well enough as a subset it can become the next standard where the modern web is just the subset, you can even integrate it with a legacy render where you fall back to legacy when you detect you cant handle it, and have the fast path for the subset.


Didn’t realize that was the backstory of Flutter, I thought this was headed in a different direction.

I heard the YouTube team did something similar for their embedded / resource-constrained environments where the client just renders barebones HTML/JS and only what is needed is implemented in the engine.


Yeah, YouTube has minimal engine called Cobalt: https://developers.google.com/youtube/cobalt

That's also an unfortunate story, because they've really lagged on adding features in the past because they generally have no way to update the engine on TVs. So any new feature would take 5-10 years to be usable.

So almost 10 years ago they didn't invest in some core things like web components, and they could have used them by now if they did.


Another similar project (alpha stage): https://github.com/DioxusLabs/blitz

And another (mature but proprietary): https://sciter.com/


The minimum window width is a funny thing, Chrome has been steadily raising the minimum every time they make changes to the UI. It used to have a minimum around 320px and now on some configurations it's nearly 800px. There's an old open bug about it where people periodically comment to complain that it was raised again.



> I think Servo's killer application would be a mobile-first browser for postmarketOS/Mobian/other mobile Linux distros

Are you suggesting that such an app would get people to go out of their way and use mobile Linux?


Huawei is doing that, with their own OS.


Ladybird and Servo are exciting and much needed projects since Microsoft abandoned their own independent browser engine to use Chromium.

If you didn't know you could see the massive progress both projects have made in web compatibility here: https://wpt.fyi/results/?label=master&product=chrome&product...

As of today, browsers pass this percent of tests:

  Chrome: 96.82%
  Firefox: 95.41%
  Safari: 94.97%
  Ladybird: 89.30%
  Servo: 78.61%


One interesting thing covered in the Ladybird monthly update videos, is that most of the web platform tests are text encoding tests for Asian languages.

If you remove them, Ladybird is closer to 60% and Servo to 50%.

Still good, and the point still stands that they are making amazing progress. But probably more accurate because that last 10%-20% are going to get harder to chip away at.


That's interesting and it explains why the wpt.fyi website doesn't show a percentage but instead the number of tests.

There are tons of other examples of these easy points in the test suite. Ofc text encoding tests are important if we want the internet to truly be global

I guess these percentages are kinda useless by themselves but still useful to track progress when you put them together in a historical graph


Yeah it's crazy that they don't weight the tests. AVIF support is 1 test, whereas WebCryptoAPI is 50k.


AVIF support is irrelevant. JPEG, PNG and soon JPEG XL is all you need.


Be careful you don’t mistake that for web standards compatibility.

There are many tests in there for non-standard Blink-only APIs that Google implemented unilaterally, which both Mozilla and Apple rejected on security and privacy grounds.

For instance WebUSB accounts for 845 tests, and WebNFC accounts for 173 tests. Neither of these are web standards, they are Blink-only Google APIs.


While I don’t doubt that there are bogus tests in there, looking at how many of them Safari and Firefox pass does not indicate that they have rejected many of them.


Web NFC:

> Status of This Document

> This specification was published by the . It is not a W3C Standard nor is it on the W3C Standards Track.

https://w3c.github.io/web-nfc/

> We oppose this feature and will not implement it.

> We do not believe a permission prompt is a sufficient mitigation for the serious security and privacy risks raised by this specification. In addition, we think exposing direct hardware access to the web is a bad idea and compromises the device-independence of the web platform.

https://lists.webkit.org/pipermail/webkit-dev/2020-January/0...

> We believe Web NFC poses risks to users security and privacy because of the wide range of functionality of the existing NFC devices on which it would be supported, because there is no system for ensuring that private information is not accidentally exposed other than relying on user consent, and because of the difficulty of meaningfully asking the user for permission to share or write data when the browser cannot explain to the user what is being shared or written.

https://mozilla.github.io/standards-positions/#web-nfc

WebUSB:

> This specification was published by the Web Platform Incubator Community Group. It is not a W3C Standard nor is it on the W3C Standards Track.

https://wicg.github.io/webusb/

> WebKit declined to implement several APIs, including WebUSB, due to concerns over fingerprinting

> We have previously stated privacy concerns, thus the concerns: privacy label. We agree with Mozilla's security concerns raised in their standards position issue, thus the concerns: security label.

https://github.com/WebKit/standards-positions/issues/68

> Because many USB devices are not designed to handle potentially-malicious interactions over the USB protocols and because those devices can have significant effects on the computer they're connected to, we believe that the security risks of exposing USB devices to the Web are too broad to risk exposing users to them or to explain properly to end users to obtain meaningful informed consent. It also poses risks that sites could use USB device identity or data stored on USB devices as tracking identifiers.

https://mozilla.github.io/standards-positions/#webusb


Yes, they are horrible features that do not belong in a browser but they make up at most 1.41% of the test suite.


It may seem like a lot but there are 1.7 million web platform tests. Controversial chrome only web apis are few and far between the common features


At this point the web is a de facto standard platform. The whatwg doesn't decide what makes it up any more than w3c did.

As well as browsers supporting features not endorsed by whatwg, there are plenty of features that they have endorsed that browser vendors didn't bother with.


> At this point the web is a de facto standard platform.

Yes, the web is a standard platform, Blink is not. Google can’t just spit out any old privacy-violating, insecure garbage specification and call it a web standard just because it’s what they want to build. Google don’t unilaterally decide what the web is.

> there are plenty of features that they have endorsed that browser vendors didn't bother with.

Something can’t become a web standard unless there are two independent implementations. It’s part of the standardisation process. It also disqualifies things like Web NFC and WebUSB from being web standards because Google couldn’t convince anybody outside of Google to implement them.


I think you misunderstood (or don't know what "de facto" means).

> Google don’t unilaterally decide what the web is.

They absolutely do.


They don’t. We are close to that point, yes, which is why it’s so important to clearly delineate what is a web standard reached through consensus from what is Google trying to push their stuff through regardless.

If something doesn’t work in Safari or Firefox then web developers normally still hold back, so they aren’t de facto standards. We aren’t quite at the point we were when IE dominated the web. But there is a growing number of developers who blame other rendering engines for not blindly going along with whatever Google says, and that needs to be stopped in its tracks not accepted.


> then web developers normally still hold back

It takes just a few weeks on hn to see it's not true and there are a few devs who will point to the usage stats and not care about Firefox. For safari, many people just don't have access to it, so they'll never test in the first place.


Hacker News is not representative of the typical case. There are very few professional web developers who ignore Safari – a huge number of people surf on mobile and a huge proportion of mobile users are Safari, so any developer ignoring them isn’t doing a very good job. All web developers have access to Safari – if they don’t use macOS then they use a tool like BrowserStack to test in Safari. This is a standard part of a web developer’s toolchain.


It's a standard platform, but the platform itself is not standardized, which is the point I think GP was making. The problem isn't that people don't think the web is a standard platform, but that it's hard to quantify what it means to support the web as a platform because of conflicting implementations. Standardization is ostensibly supposed to help with that, but it obviously doesn't perfectly reflect what browsers will actually support. Ultimately it the question comes down to whether people can actually use the browser with the websites they want to connect to, but that's not something that can be quantified easily due to it depending on what features websites are using and which features a browser has implemented, and network effects can make it hard to pin down what's expected at any given time, which is where all of these "imperfect" metrics like calculating some score based on the standards is coming from.


I'm guessing that the "last 5% = 90% of the work" rule applies to browser engines as well ?


Idiot here: How long will it approximately take until we see a real Ladybird or Servo browser in production, that is actually usable and e.g. has addons?

Like, will it be 6-12 months, or more like 2-3 years?


I think Andreas Kling said they aim for their first release in 2026.


what ever became of khtml? i remember back in the day it had the nicest codebase of all of the browser layout engines.


Webkit was forked from khtml, but the original died along with Konqueror, which couldn't keep up with javascript API changes & performance.


lots of relevant interesting reading on the webkit wikipedia page: https://en.wikipedia.org/wiki/WebKit

seems it was a quite complicated matter that included clashes between open source and commercial concerns.

https://web.archive.org/web/20090210230809/http://www.kdedev...


Basically became webkit. Which google forked for Blink/Chrome


Damn

I was entirely unaware that both Chrome and Safari can trace their roots back to KDE of all projects. I always just assumed big corpos like Google and Apple would just roll their own from scratch.


It was easier to just take a competitors engine, let me chase the new web standards, and slap a new UI on it. Edge and Opera both use Blink, so also trace back to KDE.


Who would have guessed that Microsoft's web browser would end up being based on KDE's web engine?


Who would have guessed that all major proprietary browsers would be using KDE's web engine, while most of the open source community used Netscape's one?


Only in the sense of a browser engine Ship of Theseus. By the time Microsoft adopted Blink that KHTML code was long gone.


It eventually forked into Webkit / Chrome.


These are interesting stats, but it makes me wonder what those tests exactly are. Are there 3.18% of tests that no browser passes? How applicable are most of these tests to real world websites?


No, likely much less than 3.18%. Chrome passes the most but there are plenty of tests that only Chrome passes or only Chrome doesn't pass


Are the last percents harder to complete ? (law of diminishing returns)


For Ladybird - Andreas Kling called out that the vast majority of "easy tests" are passing and each additional test is going to be more difficult to come by going forward.

https://www.youtube.com/watch?v=-l8epGysffQ (1 minute - 4 minute)


As another comment pointed out, some of them will never be implemented on purpose. These tests aren't all backed by web standards. E.g. one test suite is for compatibility with non-standard Blink APIs

Also there are new tests being added all the time


Hasn't Servo been around much longer than Ladybird? Has it stagnated?


Servo was on a multi-year development hiatus, which is the reason this is news (see the graph in the article). In addition the original priority of Servo was not to broadly implement web standards, it was as a proving ground for Rust components to be uplifted into Firefox (I'm unclear whether or not those components, which have surely been continually developed since then, have been backported into Servo).


>(I'm unclear whether or not those components, which have surely been continually developed since then, have been backported into Servo)

I believe the article makes clear that they have.

>Servo main dependencies (SpiderMonkey, Stylo and WebRender) have been upgraded


Whisper it but C++ is probably a better language for building a FOSS web browser engine than Rust.

There’s simply more C++ programmers around, and you need as many bodies as possible for such a large project. There’s also precious few Rust developers with experience with large projects since Servo is the largest project.


Are there browsers that use servo; or plans to build one? If not, who is actually using servo and what for?



Firefox has used Servo's rendering and styling components for years now.


Servo was of course based on the servo project in Mozilla. But that was discontinued years ago before that project was completed. I'm sure Mozilla still uses some of those components. But is servo actively contributing back to Mozilla at this point or is it more of a fork?


> But that was discontinued years ago before that project was completed.

IIRC purpose of Servo when it was Mozilla project was:

- Develop large scale project in rust to see pain points

- Have a test bed for pieces that would later be integrated in Firefox

In both cases project succeeded: Quantum CSS (Stylo), WebRender, and some smaller components that I don't recall. I don't think there was ever a goal of building a full consumer-grade browser, at least not within Mozilla.


There is two-way syncing of the shared components (primarily Stylo and Webrender). They are primarily maintained by Mozilla, but Servo has been contributing some changes.


If servo (or something like it) succeeds, would that mean potentially being able to swap out chromium in Electron? Would that help with performance / application size?


Long ago it was a goal of Servo to adhere to the Chromium embedding framework, and differentiate itself from Gecko by having a good embedding story. I'm unclear whether that is still a goal of the modern project, however.


Why the big dip in PRs over the years? Was that the year it got discontinued?


I would guess so. Their blog also has a big gap between 2020 [1] (when the Servo team was laid off from Mozilla) and 2023 [2] when they found new funding and restarted development, with nothing else posted in between.

1: https://servo.org/blog/2020/11/17/servo-home/

2: https://servo.org/blog/2023/01/16/servo-2023/


Wondering how useful this would be for the agentic workflows that need browsing. The open deep research tread from yesterday mentioned using a pure text based browser sort of thing to quickly get info.


Like the recently discussed Lightpanda?

Show HN: Lightpanda, an open-source headless browser in Zig | 318 points | 11 days ago | 137 comments | https://news.ycombinator.com/item?id=42817439


Yes, argentic workflows are one of our use cases for Lightpanda.

We skip the graphical rendering of the web page for instant startup, fast execution and low resources usage.


Can skipping rendering affect website behavior? What happens when JS tries to get layout/color information? How often does this break a website?


They skip rendering but maybe don't skip layout and style computation?


Does it save much resources at all then? Id think that style computation and layouting takes a large chunk of the total resources used.


I have to imagine that the vast majority of those workflows are going to want to blend into real traffic as much as possible, which just means driving Chrome


Minor typo:

    from over an our to under 30 minutes.
s/our/hour/


That's great news! I thought the project had died and that this meant that V8 was the only serious JavaScript engine for the future.

For those who don't know: "Servo is a web browser rendering engine written in Rust, with WebGL and WebGPU support, and adaptable to desktop, mobile, and embedded applications."


I'm confused: why would the existence of a browser engine affect a JavaScript engine? Don't you mean WebKit/Blink instead of V8?

Either way I'm glad that there's a challenge to the browser monopoly and its various technical components of course.


Servo just uses SpiderMonkey instead of their own JS engine in Rust.

Even without SpiderMonkey, we'd still have JavascriptCore from Safari and LibJS from Ladybird.


And some lightweight alternatives like Bellard's QuickJS (https://bellard.org/quickjs/) in C and Kiesel (https://kiesel.dev/) in Zig.


Also, Hermes which React Native uses.


AWS' LLRT runtime just switched to QuickJS-NG [0]

0. https://github.com/awslabs/llrt/pull/669


I don't see the relevancy of the JS engine in the context of a web rendering engine and its independent complexity. The homepage of Servo (basically, a portion of the Wikipedia entry snapshot) doesn't even mention it.


Because the parent-most post from quertox was:

> That's great news! I thought the project had died and that this meant that V8 was the only serious JavaScript engine for the future.

The person you're responding to was basically clarifying what you want to too.


> V8 was the only serious JavaScript engine for the future.

Firefox's SpiderMonkey? Webkit's JSC?


spidermoneky has been around since before V8


Bit of an understatement. SpiderMonkey was the first JavaScript engine (out of all of them), born in 1996, made by refactoring the scraps of Mocha that was the initial prototype made by Eich.


I thought it had died too. Great to see it make a comeback.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: