As an user of embedded browsers, I'll just chime in that whilst I agree that 
99% of the api is relatively low traffic and can be cross-process with little 
effort, there is 1 exception.

When embedding a common use case is that the embedder controls the final 
composite into some other application. That requires a *performant* way to get 
the final texture into the embedding application - i.e. 60fps without hitting 
the computing resources too hard.

This is a clearly solvable problem (browsers do it internally) but isn't 
necessarily simple, some obvious solutions:
- a way to get the texture directly on the gpu, to avoid copying back to the 
cpu (likely platform and api specific, if the embedder is using a different 
graphics api, or none, this can be annoying to work with)
- a way to get it on the cpu without sending over a slow XPC channel (shared 
memory?)
- a minimal effort (both for servo devs and the embedders) method that just 
keeps things simple at the cost of performance, using the same low-bandwidth 
communication channels as the rest of the api.

I'd like to convince you that focusing on the "minimal-effort" option would be 
a mistake - non-performant browser embedding is unacceptable for many 
use-cases, better to have a good (if inconvenient) solution first (I speak from 
experience here - I've dealt with 2 poor performance embedded browsers, they 
made life difficult).

Anyway, I don't think that conflicts with your plan, but is worth keeping in 
mind when developing a cross-process embedding interface.

I'll also say that its perfectly reasonable to switch away from CEF for a less 
costly (in terms of upkeep/dev resources) solution for servo, I've already had 
to abstract over many browser implementations, 1 more wouldn't be a big deal, 
I'm sure the same applies for many other embedders, given that some platforms 
insist on banning alternatives (iOS), there's little hope of a *single* 
cross-browser interface, so might as well prioritise something that you can 
afford to support over a pipe dream (though its a nice dream, hopefully it can 
come back one day).
Keep in mind CEF got redesigned a lot before they settled on something they 
could actually support long-term, try not to make the same mistakes (I think 
going with strong process-separation is already a good start).
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo

Reply via email to