Quantum/Stylo: Difference between revisions
(→Links: Link to tp6 Mac results) |
(Add Linux 32-bit to try syntax) |
||
Line 26: | Line 26: | ||
== Try Syntax == | == Try Syntax == | ||
For most Stylo changes, it should be sufficient to build on all platforms and test on Linux | For most Stylo changes, it should be sufficient to build on all platforms and test on Linux 64-bit only, which helps save resources in automation. To do this, you can use: | ||
./mach try -b do -p all -u all[x64] | ./mach try -b do -p all -u all[x64] | ||
Line 32: | Line 32: | ||
To build and test all Stylo platforms running in automation, you can use: | To build and test all Stylo platforms running in automation, you can use: | ||
./mach try -b do -p linux64,linux64-haz,macosx64,win32,win64 -u all | ./mach try -b do -p linux,linux64,linux64-haz,macosx64,win32,win64 -u all | ||
To build all possible platforms to ensure code compiles everywhere, but only test with Stylo enabled, you can use: | To build all possible platforms to ensure code compiles everywhere, but only test with Stylo enabled, you can use: | ||
./mach try -b do -p all -u all[linux64-stylo,linux64-stylo-sequential,macosx64-stylo,windows7-32-stylo,windows10-64-stylo] | ./mach try -b do -p all -u all[linux32-stylo,linux64-stylo,linux64-stylo-sequential,macosx64-stylo,windows7-32-stylo,windows10-64-stylo] | ||
= Release Criteria = | = Release Criteria = |
Revision as of 19:58, 22 August 2017
Stylo (a.k.a. Quantum CSS) will integrate Servo's CSS style system into Gecko, such that the style system code can be shared by Gecko and Servo. Stylo V1 will support Firefox on Windows, macOS, and Linux. Android support may ship in a later release. Stylo is a core part of Project Quantum.
To help test Stylo, download Firefox Nightly and set the about:config pref layout.css.servo.enabled to true. To confirm that Stylo is enabled, check about:support for "Stylo: true (enabled by default)".
Getting Involved
If you're interested in contributing to Stylo or Servo, drop by the #servo IRC channel on Mozilla's IRC server.
One front where you can help out is adding new properties to Servo's CSS parsing crate. This requires familiarity with Rust, but is otherwise a good way to dip your toes into Servo's style system. To get started, see Servo's CSS property hacking guide for more information.
If you do not know Rust, you can help implement keyword properties. See the Stylo hacking guide for more details. The Stylo hacking guide also has instructions for building Stylo if you wish to play with it yourself. If you know C++, Firefox bug 1277133 has information about easy Gecko bugs that will assist Stylo's integration with Gecko.
Some Stylo bugs that are good for new Servo contributors are tagged on GitHub as “easy” bugs and “less-easy” bugs.
Committing stylo changes
The process for committing a Stylo change that involves both Gecko and Servo changes is as follows:
- Create a Github PR against https://github.com/servo/servo with the Servo changes in question.
- Get that reviewed and checked into Servo's github repository.
- Wait for servo-vcs-sync to land the Servo changes on Gecko's autoland.
- Land the Gecko changes on autoland.
A more exhaustive / overwhelming description of the workflow is also available.
Try Syntax
For most Stylo changes, it should be sufficient to build on all platforms and test on Linux 64-bit only, which helps save resources in automation. To do this, you can use:
./mach try -b do -p all -u all[x64]
To build and test all Stylo platforms running in automation, you can use:
./mach try -b do -p linux,linux64,linux64-haz,macosx64,win32,win64 -u all
To build all possible platforms to ensure code compiles everywhere, but only test with Stylo enabled, you can use:
./mach try -b do -p all -u all[linux32-stylo,linux64-stylo,linux64-stylo-sequential,macosx64-stylo,windows7-32-stylo,windows10-64-stylo]
Release Criteria
Stylo should not cause us to regress any CSS feature unless we explicitly decide that regressing that specific feature is acceptable. The existing test suite will be the primary benchmark of this, with cross-validation from an automated analysis and manual QA of the Alexa Top 500 sites.
- Stylo should have zero blocking bugs.
- Stylo should pass all (non-disabled) Gecko reftests and mochitests.
- Stylo should have no more unimplemented properties on the Alexa Top 500 sites than Gecko. DONE!
- Stylo should pass visual diff testing (bug 1331552) for the Alexa Top 500 (?) sites.
- Stylo sequential mode's Talos performance should be at least as fast as Gecko.
- Stylo parallel mode's Talos performance should be faster than Gecko. Ideally we should scale linearly with the number of cores.
- Stylo's memory usage (both Talos and beta telemetry) should be less than or equal to Gecko's.
- Stylo's crash rate should be less than or equal to Gecko's.
- Stylo's user engagement metrics (TBD: number of domains, number of tabs?) greater than or equal to Gecko's.
Work Breakdown Structure
- Tests
- reftests: Shing
- mochitests: TBD
- Cargo
- Build Support: Nathan, Ralph
- Build Stylo: Lars
- Vendoring Support: Ted, Yehuda
- Vendor Servo: Lars
- Build Support: Nathan, Ralph
- Glue (Gecko/C++/Rust/Servo): Manish, Simon, Xidorn, Michael
- CSS Support
- CSS Properties: Cameron, Xidorn, Simon, Emilio, Bobby, Brian
- CSSOM: Xidorn, Simon
- Autoland
- Servo CI and Autolander: Emily
- Gecko CI and Autolander: Emily
Milestones
stylo-central
- Run linux64-stylo tests in mozilla-central (bug 1330414) (dependencies)
- Enable stop-gap vcs sync (bug 1317525)
- Vendor servo in mozilla-central (bug 1322769)
- Make all tests green (by skipping or expecting failure)
stylo-nightly
- Enable Stylo in Nightly (bug 1330412) (dependencies)
- Implement parsing of all CSS properties supported by Firefox
- Fix and enable all tests (without skipping or expecting failure)
- Fix all crashes and assertion failures
- Fuzz Stylo
- Pass [Auto-tools/Projects/BugHunter Bughunter]
- Manual QA sign-off
- Smoke test Alexa Top N sites
- Exploratory testing of browser UI and features
stylo-release
- Stylo meta bug 1243581 (dependencies)
- Run experiment comparing Stylo vs Gecko on engagement ratio, performance, crash rate, and memory usage.
- Let Stylo ride the trains
- Enable Stylo on all platforms (bug stylo-nightly)
- Pass QA on all platforms (tests, fuzzing, BugHunter)
- Enable Stylo on all platforms (bug stylo-nightly)
- Ship Stylo to Release
Bugs
Dogfood Bugs
bug stylo-site-issues blockers:
ID | Priority | Summary | Keywords | Assigned to |
---|---|---|---|---|
1391341 | P2 | stylo: Font size inherits differently than in Gecko | dev-doc-complete, regression |
1 Total; 1 Open (100%); 0 Resolved (0%); 0 Verified (0%);
P1 Bugs
that aren't also stylo-site-issue bugs
No results.
0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);
P2 Bugs
that aren't also stylo-site-issue bugs
8 Total; 8 Open (100%); 0 Resolved (0%); 0 Verified (0%);
Bugzilla Queries
- Stylo milestone bug trees:
- Build Stylo in Nightly (but pref'd off)
- Enable Stylo in Nightly
- Let Stylo ride the trains
- CSS bugs filed within the last month that are not labeled "stylo"
- Unprioritized "stylo:" bugs to be triaged (Bobby's list)
- Unprioritized "stylo" whiteboard bugs to be triaged (Chris's list)
- All P1-P3 bugs
- All P4 bugs
- All P5 bugs
- All Stylo bugs!
- Bugs by developer
- Crash queries:
Priority Definitions:
- P1: Blocks shipping, more urgent. We should be working on these now/ASAP.
- P2: Blocks shipping, less urgent. We can wait a few weeks to start working on these.
- P3: Might block shipping. Needs re-evaluation, potentially closer to the deadline.
- P4: Doesn't block shipping, but nice to have.
- P5: Don't need to track.
Links
- Stylo build instructions
- Stylo meeting notes
- tp5 comparison on linux64
- tp6:
- amazon on win10-64
- facebook on win10-64
- google on win10-64
- youtube on win10-64
- FIXME: waiting for tp6 for Mac with Stylo: bug 1387265