Stylo

From MozillaWiki
Jump to: navigation, search

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.

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.

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.
  • Stylo should pass visual diff testing (bug 1331552) for the Alexa Top 500 (?) sites.
  • Stylo's Talos test performance should be faster than or equal to Gecko's.
  • 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 ratio (DAU/MAU) should be 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
  • 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

Bugs

stylo-central

  • Run linux64-stylo tests in mozilla-central (bug 1330414)
    • Enable stop-gap vcs sync (bug 1317525)
    • Vendor servo in mozilla-central (bug 1322769)
    • Make all tests green (by skipping or expecting failure)
ID Priority Summary Whiteboard Keywords Assigned to
1318177 -- LDAP user for Servo autoland infra
1302028 P1 stylo: build time binding generating (bindgen)
1317525 P1 stop-gap VCS "syncing" service from mozilla-central and servo/servo to the incubator/stylo repo Gregory Szorc [:gps]
1322769 P1 Vendor servo into mozilla-central Gregory Szorc [:gps]
1319968 P2 Non-stylo builds broken on stylo repository
1330666 P2 enable linux64-stylo builds Kim Moir [:kmoir]
1310852 P2 Add build-time dependency on libclang 3.9+ so we can run Stylo bindgen at build-time
1318107 P2 Autoland servo/servo PRs on hg edunham
1170600 P3 Publish GitHub events to Pulse leave-open Gregory Szorc [:gps]

9 Total; 9 Open (100%); 0 Resolved (0%); 0 Verified (0%);


stylo-nightly

  • Enable Stylo in Nightly (bug 1330412) (only on Linux first?)
    • 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 BugHunter
    • Manual QA sign-off
      • Smoke test Alexa Top N sites
      • Exploratory testing of browser UI and features
ID Priority Summary Whiteboard Keywords Assigned to
1331552 -- [Stylo] Stylo vs Gecko diffing on real sites
1330041 -- stylo: sort out a plan for HTML presentational attributes Manish Goregaokar [:manishearth]
1330069 -- Create Stylo performance tests based on old Gecko style system performance bugs
1330550 -- [Stylo] Talos fail with "Could not find report in browser output"
1326140 -- [Stylo] Release the linux64-stylo opt build on archive.mozilla.org
1331578 -- [Stylo] Stylo is slower than Gecko on etc/ci/performance TP5 tests
1330051 -- stylo: Determine the style backend for all documents at application startup
1330589 -- [Stylo] Talos job "c" failed with timeout
1321197 P1 [meta] stylo: Run style system mochitests on stylo meta Xidorn Quan [:xidorn] (UTC+10)
1322657 P1 stylo: support devtools meta
1324348 P1 [Stylo] Reftest failures
1330414 P1 Run linux64-stylo tests in mozilla-central meta Chris Peterson [:cpeterson]
1324668 P2 [Stylo] Performance test for Stylo
1289964 P2 stylo: reftest and crashtest crashes meta
1323145 P2 Run Hixie's CSS Import Test Suite for @import
1301001 P2 stylo: Fix OS X build (cargo network access and build errors)
1320841 P2 Re-enable mochitests for Stylo builds Manish Goregaokar [:manishearth]
1323140 P2 stylo: run test-stylo just after generating bindings at build time
1323643 P2 [Stylo] stylo-vs-gecko reftest crashes
1294570 P3 stylo: Style chrome documents with Servo
1330902 P3 Run BugHunter crash tests with linux64-stylo builds
1288352 P3 Stylo-specific reftest.list
1322656 P3 stylo: support Gecko profiler Nathan Froyd [:froydnj]
1291355 P3 stylo: Measure the impact of multiple jemalloc arenas and evaluate the performance tradeoff for enabling them
1294915 P3 stylo: Explore more robust checking against FFI race conditions Brian Hackett (:bhackett)
1304797 P3 stylo: e10s support

26 Total; 26 Open (100%); 0 Resolved (0%); 0 Verified (0%);


stylo-release

  • 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)
  • Ship Stylo to Release

Links