Skip to content
fzzzy edited this page Feb 22, 2012 · 4 revisions

Attending

Brian, Patrick, Alon, Donovan, Dave, Niko, Boris, Brendan

Low-level questions

  • Donovan: got networking half-working
  • Patrick: priority #1: calling from C to Rust; need to get graphics up and running; needs OS event loops which need to call into Rust
  • Donovan: how does libuv even work with SDL?
  • Patrick: two event loops
  • Donovan: ew?
  • Brian: it's good -- separate GUI event loop from I/O
  • Alon: that's a problem we have now, so this is better
  • Donovan: windowing approach?
  • Patrick: native on all platforms
  • Donovan: sounds scary
  • Patrick: not necessarily; I like the modern Chrome approach; major stuff looks native, and other stuff implemented like nested tabs
  • Alon: lot of work
  • Patrick: basically talking about menus, address bar, tabs
  • Dave: want to build UI with HTML/JS
  • Patrick: well, it's canvas
  • Dave: yeah, but want to implement front-end stuff in JS, not in Rust
  • Donovan: Qt, GTK, ...?
  • Patrick: native; only Opera uses a lib (Qt), and it's tough
  • Alon: could we keep in thin?
  • Boris: platform integration is the stuff we really need; events, opening windows; may be able to lift just that out of Gecko; I'd rather not reinvent that
  • Patrick: do we care about plugins? if so we have to go native
  • Alon: well, maybe SDL, just to get up and running

Goals

  • Dave: time out: I'd like to get a game plan in this meeting
  • Patrick: should we set a concrete goal?
  • Niko: Wikipedia
  • Dave: why don't we shoot for Q3 -- we'll get good progress over the summer with help from interns, and that gives us another quarter to push after that
  • Patrick: it's a stretch, but stretches are good
  • Niko: BZ, what do you think?
  • Boris: that will need a lot of stuff; we may find some distractions in Wikipedia that take a lot of time but aren't interesting
  • Dave: that's fine; we can remove them to get a demo standing up
  • Donovan: intermediate goals: 1) command-line browser, 2) canvas
  • Patrick: canvas is a simple milestone
  • Alon: not needed for Wikipedia
  • Patrick: but good test for graphics
  • Niko: what's a command-line browser?
  • Donovan: like lynx
  • Dave: sounds like a distraction
  • Donovan: I disagree, it's not hard
  • Niko: well, maybe if it's truly simple
  • Donovan: yeah
  • Dave: only if it doesn't take any time to polish something that isn't actually part of the goal
  • Alon: series of HTML files building up to Wikipedia?
  • Niko: BZ, do you have real-world examples that make for nice orthogonal tests?
  • Boris: not off-hand; google.com front page used to be but not anymore; plain text file is a stepping stone
  • Dave: we can build tests around what we implement, right? like opcodes in a compiler
  • Boris: well, pieces of the platform are not as compositional as opcodes, so you have to think about how they interact more
  • Niko: the "spike" approach to compilers: think of one interesting spike from top through bottom of platform, build what you need to make it work, stub out the rest
  • Boris: y
  • Niko: we can take Wikipedia and start eliminating

Short-term

  • Niko: where should we start?
  • Donovan: Michael B has his thing that uses SDL, which he used to render Broadway
  • Patrick: I would start with window + events
  • Donovan: 1) networking, 2) SDL, 3) Azure
  • Patrick: those can be worked on simultaneously
  • Donovan: networking's mostly done
  • Patrick: will need to be redone when libuv stabilizes, but for now that's good
  • Donovan: yeah, libuv is still pretty unstable
  • Patrick: need shadow DOM
  • Boris: layout data structures are separate; there's not a 1:1 mapping between shadow DOM and layout
  • Niko: these goals don't include the core problems! i.e., parallel layout
  • Boris: there's data flow and execution flow
  • Niko: ISTM that BZ is one of the few people in a position to validate such a design
  • Boris: I have thoughts on pipeline parallelism, but not as much on dataflow parallelism; don't know enough about Rust yet -- would love to talk with people about that
  • Niko: don't think too much what Rust can currently do; think about the hardware and what you need, and we'll see what Rust needs to do to support you
  • Donovan: my goal for a month or so is to have the net stuff solid, maybe some Azure stuff
  • Patrick: I thought we want SDL for now

Medium-term

  • Patrick: big picture:
  1. DOM.js + shadow DOM
  2. frame tree
  3. layers
  4. rendering engine in the back
  • Patrick: good to get a plan of how those'll be implemented; gonna need frame tree in Rust
  • Niko: that's detailed enough for now; I'll work on it with BZ
  • Donovan: I'm more interested in low level stuff, happy to let you guys drive the high level parallel algorithms
  • Boris: I don't know graphics enough; cjones?
  • Patrick: I have more experience with that now after working on Fennec
  • Donovan: have folks read the Berkeley paper? (http://www.eecs.berkeley.edu/~lmeyerov/projects/pbrowser/)
  • Dave: as we go along, think about what platform elements we could throw out for better perf, or back off to slow paths
  • Boris: sure
  • Patrick: also do that in the open! don't surprise people with silently breaking compat, but turn it into a conversation
  • Dave: and make sure to have an alternative that works better; don't just wantonly remove functionality

JS integration

  • Donovan: should discuss Rust-SpiderMonkey bindings
  • Brian: put it in Cargo, good stress test for Cargo
  • Donovan: I have test.rs, which starts an actor for each command line argument; uses DOM.js parser
  • Brendan: do we have WeakMap and Proxy overload?
  • Donovan: should ask David
  • Boris: with private names we could improve the performance
  • Donovan: still need proxies
  • Dave: isn't document.all the one thing we can't virtualize?
  • Boris: yes, it acts like a falsey object
  • Brendan: ah yes, "masquerades" as undefined
  • Boris: I have some data on proxies: roughly 1 microsecond hit per property access; but if we control the proxy we can eliminate a lot of extra checks we know aren't needed

Long term

  • Brendan: I've been talking about Servo with yearly goals; aim for the future
  • Brendan: before summer, want to see what Ras and Leo have done; let's all make sure to read their papers
  • Boris: send links to papers?
  • Brendan: I'll do that
  • Patrick: we should do fish tank demos
  • Brendan: yes. need both sizzle and steak
  • Boris: I'll be in SF in late March for work week; we can do more whiteboarding then