Super excited to see this. Awesome! Patrick
On Sep 20, 2017 9:03 AM, "Till Schneidereit" <t...@tillschneidereit.net> wrote: > Hello friends of Servo! > > We're happy to announce the availability of a pre-alpha version of > libservo, a Rust embedding API for Servo. > > You can find documentation for the API and a tutorial for using it at the > following locations: > https://doc.servo.org/servo/struct.Servo.html > http://github.com/paulrouget/servo-embedding-example > > Binaries for demo applications for the three desktop platforms can be found > here: > https://github.com/paulrouget/servoshell/releases > > > Please take a look, play around with the API and the demo applications, and > let us know what you think. > > With the TL;DR out of the way, let's take a look at the details. > > > ## What is this announcement about? > > To some extent, Servo was always embeddable. Over the past year a lot of > effort has gone into the design and implementation of a clean low-level API > - libservo. The API is designed for maximal flexibility, with the goal > being to cover all use cases for Servo - ranging from simple webview-like > uses to fully-fledged browsers to server-side uses as a headless utility. > > We do not anticipate most embedders to use this API directly: to address > the use cases of the majority of embedders, we intend to build higher-level > APIs on top of this. Those will range from higher-level Rust APIs to an > implementation of CEF[1] to drop-in replacements for the Android WebView > component[2]. > > Because most embedders won’t be using this low-level API directly, we are > choosing flexibility over usability when adding functionality.We want the > API to be as usable as possible - but not more so. The API requires > embedders to provide a GL rendering context and manually drive the event > loop to ensure rendering and input processing. It also allows fine-grained > influence on behavior such as navigation. Going forward, it'll grow more > capabilities along those lines, such as rendering to buffers or output of > raw display lists to be consumed by compositing systems such as a > customized WebRender, or delegating all I/O to the embedder. > > > > [1] https://en.wikipedia.org/wiki/Chromium_Embedded_Framework > [2] https://developer.android.com/reference/android/webkit/WebView.html > > > ## What's the current status? > > At this point libservo is far from complete, but ready for early > experimentation. Crate-level documentation is here: > https://doc.servo.org/servo/struct.Servo.html > > A How To guide for setting up a project to use libservo can be found here: > <http://github.com/paulrouget/servo-embedding-example> > http://github.com/paulrouget/servo-embedding-example > > In addition to this example application Paul has built two additional demo > apps: a cross-platform minimalist browser with as reduced a UI as is > possible and a more fully-fledged macOS version with a native tabbed UI and > a proper location bar. These are both implemented as ports of the > ServoShell project: > https://github.com/paulrouget/servoshell > > Releases for the three desktop platforms are available as github releases: > https://github.com/paulrouget/servoshell/releases > > We're happy with the overall shape of the API, but expect at least cosmetic > changes to most of it. Additionally, there is a lot of functionality > missing, so you should see this as the kernel of an API to be fleshed out. > > Additionally, there are a number of issues making it harder to get a > project up and running than it should be. From a build system and > dependency management perspective, embedding Servo should be as simple as > adding it as a dependency to a crate's Cargo.toml. For now Paul's > above-mentioned embedding example has a detailed explanation of the > required steps. > > > ## What's next? > > Our highest priority right now is to streamline the process. That means > reducing the build system complexity and doing the above-mentioned cosmetic > changes. > > We're also working on more examples and demos. Specifically, Paul is > experimenting with a simple C API and with an integration into a Xamarin > Forms-based C# application. > > We'll share more information about those experiments and about our plans > for more high-level ways of embedding Servo, such as bindings for > high-level languages like Java and JavaScript. > > For now, please download the demo applications, take a look at the > documentation, play around with the example code, and let us know what you > think: ping Paul or me in #servo on IRC, file issues in the servo/servo or > repository or Paul's ServoShell or Servo Embedding Example repositories, or > simply reply to this email. > > We'd be particularly interested in experiments around integrating Servo > into platform-native toolkits. E.g., a Gtk-based Linux equivalent to Paul's > macOS ServoShell demo would be fantastic. > > > Thank you, > the Servo Embedding team > _______________________________________________ > dev-servo mailing list > dev-servo@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-servo > _______________________________________________ dev-servo mailing list dev-servo@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-servo