mirror of
https://github.com/servo/servo
synced 2026-04-25 17:15:48 +02:00
Page:
Mozlandia Automation
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
2
Mozlandia Automation
larsbergstrom edited this page 2014-12-12 11:07:25 -08:00
Servo and ateam meeting on perf, power, and mobile automation stuff
- How can we make reliable perf/power tests (so we can compare week to week results?)
- Where should we upload/store results? Does something already exist?
- We'd like to automate tests against devices. Any best practices here?
Buildbot / testing situation
- jack: We review, run tests, and only merge if it lands.
- jgraham: From the point of view of WPT, their infra is OK. Non-trivial to port test harnesses to Servo (no marionette). No result visualizaiton. They have to check logs, and it takes a lot of time.
- jack: Shows just the failures at the bottom of the logs.
- ted: Test reporting is a weak point. Treeherder (https://treeherder.mozilla.org/#/jobs) integration would help. Maybe in a separate tree, for visualization. Structured logging, too. We have a standard for how it should look - one line of JSON per tests for output. Can look at failures / test runtimes, etc. Tooling will be around that.
- jgraham: Selling thing is not that it's amazing now, but that it's where we're building stuff today.
- ted: Low-effort for Servo, but good leverage for the ecosystem.
- jgraham: WPT is simple because it already emits them. If you want to from unit tests, then just need a Rust structured logging library.
- ted: Just JSON messages.
- larsberg: We're not behind teh VPN. Is that OK?
- mdoglio: All the APIs are exposed. HTTP points provided, just need credentials.
- larsberg: We don't allow failing...
- manish: There are some intermittent failures, though. In TBPL, you can annotate failures with a bug link.
- ted: Starring.
- manish: Orange test = this bug.
- mdoglio: Classify as an infra failure, intermittent, etc. and tie to a bug.
- joel: Disk out of space; network error downloading, etc. It's not related, but it's good to have the history.
- larsberg: bugzilla? or github, too?
- mdoglio: We just look for an error in the build log, extract the info, and have a cache of bugs from bugzilla every hour and find the match.
- ted: Arbitrary comments are OK.
- manish: So just no TBPL bot support.
- c: Bugs on file for Treeherder to mark them as acknowledged for a week, etc.
- jgraham: Since the B2G folks want treeherder too, it should get github support...
- larsberg: They don't use Github issues.
- c: Taskcluster and jenkins results are coming in...
- ted: Structured logging and reporting gives you the UI, which helps.
- d: The program that runs Servo and reports results running in Servo... is that in Rust?
- jack: Four kinds of tests. unit tests in rust have an annotation, and the compiler creates a binary you report.
- ted: What runs it?
- jack: mach. ref tests. We have a reftest runner written in Rust using the same framework as Gecko.
- jgraham: I will remove that runner.
- manish: Instead of having the failures in the content test runner, we should be able to parse and change it to structured logging.
- jack: Third is content tests that just run in the JS engine.
- larsberg: These will go away once we can get them in WPT.
- jack: Invoke Servo for each one, run a JS test, that's it.
- ted: XPC shell.
- jack: There's a runner in Rust. It's about 100 lines of code.
- d: Do you care that they're in Rust?
- jack: No. And the fourth is WPT tests.
- ted: So you want to move ref and content tests into WPT?
- jgraham: Yes.
- ted: Sounds like a great goal. Great goal for getting things upstreamed to the W3C. Seems like we don't need to run the mochitests since they're FF-specific. The WPT tests, since they're cross-browser, should be easier for you to run. Plus, WPT is already a good citizen with our tooling story.
Performance
- jack: We can do benchmark testing in Rust, if we wanted. They work exactly like unit tests, except do timining.
- joel: I manage Talos.
- jack: We want to make sure that parallel layout on four cores is always faster than one core.
- joel: It's not just the tests, but also what it's run on. It's an issue. Running them per-commit, then you need standardized machines. But daily might be easier.
- ted: Pass/fail? Or a value?
- jack: We don't run them. We just do our perf testing ad-hoc. We do reports occasionally where we pull up some numbers and just run at a variety of cores... just want to generate some curves.
- joel: In Treeherder, we're looking at one number per revision, which defines it.
- ted: Tests in a bunch of different configurations. So it's like a bunch of benchmarks with different things.
- joel: Some of the use cases don't fit into the model of autophone, etc.
- ted: But if we just track it over time?
- jgraham: Yes, just showing the ratio shouldn't go down.
- joel: We collect power consumption for a bunch of the browsers for some sites. It's hard to compare them, though. These are things to consider - if you mock up something and put it in a spreadsheet, and it compares over 2-3 types of graphs, it might work. Otherwise, we might be able to store it, but use the data.
- ted: Using the Rust stuff?
- jack: No, totally manual.
- ted: Not fundamentally different than what we do in FF. you run FF, it does sampling and reporting, which we then parse and log it. If they wanted to get that reporting to get graphs, what's the fastest way?
- joel: Timeline matters. Will is the graphing guru. Hrm... Send to GraphServer (graphs.mozilla.org).
- will: How much do you care?
- jack: When we first did Android power measurment, we found out we had a huge 1000x regression. We'd like to see those sooner than later.
- will: Morrow showed me graphana, which can consume streams of JSON and plot it on a graph. You could do that while we sort our story out. Could just create a tool that creates a JSON file of numbers and have a servo dashboard that creates it.
- larsberg: We are fine with that - we just don't want to build things that make people ask why we aren't using your stuff.
- ted: Keep will in the loop.
- jack: Fine to stand it up ourselves, but would like feedback that we're doing things in the right direction.
- ted: Yes, that would be great; teams often mess that up.
- jack: So, for that, we'd just have the builder at the end, create the JSON file, stick it in S3, and call it a day.
- ted: In FF, we have MozRunner that handles it all.
- jack: MozRunner runs Servo, too.
- jgraham: Really?
- jack: Yes, we use it too, in our execution of WPT.
- ted: MozRunner handles B2G, etc. So makes sense that it would just work. Handles all the edge cases -
- jack: Oops, wptrunner, not mozrunner.
- jgraham: Aha, wptrunner uses mozprocess.
- ted: That's underlying MozRunner, so it should still handle most of the cases for running and tracking Servo. People use FF in a lot of contexts, and MozRunner/MozProcess handles it.
- joel: You don't have preferences, which is a key for desktop & android. We set hundreds of those.
- jack: We have a couple of commandline arguments now. Layout threads, render on CPU or GPU, etc.
- ted: It's just a rendering engine, not a browser today.
- jgraham: From the point of view of preferences, they're hardcoded for every test run. not that different.
- ted: Most of that is for testing FF.
- joel: Turning telemetry off, etc.
- jack: Yeah, we just do it with cmdline arguments now, but might be preferences later.
- ted: Not super-complicated right now, but soon you'll have 50 arguments, and need preferences later. Small python script for that should be fine.
- jack: For us, the easiest is on PR landing.
- joel: Every PR makes it easier, even if it's another 10 minutes.
- jack: What we would find useful, even weekly would be useful.
- ted: Regression ranges is the biggest thing.
- jack: 50-60 PRs a week. Not huge.
- ted: Good, much smaller. Also, there's lots of variability in perf testing, so having more data points is helpful.
- jgraham: If you can, it's better to overrun the tests instead of really infrequently and finding out surprisingly.
- jack: Currently, the WPT tests are the biggest part of our cycle.
- joel: How long?
- larsberg: Under 15 minutes.
- ted: Machine situation?
- larsberg: Linode & macstadium. Just to avoid EC2 madness.
- ted: Probably hit it in a while.
Rust
- simonsapin: They're bigger, and having big issues on r+. They test before landing, too. Cycle time is large.
- larsberg: 3 hours.
- simonsapin: Their queue is really long. Sit there for days.
- ted: What do they do?
- larsberg: EC2+macs on desk.
- ted: How do they fix?
- manish: Manual rollup.
- ted: Cool, that's a side issue, but we should make sure you don't get there. You will get there at some point.
- larsberg: Hopefully by then releng will be ready.
- ted: taskcluster, etc.
- joel: Different hardware causes a huge deathmarch.
Devices
- larsberg: What can we do to make sure we still run on the device?
- jack: We make sure that we build on, but what else?
- joel: Emulators.
- jgraham: Some company that does on-device stuff hosting, too?
- ted: Some of both. Hardware doesn't scale, even with 800 pandaboards. Gotta maintain them. Standing up a lot of emulators, especially on EC2. It's QEMU, and it's just not as fast. Especially if you're doing graphics stuff.
- manish: Won't catch graphics driver issues.
- ted: have LLVMPIPE for a realish GL.
- mark: Some do, some don't...
- jack: Even just one reftest would be a huge improvement.
- ted: Could chat with jeff brown about it. Have things running in emulators.
- joel: Increases end-to-end time.
- jack: Run WPT on two machines and others with unit tests. May be able to add them in. Or just spin up more machines.
- larsberg: For me, good to know that emulators are what we have to do our automated work on.
- ted: We have some stuff you can only test on phones.
- joel: Not realistic to test on devices in your 30 minute thing.
- ted: Need the devices for your perf testing. Perf on mobile means wanting phones, and doing that separately.
- jgraham: We must be doing something like this for B2G. There's some company building a cloud of flames.
- ted: If it's just perf testing semi-regularly, we have stuff where we can do that. AutoPhone, etc.
- jack: We have people working on Android stuff so we get some feedback...
- ted: Eideticker.
- wlach: On Android, it's a video capture & perf analysis harness. instead of an abstract number, it captures the device doing things, so it can do analysis. It'll say you're done when the page is visually complete. Can also do checkerboarding tests to see how long it takes until it pans. We run it with FF, but it should work with other stuff.
- ted: On Android / B2G, you can automate via that.
Perf on layout
- jack: Trying to get perf on layout engine parallel. Took a bunch of alexa top50 static snapshots. Thing for Servo isn't the static snapshots, but twitter/facebook.com are fast. What do you do?
- joel: Dilemma there is loading a live page on twitter, not logged in / scrolling you get no content. Supposedly they have test accounts you can sign up for, but then there's no content.
- ted: No repeatability.
- jack: I'd like to have a dynamic test suite with the dynamic stuff?
- jgraham: You're talking about building your own becnhmark?
- jack: Just want to know if it is here.
- joel: For power, we do it on live test sites like that. Theory is that if we test it at 1:30pm on FF and 1:32pm on IE, it should be pretty close.
- ted: MozBench is the closest thing we have.
- jgraham: Small number that try to be dynamic web application-esques. Apple's Speedometer, which is scripted use of a dynamic frameworky thing. Closer than other benchmarks. (http://browserbench.org/Speedometer/)
- ted: Ideally, you'd load something in the browser, wireshark it, play it back, etc.
- jack: So, if we need to make something like this, would you want it or have ideas?
- joel: We'd use it.
- ted: Pick a web app. Capture the state so that you can replay it, and be done.
- joel: Networking? Or dynamic content?
- jack: We use SM, so most of the benchmarks are not interesting to us. We have page load profiling, but nothing on scrolling, etc.
- c: Talk to ollie. No solution yet, but we need to fix it, too.
- wlach: Chromium Webpage Replay Project?
- joel: We looked into it a lot. Theoretically, you can load a live webpage and the replay will suck it down (the session) and replay it. bz and I spent two months trying to make it work, and couldn't make it.
- jgraham: They're not necessarily deterministic.
- ted: Ad banners.
- manish: Not with twitter, but discourse could be run on localhost, maybe.
- jack: That might work.
- manish: It uses XHR, etc.
- jack: Thing to get out of this is: who do we need to talk with?
- ted: You want bz and smaug there.
- joel: Patrick mcmanus has great ideas on networking. But I don't think you care as much about that.
- jack: We want to make sure we're testing the things that distinguish us (like parallel layout).
- manish: Could get a fake twitter.
- ted: Just make sure it's representative.
- jgraham: The speedometer was the highest-level benchmark thing I'm aware of people using. It's not best, but it works today and will spit out a number when you run it.
- joel: arnie was open to collaborating on benchmarks.
- ted: Just make sure you talk with bz and smaug. Otherwise, you'll be unhappy.
- jgraham: drmaeo is not thought of well.
- ted: Any general-purpose benchmarks you create we should run in gecko, too.
- jack: We often compare ourselves against gecko and other browsers and hope that if we claim we're 2x faster you'll call us on it. Right now, we instrument the gecko code where we think the analogous operations end, etc.
- joel: We have some runner stuff (MozBench) in place to try running them across a bunch of browsers nightly so we could compare against Servo.
- ted: dminor from the ateam is managing MozBench. Mainly designed for games benchmarks, but should work for ours, too.