24 comments

[ 5.3 ms ] story [ 55.6 ms ] thread
(comment deleted)
The killer feature in this week's newsletter is an image of using Servo itself to post this link to HN :-)
I can appreciate the honesty of that video.
I wonder if anyone has thought of including screencasting in bug reporting for bugs in guis?
We used to use LICEcap at my old work for that.
Wonderful, you just make aware of the software that do exactly what I need today :-)
For anyone wondering how to do this on linux, I use recordmydesktop and ffmpeg to make small webms (~2mb). Highly recommend it.

    `recordmydesktop --windowid $(xwininfo)`

 and click the window you want to record. 

    `ffmpeg -i out.ogv -o final.webm` 
and you're done! recordmydesktop is available in most distros afaik.
And for anyone wondering how to do this on OSX, QuickTime Player v10 (né QuickTime X) File > New Screen Recording > click big red button > select display section > Start Recording
I used kazam to make this (and ffmpeg/convert to make it into a gif). But yeah, recordmydesktop works too.

Though it has a small bug where, when recording a single window, the mouse position isn't shown correctly in the final video. (Instead of showing where the mouse was relative to the window, it takes the absolute position of the mouse and scales it down to the window size)

How come passing $(xwininfo) works? xwininfo outputs a lot more than just the window ID
I don't know why I said that it would. It doesn't.

This works, though:

    recordmydesktop --windowid $(xwininfo | grep 'Window id' | cut -d' ' -f4)
though its worth noting that it theoretically could detect that its being redirected and only output the window id
https://lookback.io lets you do that on mobile. The neatest implementations have it show up if the user shakes the phone.
This bug (input field doesn't scroll automatically, but spills its text into the surrounding elements) is a good demonstration of just how many, many small details you have take care of when implementing a browser engine.

A really monumental task. The servo devs have my respect!

Maybe I'm missing something hugely obvious, but shouldn't the input field be rendered using a native control which would preemptively eliminate that bug and reduce the need for rewriting code that's been written countless times before?
There's probably many reasons, but one is that native controls don't support everything in CSS.
dumbmatter is correct, we can't arbitrarily style things via CSS with native controls.

Eventually we do want them to look more like the controls on the platform they're running on, though.

> shouldn't the input field be rendered using a native control which would preemptively eliminate that bug and reduce the need for rewriting code that's been written countless times before?

Broadly speaking, native controls don't like being composited into OpenGL scenes (which are necessary for things like 3D transforms).

Saved into dead animation format, GIF. :(
You mentioned the URL-parsing macro twice.

Congrats to the whole team!

(Copying my comment here from Reddit /r/rust:)

Just to repeat, because this was somewhat buried in the article: Servo is now a multiprocess browser, using the gaol crate for sandboxing. This adds (a) an extra layer of defense against remote code execution vulnerabilities beyond that which the Rust safety features provide; (b) a safety net in case Servo code is tricked into performing insecure actions.

There are still plenty of bugs to shake out, but this is a major milestone in the project.