Netflix Webkit -Based UI for TV Devices

52
Netflix Webkit-Based UI for TV Devices Matt McCarthy & Kim Trott Netflix July 29, 2011

description

Netflix Webkit -Based UI for TV Devices. Matt McCarthy & Kim Trott Netflix July 29, 2011. Topics. What is Webkit TV UI? Why web? A/B testing Engineering for UI variation Performance for TV devices. what’s the big deal?. Webkit TV UI. 2’ UI vs. 10’ UI. 2’ UI. 10’ UI. - PowerPoint PPT Presentation

Transcript of Netflix Webkit -Based UI for TV Devices

Page 1: Netflix  Webkit -Based UI for TV Devices

Netflix Webkit-Based UIfor TV Devices

Matt McCarthy & Kim TrottNetflix

July 29, 2011

Page 2: Netflix  Webkit -Based UI for TV Devices

1. What is Webkit TV UI?2. Why web?3. A/B testing4. Engineering for UI variation5. Performance for TV devices

Topics

Page 3: Netflix  Webkit -Based UI for TV Devices

WEBKIT TV UIwhat’s the big deal?

Page 4: Netflix  Webkit -Based UI for TV Devices

2’ UI vs. 10’ UI

2’ UI

10’ UI

Page 5: Netflix  Webkit -Based UI for TV Devices

Some Netflix Webkit TV UI devices

…and many more

Page 6: Netflix  Webkit -Based UI for TV Devices

I’m an open web. I’m a WebKit.

User Agent

Page 7: Netflix  Webkit -Based UI for TV Devices

WHY WEB?we did think this through

Page 8: Netflix  Webkit -Based UI for TV Devices

Dynamic Updates

Page 9: Netflix  Webkit -Based UI for TV Devices

Common Technology

Page 10: Netflix  Webkit -Based UI for TV Devices

Dynamically Add Locale Support

Page 11: Netflix  Webkit -Based UI for TV Devices

A/B Testing

Page 12: Netflix  Webkit -Based UI for TV Devices

A/B TESTINGbecause you don’t know until you try

Page 13: Netflix  Webkit -Based UI for TV Devices

2007

Page 14: Netflix  Webkit -Based UI for TV Devices

2009

Little Iteration in Native UI

Page 15: Netflix  Webkit -Based UI for TV Devices

2010 2010

2010 2010

Rapid Iteration in Web UI

Page 16: Netflix  Webkit -Based UI for TV Devices
Page 17: Netflix  Webkit -Based UI for TV Devices
Page 18: Netflix  Webkit -Based UI for TV Devices

• Retention

• Streaming hours

Core Metrics

Page 19: Netflix  Webkit -Based UI for TV Devices

Plus

NavigatorSpecialWhich UI led to the most streaming?

56.3%57.1%

58.5%

Page 20: Netflix  Webkit -Based UI for TV Devices

• Application launch count• Hotkey engagement count• Discovery source (e.g. browsing, search,

similar)• Which TV/movie category• Etc.

Secondary Metrics

Page 21: Netflix  Webkit -Based UI for TV Devices

• Navigation schemes• Visual designs• Major UI concepts• Minor UI variations• Emphasis on movies vs. TV• Taste preference input (stars, survey…)• Presentation & explanation of recommendations• Movie discovery sources & algorithms (Queue, similar titles, genres, personalized genres…)• Recommendation algorithms• Movie list length, selection, & quantity• Website button placement, size & behavior• Website page load time• Box art size• Link/button labels• Streaming encoding quality• Streaming startup time• Sign-up design• Sign-up wizard flow• Almost every new feature…And a lot of other stuff over the last 10 years

What else does Netflix test?

Page 22: Netflix  Webkit -Based UI for TV Devices

HOW WE SUPPORT VAST VARIATIONnot just “very carefully”

Page 23: Netflix  Webkit -Based UI for TV Devices

• Events

• Dependency injection

Loose Coupling

Page 24: Netflix  Webkit -Based UI for TV Devices

Example: Special

Page 25: Netflix  Webkit -Based UI for TV Devices

1. Which component handles the next keystroke?

2. How & where do we model navigation between components?

3. …And also, these components should be reusable between completely different UIs

Solve These

Page 26: Netflix  Webkit -Based UI for TV Devices

• Tight coupling

• Mediator pattern

• DOM focus & events

Solutions We’ve Tried & Abandoned

Page 27: Netflix  Webkit -Based UI for TV Devices

• States as the C in MVC–Can drive state transitions

• States are event handling contexts–User input–Programmatic events

Current Solution: State Transition System

Page 28: Netflix  Webkit -Based UI for TV Devices

Search ResultsState

Search ResultsState

Search InputState

Search InputState

Search InputState

Search Compound

State

Search Compound

State

Page 29: Netflix  Webkit -Based UI for TV Devices

PERFORMANCE AND MEMORY

building a lean, mean content browsing machine

Page 30: Netflix  Webkit -Based UI for TV Devices

• Single-page, long-lived application

• High volume of data & images

• Require high performance

• Range of device capabilities

Why do we worry?

Page 31: Netflix  Webkit -Based UI for TV Devices

Device Ecosystem

Video Memory

CPU GPU

Main Memory

CPU Architecture

Graphics driver

Network stack

Memory bus speed

Page 32: Netflix  Webkit -Based UI for TV Devices

Device Ecosystem

CPU: 3.2 GHzGPU: 550 MHzMemory: 512 MB

CPU: 600 MHz 3.2 GHzMemory: 88 MB 512 MB

Page 33: Netflix  Webkit -Based UI for TV Devices

Memory Budget

Total Memory- Operating System

- Webkit- Netflix SDK

- Network/Video Buffer

UI Budget

Page 34: Netflix  Webkit -Based UI for TV Devices

Progressive enhancement

Animations

Request throttling

Cache sizes

Data pre-fetching

None enabled

5 concurrent

Small

Delayed,Small batches

All enabled

20 concurrent

Large

Frequent,Larger batches

Baseline Enhanced

Page 35: Netflix  Webkit -Based UI for TV Devices

0.1 second: Feeling of instantaneous response

1.0 second: Keeps flow of thought seamless

10 seconds: Keeps the user’s attention

Perceived Performance

Nielsen 2010, 1993; Miller 1968; Card et al. 1991

Page 36: Netflix  Webkit -Based UI for TV Devices

• Provide immediate feedback on user input

• Split up long running process

• Mask and reduce perceived wait times

• Background work and anticipate common requests

Ways to Improve Responsiveness

Page 37: Netflix  Webkit -Based UI for TV Devices

• Wait until the user settles for expensive operations or paints

• Avoid DOM changes at the beginning of / during animations

• Tune delays to find the sweet spot

Ways to Improve Responsiveness

Page 38: Netflix  Webkit -Based UI for TV Devices

Provide Visual Cues

Page 39: Netflix  Webkit -Based UI for TV Devices

4

3

2

1

5

6

Naïve implementation• Progressively inserted new DOM

nodes• Animated very large DOM parent• Height ever-growing of DOM parent

Bad: Performance degraded as you scrolled

Performance Evolution: Scrolling Rows

Page 40: Netflix  Webkit -Based UI for TV Devices

215

4

1

2

3

Optimized implementation• Recycle DOM nodes• Animate each row individually• Delaying modifying row until comes

into viewport or the user settles

Good: Performance consistent regardless of location

Performance Evolution: Scrolling Rows

Page 41: Netflix  Webkit -Based UI for TV Devices

Software (CPU) = slowerHardware (GPU) = faster

Page 42: Netflix  Webkit -Based UI for TV Devices

• Avoid CSS gradients, boxshot shadows–Use images instead

• Example: Full-screen CSS radial gradient–Paints were 13 times faster without it

CSS = SoftwareImage = Hardware

Page 43: Netflix  Webkit -Based UI for TV Devices

Eliminate paints

Page 44: Netflix  Webkit -Based UI for TV Devices

• Enables GPU acceleration of compositing parts of the page

• Greatly benefits CSS animations

Accelerated Compositing

Page 45: Netflix  Webkit -Based UI for TV Devices

DOM Tree -> Render Tree -> RenderLayer Tree

Software path• Changes to a render layer require repainting all

overlapping layers

Hardware path• Some render layers paint to their own backing

surface (compositing layer)• Changes to a layer only repaint the contents of

that layer

Accelerated Compositing

Page 46: Netflix  Webkit -Based UI for TV Devices

• 3D transforms

• Opacity changes

• Accidental– Overlapping a layer– Render engine

Several ways to create layers

Page 47: Netflix  Webkit -Based UI for TV Devices

• Safe CSS properties–Transforms–Opacity

• Un-safe–Any other CSS properties–DOM manipulation

Leveraging layers

Page 48: Netflix  Webkit -Based UI for TV Devices

• Keep layers small–Don’t inadvertently create gigantic layers–Memory consumption = width x height x 4

(bit depth)

• Animate smaller areas rather than large parts of the screen

• Trial and error, testing important

Tips

Page 49: Netflix  Webkit -Based UI for TV Devices

Show Compositing Borders

Page 50: Netflix  Webkit -Based UI for TV Devices

• Avoid unbounded growth

• Minimize the number of throwaway objects

• Use closures sparingly & only where necessary

• Dynamically load and unload code

Memory

Page 51: Netflix  Webkit -Based UI for TV Devices

WHAT’S NEXT?i was led to believe there would be flying cars

Page 52: Netflix  Webkit -Based UI for TV Devices

QUESTIONS?

Matt McCarthy – [email protected] – @dnl2baKim Trott – [email protected] – @ktrott00