mirror of
https://github.com/servo/servo
synced 2026-04-25 17:15:48 +02:00
Page:
Meeting 2013 11 04
Pages
Adding a new WebIDL binding
Alternative Logo Proposals and Related Swag
Asynchronous WebAssembly compilation project
Austin Oxidation
Autogeneration of style structs
Basic SVG support project
Beginner's guide to rebasing and squashing
Benchmarking
Benchmarks
Bots
Browser Engine Research
Build Errors FAQ
Buildbot administration
Building for Android
Building for Magic Leap
Building for UWP
Building on ARM desktop Linux
Building
CI Services we use
CSS parse error reporting
CSSOM student project
Canvas rendering project
Cargo upgrade service project
Code rust concurrency
Code Review
Code of Conduct
Coding standards
Compiler upgrade recipes
Compositor Layer Design
Contributing
Control Servo using WebDriver
Creating and viewing WARC web archives in Servo
Creating new OpenSSL Windows binary distributions
Cross compiling from linux to mac
Crowbot
Css selector matching meeting 2013 07 19
DOM Design
DOM documentation
DOM missing pieces
Debugging JS web compat issues
Debugging and editing tools
Debugging
Design
Developer tools student project
Devtools CSS errors
Devtools plans
Devtools
Diagnosing SpiderMonkey JIT issues
Eric Atkinson visit 2013 09 10
Events and sundry
Expand HTTP request response monitoring
Fetch improvement project
Firefox Reality release notes
FirefoxReality build
Firewall setup for servo master1
Focus student project
Form validation student project
GSoC project brainstorming
Garbage collected DOM
Getting started with layout
GitHub Labels
Github & Critic PR handling 101
Github workflow
Glossary
Governance
Graphics toolkit integration
HTML parser improvement project
HTMLElement binding conversion
HTTP archive support project
HTTP library requirements
Hawaii Rooting
High priority content for layout
Highfive
HoloLens 2 test plan
Home
How to generate GStreamer binaries for CI
Image load conformance student project
Image maps project
Implement HTML charset parsing project
Implement ImageBitmap project
Implement missing WebAudio automation student project
Implement support for missing XMLHttpRequest APIs
Implement worker modules
Implementing a web standard (RGSoC)
Improve specification conformance of unicode bidi library
Incremental flow tree construction
Infrastructure
Integrate xml5ever
Intern project brainstorming
Intern projects
JS objects, wrappers, and cross origin concerns 2013 08 07
Layout 2020
Layout Overview
Layout resources
Layout revamp ideas
Leo meyerovich visit 2013 07 22
Linux sandboxing
London Oxidation
London Security
Meeting 2014 10 27
Meeting 2014 12 08
Meeting 2012 02 08
Meeting 2012 02 16
Meeting 2012 07 20
Meeting 2013 04 01
Meeting 2013 04 15
Meeting 2013 04 22
Meeting 2013 04 29
Meeting 2013 05 06
Meeting 2013 05 13
Meeting 2013 05 20
Meeting 2013 06 03
Meeting 2013 06 10
Meeting 2013 06 14
Meeting 2013 06 17
Meeting 2013 06 24
Meeting 2013 07 01
Meeting 2013 07 15
Meeting 2013 07 22
Meeting 2013 07 29
Meeting 2013 08 05
Meeting 2013 08 12
Meeting 2013 08 19
Meeting 2013 09 09
Meeting 2013 09 16
Meeting 2013 09 23
Meeting 2013 09 30
Meeting 2013 10 14
Meeting 2013 10 21
Meeting 2013 10 28
Meeting 2013 11 04
Meeting 2013 11 18
Meeting 2013 11 25
Meeting 2013 12 02
Meeting 2013 12 09
Meeting 2013 12 16
Meeting 2014 01 06
Meeting 2014 01 13
Meeting 2014 01 21
Meeting 2014 01 27
Meeting 2014 02 03
Meeting 2014 02 10
Meeting 2014 02 24
Meeting 2014 03 10
Meeting 2014 03 17
Meeting 2014 03 24
Meeting 2014 03 31
Meeting 2014 04 07
Meeting 2014 04 14
Meeting 2014 04 21
Meeting 2014 04 28
Meeting 2014 05 05
Meeting 2014 05 13
Meeting 2014 05 19
Meeting 2014 06 09
Meeting 2014 06 17
Meeting 2014 06 23
Meeting 2014 06 30
Meeting 2014 07 07
Meeting 2014 07 14
Meeting 2014 07 21
Meeting 2014 07 29
Meeting 2014 08 04
Meeting 2014 08 11
Meeting 2014 08 12
Meeting 2014 08 18
Meeting 2014 08 25
Meeting 2014 09 08
Meeting 2014 09 15
Meeting 2014 09 22
Meeting 2014 09 29
Meeting 2014 10 06
Meeting 2014 10 13
Meeting 2014 10 20
Meeting 2014 11 10
Meeting 2014 11 17
Meeting 2014 11 24
Meeting 2014 12 15
Meeting 2015 01 05
Meeting 2015 01 12
Meeting 2015 01 26
Meeting 2015 02 09
Meeting 2015 02 23
Meeting 2015 03 02
Meeting 2015 03 16
Meeting 2015 03 30
Meeting 2015 04 06
Meeting 2015 04 13
Meeting 2015 04 27
Meeting 2015 05 04
Meeting 2015 05 11
Meeting 2015 05 18
Meeting 2015 06 01
Meeting 2015 06 08
Meeting 2015 06 15
Meeting 2015 07 06
Meeting 2015 07 13
Meeting 2015 07 27
Meeting 2015 08 10
Meeting 2015 08 17
Meeting 2015 08 24
Meeting 2015 08 31
Meeting 2015 09 14
Meeting 2015 09 21
Meeting 2015 09 28
Meeting 2015 10 05
Meeting 2015 10 12
Meeting 2015 10 19
Meeting 2015 10 26
Meeting 2015 11 02
Meeting 2015 11 09
Meeting 2015 11 16
Meeting 2015 11 30
Meeting 2016 01 04
Meeting 2016 01 11
Meeting 2016 01 25
Meeting 2016 02 01
Meeting 2016 02 08
Meeting 2016 02 22
Meeting 2016 03 07
Meeting 2016 03 21
Meeting Devtools Servo 2
Meetings
Microdata project
Minutes Hackathon 2012 03 27
Missing DOM features project
More ServiceWorker support project
More developer tools student project
Mozlandia Automation
Mozlandia B2S
Mozlandia JS
Mozlandia Rust In Gecko
Mozlandia WPT
Mozlandia gfx
Mozlando Devtools Servo
Mozlando Oxidation
Mozlando SM Servo
Mozlando Servo Bluetooth
Mozlando Servo MagicDOM
Mozlando Servo SMStrings
Mutation observer project
Mutation testing project
NCSU student projects
Network security project
Off main thread HTML parsing project
Offscreen canvas improvements project
Offscreen canvas project
Orlando Oxidation 2018
Oxidation 2015 11 05
Persistent sessions student project
Preparing ARM libraries for CI
Priority of CSS properties
Priority of DOM implementation
Priority of dom bindings
Private browsing student project
Profiling
Project proposal deadlines
Prototype JS form controls student project
Prototype ways of splitting the script crate
Publishing a new ANGLE NuGet version
Publishing a new app store release
Push vs Pull for caching
Random web content project
Refactor GLES2 student project
Refactor bluetooth support student project
Remaining work
Removing push notifications from IRC hooks
Replace C libraries student project
Report new contributors project
Representation of computed style
Research
Reviewer
Roadmap
Running Web Platform Tests on Servo
Rust HTML parser
Rust SpiderMonkey debugger API
Rust cssparser code walk 2013 08 02
SaltStack Administration
San Francisco Oxidation
Servo Benchmarking Report (December 2024)
Servo Benchmarking Report (November 2024)
Servo Benchmarking Report (October 2024)
Servo Layout Engines Report
Servo and SpiderMonkey Report
Servo for Gecko Developers
Specification Links
SpiderMonkey related tasks
SpiderMonkey infodump
SpiderMonkey upgrade details
Storage student project
Streaming webassembly student project
Strings
Student project brainstorm
Student projects
Styling overview
Stylo hacking guide
Summer of Code 2014: Implement XMLHttpRequest
Summer of Code 2016: Fetch API
Summer of Code 2016: File support
Summer of Code 2016: ServiceWorker infrastructure
Summer of Code projects
Summit meeting 2013 09 09
Support WebDriver based tests project
Syncing web platform tests (WPT)
TaskCluster
Testing
Tools
Tracking intermittent failures over time project
Transcription Notes from Servo Architecture talk in Suwon
Transcription notes from rust patterns talk in suwon
Transcription parallelism
Transcription rust concurrency
Transcription rust runtime
Transription layout and acid2
Trinity College Dublin student projects
UPenn student projects
Updating the Rust compiler used by Servo
Upgrading non taskcluster linux CI machines
Upgrading the UWP gstreamer binaries
Upgrading the windows LLVM binaries
Upgrading wptrunner
Using DOM types
Using Rust Spidermonkey Prototype
Using WebWorker Prototype
Version 0.1
Videos and presentations
WebAudio JS interfaces student project
WebAudio nodes student project
WebCompatBug
WebSocket student project
Webdriver student project
Webdriver tests student project
Webrender Overview
Whistler 2019 notes
Whistler Bugzilla
Whistler FFOS
Whistler GFX
Whistler Houdini1
Whistler Houdini2
Whistler Necko
Whistler Oxidation 2019
Work items for new contributors
Workweek COW DOM
Workweek alt js
Workweek android arm
Workweek boot 2 servo
Workweek compiler lints
Workweek displaylist
Workweek dogfooding
Workweek encoding
Workweek generated content
Workweek governance
Workweek graphics stack
Workweek graphics toolkit
Workweek incremental layout
Workweek js bindings status
Workweek layers
Workweek layers2
Workweek pixels
Workweek rasterization
Workweek reftests
Workweek roadmap
Workweek script crate
Workweek security
Workweek string interning
Workweek tables
Workweek writing modes
XML parser student project
infra triage notes
jQuery status
webxr.today support
Clone
1
Meeting 2013 11 04
Lars Bergstrom edited this page 2013-11-04 11:36:36 -08:00
Table of Contents
Servo Meeting 2013-11-04
Agenda
- Mac builder failures ( example: http://servo-buildbot.pub.build.mozilla.org/builders/mac/builds/510/steps/shell/logs/stdio )
- next year's priorities
- layout
- content
- graphics
- shell/embedding/arch
Attending
azita, brson, dherman, simonsapin, pcwalton, jdm, lbergstrom, jack, kmc
Samsung trip
- azita: bring a warm jacket! slacks or jeans + button-down / polo.
- azita: just bring laptop+power cord. No security sticks / writeable media. Phones should be fine. We have to go through a security check.
- simonsapin: can't join because I will be in Shenzhen. I can probably call in about CSS one day other than Monday or Tuesday.
- jack: what time works for you?
- simonsapin: just one hour time zone behind
- jack: we'll try to schedule something for Wed/Thurs (Simon: Wed possible, Thurs/Fri preferred)
Mac builder failures
- jdm: we have been seeing mac builder failures on changesets that should not call them. Mainly timeouts in the contenttests. Only brson & jack have access to the builders. Should we try writing the harness in python instead to see if there's a Rust bug?
- jack: there is a Rust bug with stdrun. Was causing failures (race) when the process died quickly.
- jdm: Not using stdrun anymore, but still the same mechanisms under the hood. They did not magically fix it.
- pcwalton: acrichton does not know of any races in stdrun. We might be hitting different code paths, but it's tested in Rust. There are scheduling bugs in Rust, but not related to it.
- jack: Can get you releng access (need your ssh key). Happy to hear other ideas for how to figure out what's causing this.
- jdm: I'll just try a python rewrite to get a new data point?
- pcwalton: Sure. Just logging into the bot and trying to reproduce it would help diagnosis, but the python approach seems reasonable.
- jack: I'll try to reproduce it on a builder while you rewrite it, and hopefully we find a real solution.
Priorities
- jack: come up with ideas in these areas (layout/contents/graphics/arch) and add to the lists?
- kmc: maybe the list on the wiki? Order it? https://github.com/mozilla/servo/wiki/Version-0.1 https://github.com/mozilla/servo/wiki/Roadmap
- pcwalton: 0.1 is basically right. DLBI needs to be incremental reflow (as we saw when kmc started working on it). So, put incremental reflow there and we're pretty set. DLBI will come after / with it.
- kmc: Missing piece is reusing the render tree.
- pcwalton: Incremental box building is by far the most important thing that we need. The overarching goal of 0.1 should be demonstrating the feasibility of servo. By showing it's a full proof of concept. Needs to be convincing, so need to have all of the "bits" of other browsers working kind of OK. With reflow speed we're seeing, pretty excited - there is promise. Shows Rust can be fast enough, definitely.
- pcwalton: maybe de-emphasize embedding api?
- jack: missing stuff from the summit feedback (inlining C++ to deal with SpiderMonkey, content stuff?)
- pcwalton: demonstrating feasibility
- dherman: Lots of ways to define feasibility. What is yours?
- pcwalton: inlining?
- jdm: SpiderMonkey is built to support inlining, and our C wrappers will break and possibly destroy JavaScript performance.
- jack: memory management is complicated. If we have to duplicate it with C/Rust, it will diverge from their plans. Very few SpiderMonkey engineers thing anybody should touch the memory bits ever. Set off by our tracehooks for proxy classes, which they had removed. They did not want to put them back in. Concerned that we duplicate all this code in Rust and that it's not a scalable strategy. Leading strategy is to compile SpiderMoneky with LLVM and inline it with Rust.
- pcwalton: orthogonal to trace hooks issue. If that's true, then we should push it on the Rust side, if necessary. If there's a concern that Rust doesn't inline enough, the fact that our reflow is 20-70% better than the competition destroys that w.r.t. C/C++.
- jack: More concerned about getting this memory boundary stuff wrong, which is more likely if we duplicate the code (or there is divergance).
- jack: single inheritence for managing the DOM as well. Need to make it so we can write these DOM bindings without a lot of pain. They're not super-fun right now.
- pcwalton: Yes, definitely. Again a Rust issue.
- kmc: Concur. Worried about not having a good solution to that and need one from the Rust side.
- pcwalton: All very good things.
- jack: Graphics. Need solution to multi-process. Know pcwalton is working on that.
- pcwalton: Trying to get that up today!
- jack: First milestone on that is just getting the compositor off in its own process. Can spread the rest of the tasks later. Just one out gets us split up.
- pcwalton: Noticing many of our messages are questionable and need refactoring for multi-process. Probably just a day or so of work to clean them.
- pcwalton: In terms of reflow, just need to show that since we already show good performance, getting incremental and CSS selector matching would help with demonstrating good perf. Based on the data we have, it's not that difficult once the algorithms are in place.
- jack: Our perf & sec. vuln. story is strong. How are we going to demonstrate the feasibility of parallelism? Need selector matching parallel; layout parallel?
- simonsapin: increment reflow only for first? Or for modifications from javascript as well?
- pcwalton: all in one unified framework
- simonsapin: do we have enough of the DOM in place to test it?
- pcwalton: yes
- pcwalton: for parallelism, CSS is parallelized (samsung landed it). On an 8 core, we're still 12-13x slower than gecko b/c we don't intern strings. We need concurrent hash map for that to work. Seo had a good suggestion (optimistic cuckoo hashing). Parallel layout, this is the Big Thing, possibly most important open question we're tackling. Need Chase-Lev Deque. Those are high-priority, but hard. Need to implement the traversals in parallel (non-trivial, though easier). Layout is set up to be parallelized. Once we have the data structures, pretty set. That's important to find out how much it'll buy us. Another possibility is just divide-evenly w/o deques (partition the work evenly).
- jack: is there a middle ground?
- pcwalton: could lock on the deque.
- kmc: Should be a pluggable thing to switch to chase-lev deque...
- pcwalton: Can switch when we it's available. Then could focus on the traversals.
- jack: If the rust scheduler's already doing this, couldn't we use it for us?
- pcwalton: tasks are used in the scheduler. switching tasks is probably going to be too expensive (register switching). Margaret showed task-per-node did not work well. Need better division of work as partitioned data, not tasks or you suffer from granularity.
- kmc: lighter abstraction than task from Rust that would help us?
- pcwalton: would be great if there was a lighter-weigh task for this. problem is that tasks have a stack.
- kmc: work-stealing units could be uninterruptable tasks...
- pcwalton: yeah, then run them on the same stack. Would be reasonable.
- kmc: Could have a Rust scheduler for running those tasks.
- brson: a work-stealing abstraction we could share with Rust would be great. The rust scheduler does a lot of stuff servo doesn't need.
- jack: is the current work-stealing stuff that it does available?
- brson: there's a paper. It's just the basic work-stealing algorithm. the data structure is the hard stuff.
- jack: is it easier to implement the rust data structure?
- brson: Sure, you can definitely steal that.
- jack: Let's steal the rust deque, implement our own work-stealing, and use that as our starting point for the traversal. Optimize the pieces as we go along. Good for a first cut?
- kmc: I'd be interested in cuckoo hash table for interning and can do it right now. Priority of that vs. rustpkg work.
- pcwalton: how much is left on rustpkg?
- kmc: Idea was that servo would force rustpkg to be done would help rustpkg be ready for release.
- jack: Most of the time has been spent on Rust upgrades to get new rustpkg updates. Generally 1.5 hours to find the next problem, then a few multi-day to week Rust<->Servo updates and bugfixes. The delay isn't rustpkg. And it really isn't that important for servo.
- pcwalton: less flaky builds would help. A two week Rust upgrade is tough.
- kmc: Did we just get the easy subset of dependencies?
- jack: Yes, it's everything with pure Rust, no dependencies or depndent on rust packages. Next is rust-cocoa, etc. with single C files. Then, stuff like rust-cssparser that has a prebuild step where it has to do something before it can build because it generates source files.
- simonsapin: Needs a way to have rust code generated by running some other code. Not necessarily a previous step...
- jack: rustpkg supposedly supports this now. I did the Rust upgrade. Haven't gotten back to it yet. Not sure what to do, because it will bitrot otherwise. Would be nice for somebody else to look at it instead.
- pcwalton: Can we just land it?
- jack: I think kmc's looking at it
- pcwalton: Then let's push it and get it in.
- kmc: Last week was a Rust upgrade. Could push the stuff you alredy migrated and land it here.
- jack: brson, having to upgrade Rust to get new rustpkg features is causing a lot of delay. Is there a way to spin it independently?
- brson: Could backport rustpkg and let you have the revision you're using.
- jack: Could we just split rustpkg out / duplicate it? Is it standalone?
- pcwalton: the problem is Rust's level of churn. Need to start deciding on unwrap vs. get, stop changing stuff.
- jack: Not as big of a problem; they were mechanical. This time was strcat's change where enums got compressed into the smallest possible type. Burned us badly. Bugs in it, and then when we got those fixes, the new Rust that had also landed had more bugs. Not sure how we could change that. API changes are really not that bad for us.
- kmc: The enum change broke code relying on the layout of structures?
- jack: Internal rust bug with destructors.
- kmc: can we be more robust to Rust changes? More asserts, etc? But if it's mainly Rust bugs, nothing we can do to help.
- jack: parallel, content important. Graphics under control. Anything else?
- pcwalton: embedding thing. Maybe over-emphasized? Have proof-of-concept webkit thing.
- jack: these 0.1 were joint Samsung/us, and embedding mattered more to them.
- pcwalton: I think we can duplicate the minibrowser/webkit API. Though if everybody's moving to blink, maybe that's more important anyway. There are zero windows users of webkit now. When do we want to have a browser people can download and play with. Right now, it's not impressive enough.
- dherman: in 2015, critical to have a pretty visual design with minimal chrome and a browser that feels like the new, lean, disruptive hotness. in 2014, just something for the bleeding-edge people to play with. Fine for a 0.3/0.4 mid-2014 thing. Good for the group to have something we can fire up, though there's already something we have.
- pcwalton: doing the exercise helped us find stuff we need to do (e.g., stopping polling the event loop)
- jack: definitely not as high-priority as the layout stuff. Probably a low-priority task until it gets done. Resize, etc. from the shell has found a lot of problems. Also, at the layout/graphics workweek for layout features, dbaron and others mentioned tables but a lot about flexbox. It may be the more interesting thing for us to try. That's my vote for going forward on features. Not super-enthusiastic about going acid2; acid3; etc. More interested in flexbox, tables, etc. In the near-term, pick one of tables or flexbox for layout features. Lot of talk about CSS transitions & web animations. Google is going to rewrite their CSS transitions code to be on top of web animations, which is probably a good approach for us as well. Several intern descriptions about CSS transitions; change to web animations.
- pcwalton: need incremental box building before any of this (layout/reflow)
- jack: any other things? layout & content seem the biggest ones. graphics and shell seem pretty established now. The last hard thing on graphics is GPU scheduling, but that's a problem for everybody.
- pcwalton: some crashes and races left. Somebody should dive in. Multi-process will probably fix it. But there are some other races during resize, which is scary. Our GPU rendering is also not fully baked. Has issues with way too many GL resouces all the time.
- kmc: memory leaks. and OpenGL capabilities Nvidia does not support. Bugfixes and making things more portable, but nothing huge.
- pcwalton: Shown our graphics architecture is viable. Similar to what Gecko uses anyway (but cleaner).
- kmc: Dovetails with gradients; do layered gradients on the GPU for content.
- jack: Everything in the compositor is a texture/surface. And we don't use any GPU skia stuff except creating the drawtarget, so we've abstracted both sides, allowing us to mix them.
- pcwalton: and move to D3D without any servo changes. Just change to rust-layers.
- jack: gecko uses ANGLE for something? Bootstrap windows?
- pcwalton: rendergl is like 500 lines.
- kmc: linux OSX have their own ideas of passing surfaces to the card
- jack: bas will know the answer... been avoiding it because it doesn't seem that important. Another platform is hard - we barely maintain Android.
- kmc: An intern would be nice, but it's sure to bitrot.
- jack: Yeah, until we are sure we want to support Windows, we shouldn't even trial port it.
- kmc: Should keep Windows in mind for multi-process, sandboxing, etc.
- jack: we can ask the graphics team for anything we should be on the watch for. They reviewed it all and it seemed fine for now.
- jack: I'll try to beef up the wiki pages for this week. You guys should think about what kinds of stuff you want to work on over the near term. Samsung probably has stuff they're interested in.