mirror of
https://github.com/servo/servo.git
synced 2026-05-01 07:14:51 +02:00
Page:
Meeting 2015 05 11
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
No results
1
Meeting 2015 05 11
Lars Bergstrom edited this page 2015-05-11 20:12:46 -05:00
Table of Contents
Agenda items
- Web Animations implementation (bbirtles)
- PR review tagging / ownership process reminder (jdm + larsberg)
- Whistler stuff (larsberg)
- Rust in gecko moving apace, with almost no help from us (larsberg)
- piston-image bugs (kmc)
- rustup blockage (larsberg)
Attending
- gw, jdm, larsberg, samsung, pcwalton, bbirtles, savago, brson, kmc
Animations
- bbirtles: Wanted to reach out about the JS animations API and comes out of the extensible web platform idea. Can get animation objects that represent the CSS animations and transitions. In gecko, taking existing implementation of CSS animations and transitions and retrofitting the API onto it. In gecko, implemented them separately. Part of the work is making them use the same animation objects and exposing those objects to script. Using it in gecko for the animation devtools, which is how you can control and read them.
- bbirtles: next part is making them run from scripts. So, I heard you're looking at animations in Servo. One idea is not to start with CSS animations and transitions, but start with the API itself since it's the lower layer and CSS animations and transitions build on top of it. That's one way you can do it instead. Then the CSS animations and transitions generate them. The main difficulty is that the web animations API is still changing. Some parts are still shifting, but some parts are stable. So it might not appeal to you if you're reworking stuff. But could at least make CSS animations and transitions use the same primitives under the hood so you can just expose them to script - would be a wise move.
- bbirtles: In the compositor on gecko, we're using the same objects, but not on the main thread for animations and transitions. I dunno if there's anything in particular that you would be interested in talking about with them from Gecko?
- pcwalton: I can talk about how it relates to Servo. We have CSS transitions but not animations. It's implemented with a generic infrastructure for all animation-related things called "animation." The issue with doing Web Animations or everything in terms of them is that everything runs off the main thread - even those that require reflows. There is never any communication that needs to happen between script and layout. The animations just run with their own timers. I haven't looked at the Web Animations spec too much to know if it's compatible. One thing that this wouldn't work with is creating a DOM object for every CSS animation. We can't do it because the CSS animations live in a different thread from the rest of the DOM.
- pcwalton: We are going to need something - we can't express everything in terms of main thread DOM APIs. Can use off-main thread infra and try to use that for all of CSS transitions, CSS animations, and WebAnimations - that makes a lot of sense. Creating DOM objects for all of them we probably can't do because they all run off main thread.
- bbirtles: I don't understand the architecture so I can't comment. We do make DOM objects for the things - like for SVG and proxies. It's fine for animations to run off the main thread. The DOM objects are on a different thread and when you query the timing we calculate it then. It's a different way to do that. Lots of work to reconcile our animations and transitions code and we're doing it all again with our script-generated animations. As long as you have the three different types of animations in line, that's probably all you need to keep in mind.
- pcwalton: I wrote it expecting that I was expand it to CSS animations and web animations as well. It's kind of a generic framework with timers, hooked into the refresh driver to sync with the compositor, schedules reflows even when the main thread is busy and things like that. I think we would want to reuse it for CSS animations because it was a lot of pain to hook up and I don't want to do it again. Have to look at web animations to see how well it fits in, but our framework is pretty simple right now and just supports transitions and reflows even when it doesn't have to. We do want to be smarter eventually. We will probably want to use Web Animations as well.
- bbirtles: Sounds like a good place. One recent architectural change is making animations a two-phase things: separating timing and triggering the style changes separately. Bugs around calculating the timing twice in a single tick. So we're making timing happen once in each frame and then the animated style values can be updated multiple times on the frame.
- pcwalton: Servo is OK there. We batch all the timing updates and perform them once. There's something to consider with the special path through style lookups. The ones for animation don't happen through the same path through the DOM (because of off-main thread access). That's how we keep the animations off the main thread. One thing we may have to be concerned about is multiple iframes with synchronized iframes. Because iframes are in separate layout threads (and JS runtimes where cross-domain/sandboxed), we may need to do something to get cross-iframe sync working. We have none right now and have artifacts. Not clear how much transactional stuff we want to do for that.
- bbirtles: Sounds like a good handle on it; the web animations stuff is tough.
- pcwalton: I'll look at the spec soon!
- bbirtles: Any feedback would be great! It's written between gecko and blink engineers, so it does assume a model. If you could help provide feedback on it, that would help.
- pcwalton: off main thread animations do cause some issues. We may have to stop animations if there's a script query of the event loop so that script doesn't see different values of something like offsetLeft if it's animated because servo could have multiple values where other browsers would not. It would be good to know what other hazards there are.
- bbirtles: We do animation twice (main thread and compositor) for that reason. Glad to see you've thought about it and glad to hear any feedback, especially about things in the spec.
- pcwalton: Do you know what CSS animations are mainly used for on the web? I've seen the chrome usage counts, but it's hard to know what we should be focused on.
- bbirtles: I don't have the data. Chrome did some usecounters on which properties get animated and that opacity was #1 (not transform). Probably transitions more than animations.
- pcwalton: Yes, I'm just wondering what people use animations for - sites don't break though we haven't implemented them yet.
- bbirtles: They're used a lot, but it's hard to know what the specific use case is. Animations tend to be more presentational than state-oriented. Good question; I don't have the data.
- pcwalton: Thanks for your time / advice!
PR tagging
- larsberg: jdm and I will be assigning reviewers to PRs. This makes it easier to query who is responsible for reviewing a given PR, and the tags make it clear what the next step is. This doesn't mean take the PR over!
Whistler
- larsberg: etherpad tracks where/agenda/etc. Welcome to attend anything interesting. Other idea being kicked around is not just nightime bash on sessions, but actually having real training. Going through exercises on Rust, learning how to contribute to Servo. Fleshing it out right now - gauging how much to put together, how much interest there is. So far, the answer is LOTS. Going to move forward next week and figure out space, do we need help, etc. Niko wants to have Rust people involved in the training. Any suggestions around content that would be applicable to this crowd would be welcome.
Rust in Gecko
- larsberg: With almost no effort from us, both the network team and the media team have been pushing forward on getting Rust integrated into the Gecko build system. There are now configure hooks, it sets variables, you can add source files... It's moving along! Anybody who wants to be involved, let me know. Helping gecko is always a good thing.
Piston image
- kmc: I've been working on switching over to the image library. The integration isn't hard, but the library seems to have a lot of bugs where it will panic or overflow integers. This is without even looking for pathological testcases. Should I keep pursuing this? The developers have been pretty responsive, but the JPEG decoder is unmaintained for example, so we would likely need to take it over. We could also switch over JPEG to use a native library.
- mbrubeck: Even the PNG decoder isn't well-tested. They broke the output badly recently.
- kmc: Luckily we don't care about output, and still use libpng for that.
- mbrubeck: If we could fix enough bugs that we could handle images in the wild, it probably wouldn't be too hard to build up a community-supported testsuite.
- kmc: I could put something like that together. I've been using AFL recently, and it can look for panics as well as segfaults. I will see if there's something we could do to make it easier for other people to hunt them down.
- pcwalton: I'm wary of biting off more than we could chew to maintain an industrial decoder. If we get more resources (or community support) then we could take that as it comes. Right now I'm more comfortable using the devil we know (libjpeg-turbo).
- kmc: It's clear that switching to piston would be a win for security, but if it makes Servo crash in the wild, it doesn't help usability. I've been encountering the big gap between gamedev uses of image decoders vs. the real world. We don't have resources to maintain a production decoder ourselves. If you think there's some community you think I should talk to...
rustup block
- larsberg: We're still blocked on a crash in the Rust upgrade, where it looks like a value is being dropped too early, or something's wrong in the generated code. We should look into that, especially since zmike is seeing a similar-looking issue in different code.