Servo Update: Navigation, Scrolling, GPU Rendering, Underlines, and more
May 26, 2013
Servo is changing rapidly, and with two new interns joining the team the pace will only accelerate. The last few weeks have seen some big changes starting to land in the tree.
The Servo team welcomes and encourages new contributors and I’ll note particular projects where new contributors can easily get involved below. These aren’t the only places you can help, of course, but I thought it might be useful to know a few good places to start.
Navigation and Scrolling
Patrick Walton has landed the beginnings of
navigation and scrolling support. The
rust-alert library provides
simple popup dialog support, and using this, you can now hit
Ctrl-L to bring
up a dialog to enter a new
URL. rust-glut also got keyboard
handler support. Note that this only works on Mac OS X right now due to
missing support for Linux in rust-alert.
Scrolling is another important UI feature, and you can now pan the content in the window. Servo does not currently draw new parts of the content that were hidden, but that should be simple to add.
For new contributors: If you’re looking to get started hacking on Servo or just want to learn more about Rust, adding popup dialogs on Linux to rust-alert would be a good project. Adding drawing of previously hidden areas to the scrolling code should also be an easy project for someone.
Eric Atkinson, one of Servo’s new interns, has just landed his first pull
request, adding the first bits of CSS’s
text-decoration support for
For new contributors: Eric didn’t know any Rust or anything about Servo
internals before he started last week. It doesn’t take much to get started,
and there is lots of low hanging fruit to pick on the Servo tree. For example,
based on Eric’s
underline work, it should be fairly easy to add
Tim Kuehn, another of Servo’s new interns, has also been busy his first week. He started overhauling how performance data is collected in Servo. Instead of simply timing bits of code and output the results to the console, there is now a separate task that handles performance data.
For new contributors: We’re not yet doing anything with this data yet, but we should be. It should be a pretty easy project to start outputting it more systematically and doing something with the results. Another idea would just to be report numbers for different platforms and compare them to similar numbers from other browsers so we know where we should improve.
The first parts of GPU accelerated rendering have started to land in Servo, specifically updates to Skia and Azure to support framebuffer-backed draw targets. These framebuffers render to textures which are shared with the GPU-based compositor. This avoids needing to render to CPU memory and then upload textures to the GPU. There is still a bug or two to work out with tiling support, but I expect GPU rendering to land in the tree pretty soon.
Servo now has continuous integration via Bors, the wonderful CI bot that the Rust team has already been using for some time. Not only that, but Servo’s Bors is now running on Mozilla’s release engineering infrastructure instead of being hosted by the Rust team. This should keep the tree building cleanly from now on. If you’ve previously had trouble compiling Servo, now would be a good time to try again.
Patrick Walton has been heavily refactoring Servo’s directory layout and many
of its subsystems.
net libraries were split out from the
library, and compositing was made quite a bit simpler. He has also refactored
layout and is working on splitting Servo into more libraries, which make it
both easier to understand and build faster. Much documentation has been added
in these refactorings.
Samsung continues to work on Android support, improving the Rust compiler along the way. That work should land in the tree in the near future.
Give all these new things a try and report any issues you find. The team hangs
#servo on irc.mozilla.org and is happy to answer questions or help
you get started hacking on Servo.