This year in Servo: over 1000 pull requests and beyond
servo.org
servo.org
> In a decade that many people feared would become the nadir of browser engine diversity, we hope we can help change that with Servo.
I sure hope so! It might be a good thing that Servo is now independent from Mozilla. We can't rely on Mozilla anymore, and should move on. Maybe someday Servo can become the new Firefox (as in "modern and freedom-respecting browser")?
From testing the current version of Servo, it still has a long long way to go though, until it becomes a usable browser.
When I initially read the headline what I remember thinking before reading the article was 'I hope it has some use outside of Firefox'.
$ git log --format="%an %s" | grep -E "Browser|LibWeb|Ladybird|LibJS" | wc -l
15524
$ git log --format="%an %s" | grep -E "Browser|LibWeb|Ladybird|LibJS" | grep "Andreas Kling" | wc -l
4249
$ calc 4249/15524
~0.28530018036588508116
Still a monumental feat but don't downplay the community that's rallied behind him.I think GP just like me wants neither Google nor Mozilla.
Google needs to have their arms tied for a bit. Their fingers are in every single pie, taxing the entire tech sector.
Likewise, Safari shouldn't be the default iPhone browser, Edge shouldn't be the default on Windows, and no company should be able to scare users or force their solution as a default.
The browser space would be fine without Google.
Mozilla just made technology that nobody else wants to use.
It's not that nobody WANT to use it, but more like nobody CAN use it. Are you mentioned yourself, most developer only test against chrome/chromium so using servo would be commercial suicide. It not really a statement on servo vs chromium on technical level, but of google vs Mozilla market dominance.
For me it seems we are past peak "works only in IE^h^hChrome".
There was a time 5 years ago or so when several interesting websites only worked in Chromebut I haven't seen that problem in a while and the last website I had to deal with that only supported Chrome was a product that a company I work for used but threw out earlier this year.
Yes, some things still mysteriously work slower in Firefox or have some features disabled for no good reason which is why consumer protection agencies still have work to do but I haven't opened Chrome for weeks now I think and last time I did I think the thing I tried to access was just as broken there.
What could possibly go wrong?
In reality, I think you're waiting for a different project. Servo is like Gecko/Webkit, it's the browser engine. As far as I know, they're not aiming to build a browser, just the engine part.
What you're waiting for is someone to start using Servo as an engine and provide the browser chrome :)
https://github.com/chakra-core/ChakraCore
Of course it is written in C++ and you'd probably want a pure Rust browser. But it is sad seeing that fairly complete open source JIT JavaScript engine sit and rot.
This is really exciting! Hopefully can lead to tiny packages (compared to Electron) but still a consistent rendering story across platforms.
- Sciter (https://sciter.com)
- Yue (https://libyue.com)
- Wails (https://wails.io)
- Muon (https://github.com/ImVexed/muon) and Ultralight (https://ultralig.ht)
- Gluon (https://gluonjs.org)
- NeutralinoJS (https://neutralino.js.org)
- Proton Native (https://proton-native.js.org)
- NodeGUI (https://nodegui.org)
- DeskGap (https://deskgap.com)
- Graffiti (http://tomsik.cz/graffiti/)
I don't think it is, yet. But why not play around with it and see if it's enough for your use case? Hard to know exactly without knowing what you need to be able to do.
Personally, Tauri currently hits the sweetspot of being way lighter than Electron, but still provide (mostly) the same benefits.
It definitely could get interesting soon, I’ve been keenly watching the development of the Ladybird browser (which is also a from-scratch engine) so if there were potentially two viable new browser engines over the next few years that could really shake things up!
What is Mozilla without Firefox?
Update:
https://www.youtube.com/watch?v=9lkIX5ryZZ4
Basically, Mozilla gave Servo employees the foot and the project was taken over by the linux foundation.
Servo dev has been restarted (mostly) during 2023 and the changed Firefox made to their servo implemementation is now being added to servo in batches (ongoing).
So Servo team is aiming to become a full featured (standalone) web platform (browser).
De facto? Google's puppet company to keep regulators happy.
If you think that's the case, then Google is clearly failing at that goal, since they've aggressively taken browser share directly from Firefox users to the point where Firefox may no longer be supported by government services.
Why? What is role of Linux Foundation anyway?
(Beside spending members tons of spam and completely ignore GDPR?)
Firefox uses Gecko as its browser engine. The worthwhile parts of Servo are already in Firefox by way of Gecko. Servo is not The Answer to all of life's problems.
Or, to answer your question more bluntly: "No. Stop asking."
And Gecko has been notoriously unembeddable. Which kinda helped the whole CEF spread.
Not to mention Mozilla basically kneecapped Servo and Firefox by firing most of its devs in a purge.
There is only one browser, because browsers need to be embeddable, and Firefox isn't.
On its face, it's a tough sustainability position for an org of Mozilla's size b/c browser revenue - today - is from controlling the search bar (and maybe now payments APIs?). By making Firefox embeddable, Mozilla gives that revenue to whoever is doing the embedding. Ex: Brave <> Chrome engine.
Building for embedding developers can be super distracting if no sustainability, which isn't a problem for Google: They still make money from embedding by owning the embedding environments like Android. AFAICT, Mozilla failed to land in sizeable markets there. They tried to own & partner in the embedding envs -- e.g., FirefoxOS -- so maybe the trick is to get a more generous rev share for phone vendors wanting to break free of Google? Historically didn't seem to really work out, but maybe genAI w/ consumer/prosumer-grade UIs is reopening that door.
Evolutions like that in turn may take quite an engineering & culture rethink as well, not easy to turn such a big & decentralized ship. I'll keep rooting for them!
If that’s true, then Mozilla wouldn’t have been making money from Gecko’s ability to embed with FirefoxOS unless the project took a sharp corner and changed UI toolkits.
It's less likely the handset manufacturer would be able to change search bar defaults in those scenarios, at least without a stronger profit sharing negotiation, as they'd probably be already negotiating a more careful licensing & teaming agreement
But then… looot of things happened, other priorities, competition, bad decisions, etc etc.
Gecko was originally conceived to be embeddable by design. TPTB decided this was a handicap. It's not an accident that it's hard to work with outside the context that is its modern raison d'être; it is now unembeddable, if not "by design" then certainly by choice.
Servo is not a product, and there is no product for which Servo is an integral component. Servo was an R&D project. It succeeded. Mozilla laid off a bunch of Servo developers, partly because of COVID, and partly because it was (past) done; it doesn't make sense to keep paying for R&D at Servo's stage. It's debatable whether it's even R&D at that point—more like wankery/noodling (i.e. what most programmers want to do, but that the world already has enough of).
Which part? And… what do you mean by embeddable in that context?
There was never a proper embeddable gecko.
There has been an attempt for a gtk widget, but it never matured.
Gecko was not, at the time that Servo was conceived, supposed to be easy to embed. Gecko had, by the time that Servo was conceived, undergone refactoring that knowingly made it more difficult to embed. It would be accurate to say that, at the time that Servo was conceived, embeddability of Gecko was an explicit non-goal.
This is exactly why I raised the issue of the logical throughline of the other comment—what is the point of mentioning Gecko's embeddability in this discussion? All right, Gecko is "notoriously unembeddable". So what? It's a complete nonsequitur, and it risks catching anyone off guard if they're not playing close enough attention and they mistake it for a salient retort of... something not actually stated or argued here
I'm just saying gecko was not embeddable and was never designed to be so. There has been some efforts, and all failed.
As far as I know! … so I'd be happy to be corrected, I'd love to hear more about the history of gecko.
And you seem to know things I don't know, so I'm just asking what you are referring to. Out of curiosity.
> Gecko had, by the time that Servo was conceived, undergone refactoring that knowingly made it more difficult to embed
What kind of refactoring are you talking about?
And back to your original statement:
> Gecko was originally conceived to be embeddable by design
What are you talking about here?
> I'm just saying gecko was not embeddable and was never designed to be so. There has been some efforts, and all failed.
Aside from that, sorry, but I have a huge distaste for the XKCD-style just-make-a-claim-on-the-internet-and-wait-for-someone-to-correct-you strategy of factfinding. It's reckless and annoying.
Anyone who's curious about this subject has more than enough information from this thread alone to turn up the relevant details on their own by now. I'm not going to do any archeology at this point in the discussion, because my patience and the amount of resources I'm willing to put into this topic have by now been exhausted. The only thing I'll say is that the Components.classes[`@mozilla.org/embedding/${...}`] namespace didn't exist for no reason.
For others and historians :) … some efforts were made I think around 2008 (by Brad L. and/or Mark F. … I don't remember so well). A shortlived GTK widget was attempted at some point.
But this lead to nowhere because… well, it's hard to bend Gecko that way, because, again, Gecko was not designed to be embedded. And also because leadership was not pushing into that direction.
About the "not designed that way", what I mean is this:
We had many abstractions for sure to make it multi-platform (and that was amazing achievement, really) but embedding requires mechanisms to hook the event loop and the rendering pipeline into the embedder, in an agnostic way. Which is the part that was missing in Gecko.
Webkit had a proper, well designed, embedding story.
We didn't.
For a short time, there was some attempts (native cocoa and gtk widget) to embed gecko, but it was really not meant to be, it was really hacky and never matured.
Gecko was never designed to be embedded. Really.
I'd argue Servo's promise was never realized - embedding.
Another part of it is losing people in the purge. People fired weren't hired to work on Servo exclusively, some were long time developers of FF, including the MDN docs team.
So it's not like they started Servo, hired bunch of people to work on it, then fired them after R&D was done.
Initially, I think Servo was never meant to be integrated wholesale into anything. It was a experiment playground to evaluate ideas without having them coupled to mainline Firefox, and be able to iterate on things quickly.
Once the ideas were validated, they were integrated into Firefox without pulling in their entirety of Servo.
The "Quantum Render project" is one example of this, where the WebRender compositor was first created in Servo, and eventually integrated into Firefox mainline.
https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Rel...
It made Firefox competitive again
I wonder what it would take to build a Servo backend?
Could be a really fun way to experiment with its capabilities.
Also it is a web rendering engine, not a full fleshed browser.
Servo currently describes itself as a "web rendering engine", so I don't think they are aiming to become a full-featured browser, and I'm not sure if there is an important distinction between "browser engine" vs "web rendering engine". It makes it sound like they only want to focus on the rendering part itself.
It's not even a corporate vs. small shop thing. Look at the team sizes on "giant" programs from big companies in the 90s and consider how enormous an undertaking they'd be considered by most software orgs today.
Like, I get all the Mythical Man-Month, Brooks' Law stuff and that that observation predates the period I'm talking about, but there's definitely been some kind of shift that has other factors causing this (with Brooks' Law compounding the problem). Not sure what it is, I just know that it sure looks like we're far less efficient at building software than we used to be (where "we" is the industry overall). It's like every single organization larger than a dozen people got way worse at building software, pretty suddenly, some time between about 2005 and 2010.
So as far as Google is concerned, the implied manpower requirements are a feature, not a bug.
Chrome's surface area is now huge (and still expanding at a fair clip), but matching Chrome's featureset has become table-stakes for being considered a viable desktop browser, and independently implementing (and maintaining) that entire set of features requires a correspondingly large developer team, even if you were somehow more labor-efficient.