class: center ###Introduction to #Servo #### 2016/4/21 ####Shing Lyu, Mozilla ??? top, middle, bottom left, center, right --- name: toc ###Table of content 1. What is Servo 2. Why a new browser engine 3. Demo 4. Architecture 5. Get Involved ??? This is a template --- ###About Me * Shing Lyu 呂行 * Mozilla Employee * Servo team * Have contributed to Servo since Nov, 2014 --- ###What is Servo * Parallel browser engine * Written in Rust * https://servo.org/ --- #### Intel Core 6th Gen  photo credit: http://wccftech.com //http://www.pcmag.com/article2/0,2817,1782101,00.asp --- .fullwidth[] .fullwidth[] --- ### Why a new engine * Parallel * Memory safety * Performance * Modularity * Embedding * GPU (WebRender) --- ### Implementation Strategy * __Rewrite__ layout, rendering, HTML/CSS parsing, networking, core engine glue * __Reuse__ JS engine, media codecs, graphics libs, fonts, WebRTC * __Bootstrap__ with OpenSSL, image libs, etc. --- ## Demo * Parallel painting * Parallel layout * WebRender * browser.html/ --- #### Architecture  photo credit: larsberg --- #### Components  photo credit: larsberg --- #### browser.html * Servo is an engine, you need a chrome  photo credit: github.com/browserhtml --- ### WebRender * Draw web content like a modern game engine * immediate mode v.s. retained mode * Better utilization of GPUs * High-performance animation with HTML + CSS, no need for canvas or WebGL --- .fullwidth[] --- ### Build system & Test * Mach (python) * Unit tests * Web platform tests (WPT) * CSS WG Tests --- ### Debugging * Time / Memory profiling * gdb / lldb * `RUST_LOG`, `RUST_BACKTRACE=1` --- ### Roadmap * [June Tech Preview](https://groups.google.com/forum/#!topic/mozilla.dev.servo/dcrNW6389g4) * Oxidation: move Rust/Servo component into Gecko * [more](https://github.com/servo/servo/wiki/Roadmap) --- ### Why contributing * It's fun * It's challenging * It's relative new so there are low-hanging fruits --- ### Good First Bug * [Servo Starters](http://servo.github.io/servo-starters/) * GitHub: https://github.com/servo/servo --- ### Getting Started * `git clone https://github.com/servo/servo.git` * Create a branch, write code * `./mach build --debug` * `./mach test-*` * Submit a PR * Code review (Reviewable.io) * Rebase => Auto-test => Merge --- ### Getting Help * GitHub Issues * IRC: `#servo` on `irc.mozilla.org` * Mailing list: dev-servo@lists.mozilla.org ####Shing Lyu * `shinglyu` on IRC (UTC+8) * slyu@mozilla.com --- class: center, middle #Thank you ##Questions?