
Servo Continues Pushing Forward - robin_reala
http://blog.servo.org/2015/05/01/forward/
======
gedrap
If someone is interested in contributing and not sure where to start, here's a
list of issues tagged as easy:
[https://github.com/servo/servo/labels/E-easy](https://github.com/servo/servo/labels/E-easy)

Not sure if it is still true but a few months back (6 maybe?), there was a
post on HN about contributing to Servo where OP said that he found it easy to
contribute despite the fact that he didn't have prior experience in rust. As
this post mentions, the code base is relatively small and a lot of simple
features were still missing, at least back then.

Bugs Ahoy is a handy tool for finding easy issues in Mozilla projects but
seems to be down at the moment
[http://www.joshmatthews.net/bugsahoy/?servo=1](http://www.joshmatthews.net/bugsahoy/?servo=1)

~~~
kibwen

      > OP said that he found it easy to contribute despite the 
      > fact that he didn't have prior experience in rust
    

Just yesterday I was talking to the person who contributed WebGL support to
Servo (a relatively recent and substantial patch), and they reiterated this
sentiment. It was their first time ever using Rust, and although they'd
reluctantly done some C++ in the past their primary programming language is
Javascript. They were pleasantly surprised at how easy it was to contribute
such a large patch, and had bountiful praise for how well-organized the
codebase is. The patch actually bounced a few times, and they were also very
pleased at how the core contributors continued to work with them over the
course of days to track down the breakage and keeps things moving.

This person's primary interest is in virtual reality, specifically WebVR
([http://webvr.info/](http://webvr.info/)), and given Servo's incredible
benchmarks so far they're very optimistic about its ability to advance the
state of the art of virtual reality on the web.

Their biggest complaint was build times. Yeah... we're working on that. :)

~~~
tptacek
How long does a Servo build take?

~~~
chaoky
It takes around maybe ~15 minutes on my 6 year old laptop.

------
nickysielicki
Last week I tried my hand at putting vim functionality into servo, a la
pentadactyl.

It's not even close to being ready. Even rendering a simple page like
hackernews is broken.

That's not to say I am not excited for this. I think servo will be huge and I
think it will see widespread adoption. It's just that with all the news we
hear about it, you might be lead to think that today it's competing with
webkit. It's not. Soon, though.

~~~
vanderZwan
Every time I hear about Servo, it mostly can be boiled down to:

A: We did a ton of work

B: We're not even remotely close to something really useful yet

I think that says more about how websites work, to be honest.

~~~
jerf
The stack of web technologies is staggeringly enormous. It may not feel like
it just scanning over a simple HTML page, but it is, and there's a lot of
invisible-yet-critical stuff like proper same-origin policy enforcement. The
miracle is not that it takes Servo a while to be created, it's that this stack
works at all, and that they're even trying!

~~~
higherpurpose
Couldn't they just do something similar to Microsoft's Edge/IE11 approach?
Servo for HTML5+/CSS3+/Javascript ES6+ and then keep Gecko as well inside
Firefox for "legacy websites"?

~~~
gsnedders
HTML5/CSS3/ES6 define how to process legacy content as well as current — the
only actual branching for versions is quirks mode and that has relatively
minor effects which aren't that much code to implement.

Edge should, in principle, support everything, including legacy sites (at
least as well as other browsers do today). Trident is only being kept around
for sites that do extensive UA sniffing and rely on obscure behaviour — and
pretty much only for the intranet.

------
greggman
I'm really curious how Servo (and Electrolysis which I know is un-related) are
planning to handle the GPU. Most GL drivers if not all of them are not multi-
thread happy.

Are they implementing an internal command buffer like Chrome or is there some
other solution that allows multiple threads and/or multiple processes to all
output content to the same window?

~~~
pcwalton
Separate per-thread GL contexts, with texture sharing via EGLImageKHR on EGL,
pixmaps on X11, and IOSurface on Mac.

WebGL and content display lists are proxied to a separate process for security
(in the multiprocess branch).

~~~
groks
Wayland might be taking over from X11 on a widely used Linux desktop as early
as 6 months from now (Fedora 23):

[https://blogs.gnome.org/mclasen/2015/01/19/gnome-wayland-
por...](https://blogs.gnome.org/mclasen/2015/01/19/gnome-wayland-porting-the-
endgame/)

Obviously X11 will not just disappear, but is targeting Servo at X11 at this
early stage in it's development like writing a Python library targeting Python
2?

~~~
pcwalton
Well, when I wrote this stuff for the first time a couple of years ago,
NVIDIA's official position was "we have no plans to support Wayland". Even now
I suspect X will be around for years.

I will be the first to cheer X's demise, as we've had so many problems with
multithreading and X, but we have no choice right now.

~~~
groks
Here's an overview from last year showing nvidia's wayland support under way:

[https://www.phoronix.com/scan.php?page=news_item&px=mtgxmde](https://www.phoronix.com/scan.php?page=news_item&px=mtgxmde)

------
hyperpape
What is the current goal with Servo? The last time I felt well informed, I
think it was described as just a research project, with zero intention to ever
supplant Firefox. Is that still the case? There seems to be an awful lot of
promise and effort if there's no plans to make it a production ready browser.

~~~
elektronjunge
At worst firefox will use some of the libraries that come out of servo.
Firefox is supposed to use the url parser from servo by 2016.

~~~
kibwen
Here's the patch that's tracking adding Servo's Rust-based URL parser to
Firefox:
[https://bugzilla.mozilla.org/show_bug.cgi?id=1151899](https://bugzilla.mozilla.org/show_bug.cgi?id=1151899)

------
loudmax
If Servo becomes the default layout engine for Firefox, I really hope that
having one more engine in the mix forces everyone towards standards
compliance, or at least uniformity. Obviously, they're still working out basic
functionality, so they've got a way to go before that becomes a concern. But
if the project is successful, it's going to be one more browser type for web
designers to worry about. Either that or Servo's multi-threaded speed and
safety are so awesome that all the major browser developers decide to ditch
their own engines and everybody settles on Servo.

~~~
larsberg
One fun thing about reimplementing the Web Platform is that you run across all
of the spec holes (particularly in much older features, like tables, borders,
etc.). Where possible, we're trying to at least determine what current
browsers do with the intent of codifying those behaviors in the specifications
and W3C cross-browser test suite.

That said, if Trident/Edge, Webkit/Blink, and Gecko don't all agree on the
implementation of an older feature, we know that it will be a challenge to
find middle ground and get things changed and the spec updated to anything
more than softer statements using, "MAY."

------
higherpurpose
I have a feeling Servo will finally make me give up Chrome. From what I've
seen so far the performance is _very_ impressive [1]. I just wonder if
Elecrolysis will ever arrive. It seems like I've been waiting for it forever.
Chrome's sandboxing is great for security _and_ performance purposes and I
can't give that up (I never seem to have a problem switching to another tab
even when I have 40 of them open in Chrome, while in Firefox the whole browser
"hangs" sometimes when I load a heavy tab).

[1] -
[https://www.phoronix.com/scan.php?page=news_item&px=MTgzNDA](https://www.phoronix.com/scan.php?page=news_item&px=MTgzNDA)

~~~
chimeracoder
> I just wonder if Elecrolysis will ever arrive. It seems like I've been
> waiting for it forever.

It's here already, in Nightly:
[https://nightly.mozilla.org/](https://nightly.mozilla.org/) (more info:
[https://wiki.mozilla.org/Electrolysis](https://wiki.mozilla.org/Electrolysis)).

I haven't really had the problem you're talking about in Firefox as it is, but
you can try it out and see if Nightly is any better. Keep in mind that Nightly
is slower overall than Firefox, because it has a number of debugging flags
enabled that impact performance.

Obligatory disclaimer: Nightly has lots of bugs and quirks compared to
Firefox, so it should not be considered indicative of the normal Firefox
experience[0]. Also, many extensions have not yet been ported (which is why
it's available in Nightly for developers before hitting Firefox).

[0] That said, it's pretty damn stable. I'd be using it for my daily browsing
except that I can't live without Vimperator, which hasn't yet been ported to
e10s: [https://github.com/vimperator/vimperator-
labs/issues/211](https://github.com/vimperator/vimperator-labs/issues/211)

~~~
higherpurpose
I know it's in Nightly, but wasn't it in Nightly 3-5 months ago, too?
Shouldn't it have moved to the "next" development version by now, like Aurora
or whichever is the next "more stable" one, if Firefox follows a 6-weeks
development cycle?

~~~
callahad
Not every feature can be completed in a single six-week train, especially one
as complex as rewriting huge chunks of a browser that was not initially
designed with process separation in mind. :)

That said, we should have a go/no-go on Monday for uplift with Firefox 40.
We're getting Very Close Now. :)

~~~
mconley_
If we do the uplift, I believe the plan is also to hold there until we clear
out a bunch of less-critical, but shipping-blocking bugs. So it might be on
Aurora for a few releases.

------
agumonkey
I'd love the servo team to show more demos.

[https://www.youtube.com/watch?v=pZGhnqtXVdc](https://www.youtube.com/watch?v=pZGhnqtXVdc)

------
buster
Could servo-shell be used to implement a keyboard driven browser (a la dwb)?
Looking at [https://developer.mozilla.org/en-
US/docs/Web/API/Using_the_B...](https://developer.mozilla.org/en-
US/docs/Web/API/Using_the_Browser_API) it looks like the API does only offer
few interaction points with the underlying iframe or shouldn't that be a
problem? Can the browser html intercept all key presses and change the iframe
content to display follow links, for example? :) That might be a great way to
finally have a better keyboard driven solution (since, i think that the
browser addons like pentadactyl suck very much).

------
VieElm
Are they planning on implementing a JavaScript engine in Servo as well?

~~~
pcwalton
It uses SpiderMonkey.

~~~
rilut
If possible, will it be very complicated to use V8? Or is it just impossible?

~~~
jomohke
Spidermonkey compares very well with V8:
[http://arewefastyet.com/](http://arewefastyet.com/)

(beats it in Sunspider, is roughly equal in others)

And it maintains the lead in ECMAScript6 support:
[https://kangax.github.io/compat-table/es6/](https://kangax.github.io/compat-
table/es6/)

------
zobzu
I compiled and tried servo+servo-shell just now:

\- it compiles very fast, that's cool

\- it doesn't render my static pages properly, albeit its not too bad

\- its slow as hell (i did use --release for build and run)

:)

~~~
Jweb_Guru
It's definitely not slow at rendering. Network performance isn't great, but
try resizing the window.

~~~
mkishi
It's slower than Chrome on my 2011 Macbook Air. Which is disappointing,
considering it doesn't yet implement the same features.

~~~
mbrubeck
Did you build with optimizations enabled ( _. /mach build --release_)?

~~~
mkishi
I did. I'll definitely have to check it out again, though, because it looks
like pcwalton _already_ fixed it! [1]

[1]:
[https://twitter.com/pcwalton/status/595287602153926656](https://twitter.com/pcwalton/status/595287602153926656)

~~~
mbrubeck
The fix, for anyone who is curious:

[https://github.com/servo/servo/pull/5936](https://github.com/servo/servo/pull/5936)

------
maxsavin
I really like how this sounds. I just really hope CSS is implemented with
great care and detail. Right now - Firefox and IE has a lot of quirks, and I
only find WebKit and Chrome to have it working well. I've been doing CSS
intensely for over 5 years, happy to give my feedback along the way.

