The Hitchhiker's Guide to Servo Contributor

Fd9f21969cd8a0cbf0b2f48a9af0cc28?s=47 cybai
October 26, 2019

The Hitchhiker's Guide to Servo Contributor

Fd9f21969cd8a0cbf0b2f48a9af0cc28?s=128

cybai

October 26, 2019
Tweet

Transcript

  1. The Hitchhiker’s Guide to Servo Contributor @_cybai, HERP, Inc. Rust.Tokyo

  2. whoami • Haku • @CYBAI • @_cybai • Software Engineer

    @ HERP, Inc. • Contribute to Servo from Aug 2017 2
  3. • What is Servo? • How to contribute? • How

    to run tests? • How Servo CI works? Agenda 3
  4. • What is Servo? • How to contribute? • How

    to run tests? • How Servo CI works? Agenda 4
  5. • A modern, high-performance greenfield browser engine designed for both

    application and embedded use • Written in Rust • Aim to achieve parallel and concurrency computing and layout • Derived memory safety and security from Rust What is Servo? 5
  6. What is Servo? (Cont.) • Two successful components have been

    migrated into Firefox, e.g. Stylo and WebRender 6
  7. Demo 7

  8. • What is Servo? • How to contribute? • How

    to run tests? • How Servo CI works? Agenda 8
  9. Workflow 9 Find issue Implementation Test related WPT locally Send

    / Update PR Review PR merged Run CI passed with r+ Check Failures : Sucess : Failure
  10. How to get involved? • Check E-* labels ◦ E

    stands for Effort here. ◦ E-easy and E-less easy are good for new contributors. ◦ E-candidate-for-mentoring means it might be an easy issue because members didn’t check it carefully. But, they will mentor you to finish the issue. ◦ E-hard means challenging tasks. 10 Ref: Tag label names and definitions
  11. How to get involved? (Cont.) • Check the Servo starter

    page. • Find any Web API you’re interested in and it’s missing or implemented incorrectly in Servo! 11
  12. 12 The first issue I fixed

  13. 13 From WHATWG DOM spec

  14. 14

  15. 15 But, how can I confirm my implementation is correct?

  16. • What is Servo? • How to contribute? • How

    to run tests? • How Servo CI works? Agenda 16
  17. WPT • In Software Engineering, writing tests to verify our

    business logic is indispensable. • So do the web platforms! • Here comes the Web Platform Tests a.k.a wpt. 17
  18. “The web-platform-tests project is a W3C-coordinated attempt to build a

    cross-browser test suite for the Web-platform stack.” -- web-platform-tests.org What is wpt? 18
  19. Brief introduction to WPT metadata 19

  20. How to run tests with Servo CI? 20 Ask @bors-servo

    to trigger “try” tests
  21. How to run tests with Servo CI? (Cont.) 21 CI

    tests triggered by try will report tests result when all tests passed instead of merging PR
  22. How to run tests with Servo CI? (Cont.) 22 But

    wait! Let’s see what @jdm said!
  23. How to run tests with Servo CI? (Cont.) 23

  24. WPT Synchronization 24 Sync new / fixed tests Contribute new

    / fixed tests
  25. 25 After upstream tests synced and try again, finally got

    unexpected PASS!
  26. 26 Approved by @jdm after the tests marked as PASS

  27. But wait! Why not just merge the PR? and what

    exactly is @bors-servo and r+? 27
  28. • What is Servo? • How to contribute? • How

    to run tests? • How Servo CI works? Agenda 28
  29. Homu: The Not Rocket Science™ bors is first introduced by

    Graydon Hoare who is Rust’s original creator and mainly applied Ben Elliston’s “not rocket science” rule to the bot: 29 The Not Rocket Science Rule Of Software Engineering: automatically maintain a repository of code that always passes all the tests -- Ben Elliston
  30. Homu: The Not Rocket Science™ 30 Rename fn foo →

    fn bar ✅ CI Pass Call fn foo in somewhere ✅ CI Pass ☠ Function foo doesn’t exist ❌ Broken master branch A B
  31. Homu: The Not Rocket Science™ 31 Screenshot from Homu Queue

  32. 32 @bors-servo with r+ merged PR after CI passed

  33. Recap 33

  34. Recap 34 Write spec compliant tests Implement existing / new

    spec Contribute new / fixed tests
  35. Recap 35 Add / fix tests while changed Contribute spec

    bugfix or new feature Sync new / fixed tests
  36. References • Experience Report: Developing the Servo Web Browser Engine

    using Rust • technicalities: "not rocket science" (the story of monotone and bors) • Rust infrastructure can be your infrastructure • Servo: Designing and Implementing a Parallel Browser • Servo and YOU: A beginner's guide • Inside a super fast CSS engine: Quantum CSS (aka Stylo) • The whole web at maximum FPS: How WebRender gets rid of jank 36
  37. 37 https://blog.cybai.dev/ References

  38. Q & A ? 38 We’re hiring!

  39. Thank you! @_cybai 39