HNHacker News
TopNewBestAskShowJobs

larsberg

3,475 karma · joined May 27, 2009

http://www.lars.com/
submissionscomments
larsberg··on Servo nightly builds on Windows now available
Shouldn't be too bad - we already build the zip and would just need to upload it, too! https://github.com/servo/servo/issues/16437
larsberg··on Servo nightly builds on Windows now available
Shouldn't be too bad - we already build the zip and would just need to upload it, too! https://github.com/servo/servo/issues/16437
larsberg··on Servo nightly builds on Windows now available
The awesome avadacatavra is working on a plan right now to move us off of OpenSSL: https://github.com/servo/servo/issues/7888#issuecomment-2934...

TBH, it's been hard to prioritize work to fix OpenSSL issues when we all knew it was going away from the dependency list. However, I don't think anybody anticipated the scope of work required to get there :-)

Sorry for the inconvenience!

larsberg··on Servo nightly builds on Windows now available
That's exactly the case for my family! However, we lost our umlaut at Ellis Island.
larsberg··on Servo nightly builds on Windows now available
I get an inquiry to buy lars.com about once a month, but never anything more than a few 10ks. Which is a lot of money, but the hourly rate doesn't work out very well when you consider I've been using and would have to update that e-mail address everywhere since 1997.

It has been pointed out more than once to me that I could instead of purchased many other .com names that were available at that time and be semi-retired :-)

larsberg··on Intel Haskell Research Compiler
It's wonderful to see this released! There was so much great research going on here that overlapped with work we were doing in Manticore and that was going on in other optimizing compilers for statically typed high-level languages, but the details always required talking to Neal or Leaf.

I can't wait to dig in and finally learn more than I could at after-conference drinks :-)

larsberg··on CakeML – A Verified Implementation of ML
> I wonder how OCaml and Haskell managed to keep implementers active.

Members of that community could probably comment better than I, but it doesn't hurt that Microsoft Research supported two core Haskell team members and Inria has supported core OCaml work for most of the lifetimes of the projects. Their better corporate focus has also meant that as some fabulously enlightented BigCos took dependencies on them (most notably Standard Chartered for Haskell & Jane Street for OCaml), they've both hired core developers and supported the communities. I should add that these have been fantastic for the PL community in general and specifically ICFP funding & attendance!

For as much as the members of any one community might have differences of opinion with the choices of the others, success of any benefit us all. Even if we do grumble occasionally with the "can't get into ICFP this year unless you're in language {X}!" comments, where X was Scheme, then ML, then Haskell... :-)

> people are not really prototyping the new ideas

Yeah, John's group plus Matthew Fluet and a little bit of myself are trying to clean up Manticore enough to do a "final" release and journal paper, and that is kinda taking up a lot of our extra cycles. Several other folks have either retired or moved on to new areas (security, compiler verification, etc.).

I think that if we could find some places where the new ideas intersected with interesting novel (read: fundable) research topics, there'd be some additional energy into implementation work around them. Right now, certainly, stuff exists, at best, in private forks of (typically) MLton.

larsberg··on CakeML – A Verified Implementation of ML
You can hear a bunch more about the full history of development of SML and interaction with OCaml here: https://www.youtube.com/watch?v=NVEgyJCTee4

I would definitely agree with the opinion above that the SML language designers fall in the camp of deliberating extensively and fully formalizing all new language features before considering them for inclusion.

Today, there are two challenges right now in the Successor ML space:

- There's some broad agreement on a few things that should obviously be improved, but today many of the implementation owners don't have a huge amount of time, so getting them to also agree to the new features is complicated. Life is way easier when you only have one implementation.

- There's a bunch of fantastic ideas (largely driven by Bob Harper) to integrate stuff like parallelism, cost model, etc. that will be fantastic for a next version of the language and specification. It's just a lot of work, and not really publishable, so it's mainly tenured faculty and "alumni" (like myself and probably the people you work with) driving it forward in our free time.

That said, I still love working on SML and its implementations (I mainly contribute to SML/NJ and Manticore) and it's a wonderful escape from the grim reality of quarterly goals and "get it out the door" release deadlines :-)

larsberg··on A Quantum Leap for the Web
I'll do the CI work to keep it building :-)
larsberg··on A Quantum Leap for the Web
Project Quantum is an opportunity to ship some of the Servo components in Firefox and gain millions of users, real-world tests of the technology, and hopefully dramatically expand our contributor base. As we mention in a post to the Servo mailing list (https://groups.google.com/forum/#!topic/mozilla.dev.servo/3b... ), Servo has a lot coming in 2017 unrelated to Project Quantum or Firefox.
larsberg··on Shipping Rust code in Firefox
There are a couple of big pieces of work here:

1) Making the "cargo vendor" story work better. rust-url has a bunch of dependencies, and you have to get them all in-tree.

2) More security review & planning. URL parsing is scary! And we'd want to ship & run it alongside the C++ one to check for places where rust-url is not fully web compatible, but there are major privacy issues in reporting back anything more than "1 failure," even for users who have explicitly opt'd in to reporting back data.

But the team is definitely working on both of these pieces and I'd hope to see it in the near future. No timeline / release number promises, though, right now :-)

larsberg··on Rustls: new, modern TLS library written in Rust
As we mentioned in the recent Security meetings notes (https://github.com/servo/servo/wiki/London-Security ), there will be a blog post on blog.servo.org in the coming weeks from the folks on the team who are making these decisions.
larsberg··on Servo Nightly Builds Available
I think it's worthwhile! Lack of a comprehensive test suite means:

1) There are seem to still be regressions in pretty fundamental stuff when new features are added. Usually caught before things reach "release" trains, but I see it in bug trackers all the time.

2) Other layout engine managers I've talked with who want to do a layout system rewrite are terrified of anything that doesn't look like a large-scale refactoring because of this issue. I've had the "how are you testing and measuring progress / how do you know you're done with layout?" conversation with most of our engine peers at this point :-)

larsberg··on Servo Nightly Builds Available
We're hoping for days, but it needs a lot more testing. We're (unfortunately, due to some font-related issues) still building Windows with the mingw toolchain, which makes build & packaging more complicated.
larsberg··on Servo Nightly Builds Available
> you can just implement the spec and have a web browser that works

Don't forget the amazing work being done at http://testthewebforward.org/ with the Web Platform Tests and your own work on the CSSWG tests! Beyond the specs, having a cross-browser set of tests that have especially good coverage on newer specs has been a huge leg-up for Servo!

It not only helps us ensure interop for those features that are tested, but (puts on former dev manager hat) it really helps quantify how many work items are left until a feature is closer to completion. I especially notice it when there are areas like CSS 2.1 where the tests are less comprehensive and it's harder to quantify what our progress/status is.

larsberg··on This Week In Servo 69
You can follow along with the process of shipping Rust code in Firefox here:

http://wiki.mozilla.org/Oxidation

larsberg··on Using Reviewable.io for Code Review
I can't recommend Reviewable highly enough! We've been using it for a long time now on Servo (https://github.com/servo/servo/). The author has been amazingly responsive with fixing bugs, dealing with GitHub issues, improving scalability on reviews with thousands of files or hundreds of thousands of lines of changes, making it work with really horrific rebase-heavy workflows, etc.

If you're using the GitHub code review UI today, reviewable is pretty much an immediate upgrade. We've found that we use it for anything non-trivial. So, if it's more than a few lines or would take more than a couple of comments, we use Reviewable instead.

Pretty much the only things we have issues with are:

- The UI is a little fancy. Sometimes figuring out how to get back to the PR itself so that I can tell our autolander service (http://homu.io/) to land the PR is hard because the dancing CSS butterflies get in the way :-)

- We're a Mozilla project, so we disproportionately use Firefox. Let's just say it's not the browser of primary testing (though it's ahead of some others!), given the demographic of developers who access GitHub.

- Every once in a while really long-lived PRs get rebased, squashed, and reordered so many times that all of the introduced pseudo-commits are bigger than the actual thing to review itself. I'm really not sure what could be done to help here, though.

larsberg··on Show HN: Better code review for GitHub
I'd like to echo this comment. Piotr has been amazingly responsive to problems with bugs or performance issues that we have hit (the Mozilla Servo team).

Apart from the UI, Reviewable also handles many of the really ugly "they did an over-under rebase, force-pushed, did another, then flipped back" cases that come up with longer-lived PRs and manages to keep the review state reasonable better than any other tool I've seen. And we've tried quite a few of them :-)

larsberg··on This Week in Servo 43 (submitted via Servo itself)
The killer feature in this week's newsletter is an image of using Servo itself to post this link to HN :-)
larsberg··on First Timers Only
We also try to have good starter bugs on Servo (and its myriad dependencies):

http://servo.github.io/servo-starters/

One of the biggest challenges we have is keeping some around and available! The good ones almost always have an opened PR within 24 hours:

https://twitter.com/ServoDev/status/665930502503723008

There are a bunch of other benefits to these bugs, including:

- There's a lively stream of people setting up the dev environment for the first time, both keeping our instructions up to date and making sure we handle scenarios like slow internet connections, really old versions of Ubuntu or Linux graphics drivers, etc.

- Reviewing these bugs is also a good way to help grow contributors from committers into reviewers/maintainers.

Most of our challenges with these kinds of bugs are related to GitHub. e.g., you can't "assign" an issue to somebody outside of the project organization, so somebody has to manually label it "Assigned" for our filters to work. Also, you don't get notifications when somebody pushes a new commit to their work branch or rebases, so there's a lot of manual watching of these PRs during the review cycle that sometimes gets dropped (though our myriad GH bots could probably fix this!).

Even with the challenges, we love having this kind of bug as a way to bring in more contributors and keep development on the project accessible, and like the author, I'd highly recommend it to other projects.

larsberg··on Hacking Servo for Noobs
It's a real challenge keeping those good first issues (https://github.com/servo/servo/labels/E-easy ) around! It seems like no matter how many we make, they're claimed within a day or two and fixed within a week. Hopefully, as you and others progress to bigger and harder issues, you'll be able to help us open some more of those good first ones :-)
larsberg··on Hacking Servo for Noobs
I did some training at our last Mozilla workweek that covered the major areas of Servo and had some simple exercises to get you started in each of them:

https://drive.google.com/file/d/0B9-EBhw4XiWEOWFfc0NiUkk5Tjg...

Servo has polyrepo style (many separate source repositories), as opposed to the monorepo style of other browsers. So, it's not just the `components` directory, but many of the ~140 other Cargo crates (https://crates.io/) and raw GitHub packages that come together to form Servo. I have a "deliverable" for Q4 to improve our documentation situation and explain how it all is put together, though this gist is an awesome start!

larsberg··on Mozilla's Servo Engine Now Capable of Rendering GitHub
> Faster builds.

This is a pain point for us, too, on Servo. There's fantastic active work going on for incremental builds, which will solve our most pressing needs (long turn-around on debug changes).

Also, if you're on linux, make sure you're using gold instead of system ld. That change made a huge difference for Servo.

larsberg··on John Carmack working on Scheme as a VR scripting language
Wow! This takes me back to the late-90s. I worked on the Neverworld project, which was a set of Scheme48 extensions for modeling virtual worlds in VRML: http://www-personal.umich.edu/~jeffshuo/neverworld/
larsberg··on Parallel page rendering with Mozilla Servo
Baby steps! We're first trying to figure out how we can share components written in Rust - ideas people have had are URL parsing, media container parsing, image decoding, etc.

If (when!) Servo continues to execute well, plans for integrating more risky pieces will require more top-down planning than the bottom-up, grassroots work that is going on today. As much as I love Servo, even I wouldn't argue we should stop the world and move 200 developers off of Firefox onto working on it full-time for the next year. Such initiatives rarely go as planned.

larsberg··on Parallel page rendering with Mozilla Servo
The comment was meant to be lighthearted, but on the serious side we both:

1) Probably won't have done the full sort of inspection of our SSL cert checking to really ensure you aren't being MITM'd.

2) We won't have a chemspill / 0-day security fix infrastructure in place, so we won't have a way to push down fixes to 0-day exploits in OpenSSL, the JS engine, etc.

I'd love to be at a better point on those features by the end of this year, but it's not likely with our current roadmap & resourcing plan.

larsberg··on Experience Report: Developing the Servo Web Browser Engine Using Rust [pdf]
The first two issues (JIT code compilation and integer overflow/underflow) add up to a significant fraction of the crashing bugs in Gecko that have security exposure. I can't provide specific numbers, but both are well over 10% of that subset of security bugs.

On the correctness of unsafe code, we have very few instances where Servo will actually crash (as opposed to panic and unwind "gracefully"), but they've overwhelmingly been in unsafe code blocks when we weren't properly respecting lifetimes and caused a use after free.

For interactive applications, the ability to incrementally reflow the page (say, after an element's value for the display property is changed) is crucial. Modern browser engines have a ton of code that tries to minimize the amount of reflow performed (and sometimes loses correctness!), because it's really easy to accidentally reflow too much and fail to maintain 60fps. We of course hope that throwing parallelism at layout will solve some of this in Servo, but having a more principled approach to the problem of recomputation is interesting, too.

larsberg··on Measuring data structures: Firefox (C++) vs. Servo (Rust)
Certainly, as njn has brought online each new memory profiling feature, he's discovered something ridiculous we were doing in Servo (e.g., copying things we thought we weren't; continuous memory leaks; poor use of underlying native gfx buffers, etc.). I suspect that in the near term there's plenty of low-hanging "Servo is doing something dumb" fruit to keep us busy while we log some Rust implementation issues for the smaller things.
larsberg··on Servo Continues Pushing Forward
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."

larsberg··on Servo Continues Pushing Forward
Our official roadmap/goals for Servo are here: https://github.com/servo/servo/wiki/Roadmap

So, it's definitely no longer "just a research project," but the challenges of finding initial product targets and building out the rest of the Web Platform are definitely large ones!

← PreviousPage 2 of 23Next →