4 ms·
Edit: It's clear to me Servo is vaporware right now. The discussions in this thread and crawling servo.org make that abundantly clear. Original post: As an emb
by andrewmcwatters 6y ago
Edit: It's clear to me Servo is vaporware right now. The discussions in this thread and crawling servo.org make that abundantly clear.
Original post:
As an embedder, I just don't get the point. Servo is a nonstarter. The idea of Servo minus Rust is great, because most embedders don't use Rust. They use C, because C is easy to embed with, and the availability of FFIs across languages that interface with C is tremendous.
As someone who has used CEF, looked at Webkit ports, and has even written a compositor compliant with a subset of CSS 2.1, you just cannot sell Servo to me without a C interface.
My problem isn't, "I need an embeddable web browser written in Rust." My problem is I need any embeddable web software―at least a CSS 2.1 compliant compositor―as an alternative to CEF accessible through C, C++, or an FFI that talks to C, but almost no one makes one.
I don't even necessarily need anything beyond a CSS 2.1 compositor, because so much of "web development" is either CSS 2.1 or JavaScript, and I don't need the latter for my embedding purposes.
- Ygg2 6y agoRust has the ability to expose a C API. So, I don't see it as a non-starter. It's just that no one bothered to expose it. EDIT: I'm wrong, but I do think the documentation isn't that great. https://github.com/servo/servo/tree/master/ports/libsimpleservo/capi https://github.com/servo/servo/tree/master/ports/libsimplese... https://github.com/paulrouget/servo-embedding-example https://github.com/paulrouget/servo-embedding-example
- andrewmcwatters 6y ago> It's just that no one bothered to expose it. Almost the entire quick start guide is about using Rust. So you know, if I want to embed it, how do I do it? If I need a view offscreen rendered to a framebuffer, how do I get it? Can I blit? If so, how? How do I pass events to the browser abstraction? Servo talks about none of these things and leaves it up to you, but 110% emphasizes everything possible about Rust. I don't care about Rust, I care about embedding web technologies. So how do I do it? They don't explain. The front page prioritizes these things, in this order: * How to use Rust * How to contribute to Servo * Servo's blog * How Servo is governed * How to donate to Servo * Contacting those involved with Servo * Downloading Servo None of those things point me in the direction of how to embed it. Maybe they should spent more time catering to the people they claim to be providing the software for and less to the Rust crowd.
- Ygg2 6y agoHaving looked at it more, it seems servo does expose C API. The part I was working on doesn't. Anyway servo comes with libservo and libservosimple. Admittedly they don't seem to be well documented for people coming from C world. Perhaps you might want to comment on raise an issue for Servo? I haven't worked on it in quite a while.
- andrewmcwatters 6y agoWhy would I ask people working on embeddable web technologies how to embed their software? They should just tell me. I don't care that there's 19 people on their "technical steering committee" if not a single one of those 19 people is responsible for actual adoption. If they don't have a getting started guide for people like me to actually embed and use the software it's a waste of my time and hypeware or vaporware depending on how you want to look at it. 18k stars and I know there aren't 18k embedders out there.
- lastontheboat 6y agoServo already has a C embedding API in https://github.com/servo/servo/tree/master/ports/libsimpleservo/capi https://github.com/servo/servo/tree/master/ports/libsimplese....
- andrewmcwatters 6y agoThat's not an embedding API. It's definitely Rust exposed to C, but there's nothing meaningful there as an embedder to get started. Reading code isn't reading documentation. The fact that someone on HN had to search for it and paste it here tells me enough about where they emphasize their time.
- supermatt 6y agoServo is a WIP. Some components are mature, and have actually been merged into firefox. Embedding is a primary aim, but certainly requires a lot of wrapping at present to be as functional as more mature engines. No doubt it would be nice to have an easily portable lib - maybe with a compatible interface to other engines - but its certainly not there yet. I agree that the project could/should be a bit clearer on its current status.
- andrewmcwatters 6y agoServo has been around for 8 years. If embedding was a primary aim, which it clearly isn’t, you’d start with that first, and enjoy spec compliance updates as they came.
- supermatt 6y agoAs I stated, it IS embeddable. It just isn’t as user friendly as the off-the-shelf libs you mention you are familiar with. I’m really not understanding your hate. Servo is a WIP. If you don’t have the time/skills to embed it in its current state, then don’t! But it’s still embeddable :)
- andrewmcwatters 6y agoYou're right, I should take a look at all the great apps using Servo to figure out how to use it myself.