I've been following the development of Servo for several years. Unfortunately it's still is at a very early stage. Some of the most basic sites are rendered incorrectly, not rendered at all, or result in freezes and crashes.
Shows how bloated modern web is and how hard it is to write a browser engine. Really sad state of affairs.
I’d argue servo has been a success and doesn’t need to implement everything 100% to do so. It’s a research browser it’s goal is facilitate new techniques and many have been merged back into Firefox: production use of rust, the stylo css engine, webrender, etc. They’re still doing some really valuable work in vector graphics and vr. https://github.com/servo/servo/wiki/Roadmap
I tested it last year on my static blog and it mostly worked, it missed some CSS like underline colours but good enough. I then tried wikipedia and just got a blank page.
Is it easily embeddable yet?
I’ve tried several times over the last years to use it instead of WebKitGTK, I’ve tried both servo-embedding-example [1] and servo-shell [2] and they were a pain to set up. I can compile servo and make it load a URL, but that’s it.
I also tried the examples in the WebRender crate, several times, and I never get any kind of text rendered, just rectangles. Due to lacking documentation I’m not sure whether I should be seeing text or not, but drawing rectangles is something I can do on my own with OpenGL or heck, even poking [64] the pixels myself!
[64] I first learned about computer graphics with my Commodore 64.
This is on Ubuntu with Intel integrated graphics (i7-4650U), which I guess might not be supported. Is that documented somewhere?
Anyhow, every time I try again I end up wasting several hours, so I’m still using WebKit for my application prototypes. Some of my use cases do not require a full browser engine (thus trying out WebRender), the most important part is text layout and I’m very interested in using Pathfinder [3], hopefully from a higher-level API like libservo or WebRender.
Forgive my webdev nievete, but what exactly is a Browser Engine, and how is it different from a browser? Is this like selenium? What's the use-case? Why is parallelism important in this context?
The browser engine gets HTML, parses it, and turns it into an array of pixels. Hopefully without crashing and without any security vulnerabilities. The rest of the browser is the UI built around this engine - it reads your URL bar, tells the engine to render the page, and handles things like navigation and bookmarks and saved passwords etc.
Browser engines also execute the JavaScript, though I'm pretty sure Servo just does the HTML/CSS rendering. Webpages these days are very heavy which is why parallelism is important (for both the layout engine as well as the JS engine).
It's like the browser's kernel. You can build different browsers on top of the same engine without having to write everything from scratch. Chrome, Opera, Edge and Brave all share the same Blink/Webkit engine and there are a bunch of Firefox forks like Palemoon that share its Gecko engine.
Shows how bloated modern web is and how hard it is to write a browser engine. Really sad state of affairs.