Chrome University - Summer 2019

Chrome University is an event hosted by volunteers on the chrome team to get contributors up to speed. We try to host it twice a year, usually around Q1 and Q3.

It is designed as a broad introduction to the most important/useful aspects of developing a browser and OS. It is beneficial to long-time chromies as well as new folks joining the team. It is an opportunity to refresh your knowledge, learn something new and/or teach something to someone.

We know a good percentage of our community of contributors are non-googlers, so little by little we are trying to make it more inclusive.

We started recording some of the videos and making them available online (with the permission of the presenters and the chrome team). Long term, we'd like to make all/most of the content available online, but for now, these are the ones that we managed to record and publish.

This is the schedule and the videos of the 2019 Summer edition.

Day 1

Time Browser OS
09:00am Registration
10:00am Opening Remarks (5 mins)
10:05am Chrome Overview (45 mins)
Vision and strategy, org overview, core principles (4S) and values, history, diversity/inclusion, tips to be successful in Chrome.
10:45am The Anatomy of a Browser (45 mins)
Overview of architecture of Chrome, including the process model, layering of components, and the directory structure.
HW Backed Security and Verified Boot 101 (45 mins)
Overview of basic security features of Chrome OS - user authentication, verified boot, remote attestation - and how hardware is used to support them.
11:30am Lunch (45 mins)
12:15pm Life of a Pixel (45 mins)
A tour of the internals of Chrome's rendering architecture, tracing the steps in the pipeline from web content to displayed pixels. Concretizes high-level concepts with pointers to important classes and data structures in the codebase
Graphics 101 (30 mins)
This talk looks at the main components of the Chrome OS graphics stack, and how they interact together to achieve the use cases we know and love. I will go over a few such use cases, and detail how they function, from top to bottom.
12:45pm Virtual Machines 101 (30 mins)
Overview of how and why virtual machines are used in Chrome OS and the use cases they have for in the products of Chrome OS.
01:00pm History of the Web (45 mins)
From inception, ancient, modern to contemporary history of the Web.
01:15pm ChromeOS Sound 101 (30 mins)
Overview of the ChromeOS Audio Server. Mainly about how CRAS achieves dynamic audio routing across difference audio devices for clients like Chrome, Arc++ and Crostini.
01:45pm Break (15 mins)
02:00pm Life of a Navigation (30 mins)
This talk describes the steps taken in Chrome to navigate from one web page to another. It will cover the various parts, processes, and steps taken in making it happen.
Apps Platforms (30 mins)
Overview of the different application platforms available on Chrome OS, both from the perspective of users (what kind of apps can they install and use) and internal developers (what technology should I use to build my built-in app, how does this part of Chrome OS work).
02:30pm Life of a Release (30 mins)
Low bar to implement, high bar to ship. Feature flags, launch review, the 6-week release cycle and channels, field trials, finch experiments
Input 101 (30 mins)
Overview of the input stack on Chromebooks: hardware, firmware, gesture detection, and more.
03:00pm Life of a Process (30 mins)
This talk will explore the life of a multi-threaded chrome process, from startup to shutdown; discussing run-time paradigms in between
Business (30 mins)
03:30pm Break (15 mins)
03:45pm IPC 101 (30 mins)
Overview of Mojo - Chrome’s inter-process communication system: main concepts, life of a message, security features.
Biometrics (30 mins)
04:15pm Anatomy of a Browser 201 (30 mins)
An exploration of major objects and common patterns in the Chromium codebase
Sensors (30 mins)
04:45pm Break (15 mins)
05:00pm The Early History of Chrome (60 mins)
06:00pm Closing Remarks (5 mins)

Day 2

Time Browser OS
10:00am Life of a Commit (30 mins)
How Chrome Browser keeps the tree green. The basic git workflow, code review, pre-submit testing, etc.
Schematics as a Second Language (30 mins)
A set of simple rules to help SW/FW engineers navigate ChromeOS HW schematics. Basic EE concepts, abstracted overview of passives, transistors, and common component configurations.
10:30am C++ As A Second Language (30 mins)
A tour of C++ for experienced/advanced programmers coming from other languages (C/Java/JS/Python/Go/VHDL/etc). C++11 features. Free functions, Include & linkage, Destructors & scope, RAII, Pass-by-value / -reference, The standard library, Smart pointers, Raw pointers, Templates
Infrastructure 101 (30 mins)
11:00am Life of a Script (30 mins)
The design of V8 and current ongoing work, garbage collection and how V8 fits into Blink and Chrome, and how Web Assembly fits into that picture.
Build (30 mins)
11:30am Lunch (45 mins)
12:15pm Security 101 (45 mins)
45 min deeper talk on security. Cover Pwn2Own and some stories about how Chrome was hacked and how we responded by adding more layers of protection. Cover site isolation, sandboxing, OOPIF, and Clusterfuzz with much more depth. This is critical stuff, everyone should know more.
Suport 101 (45 mins)
01:00pm The History of WebAssemnbly (30 mins)
Follow up on the Life of a Script talk, covering the history of WebAssembly and how it came to be standardized, including the histories of Native Client and asm.js, the technologies that inspired it.
Life of a Codec (30 mins)
Chrome media consumption is millions of hours a day. But how does the video and audio compression technology in Chrome work? This talk will describe how video codecs are developed, deployed, and deprecated.
01:30pm Break (15 mins)
01:45pm Testing 101 (30 mins)
Tour of all of the various types of automated tests in the Chrome codebase, and our approach to establishing a good habit to create fast , stable and easy tests with good coverage. .
Marketing 101 (30 mins)
02:15pm Speed 101 (30 mins)
Chrome's approach to measuring the speed of the browser, tracking regressions, and improving the user experience. 30 min much deeper talk on the whole infrastructure and stories about how we regressed in some areas because we weren't measuring the right thing.
Overlays and Workflows (30 mins)
02:45pm Privacy 101 (30 mins) Metrics 101 (30 mins)
03:15pm Break (15 mins)
03:30pm C++ Memory (45 mins)
Memory model & sequence points, Memory mapping, Alignment & padding, CPU cache, Move semantics
Mobile 101 (30 mins)
04:00pm Desktop 101 (30 mins)
04:15pm Security 201: Life of a Vulnerability (45 mins)
Are we really attacked? Yes. Who attacks us? What's their motivation? How do we stop them? This talk will give a brief tour around our adversaries, before focusing on a single bug to show its complete lifecycle from introduction, to real exploitation in the wild, to fix. We'll show how easy it is to introduce such bugs, some of the tools that attackers can use to turn a trivial vulnerability into a powerful exploit, and what you can do to frustrate their efforts.
04:30pm WebView 101 (30 mins)
WebView's use cases, architectural differences from Chrome, how to design features to target both WebView/Chrome, how to test changes on WebView. Overview of some of the projects WebView team has worked on, emphasizing "parity with Chrome" as one of our team's pillars (wrt. web platform features, architectural features such as S13N)
05:00pm Break (15 mins)
05:15pm Path to Chrome (45 mins)
Each speaker will share where they were before Chrome, what they've worked on in Chrome, and why they love Chrome.
06:00pm Closing Remarks (5 mins)