netflix webkit -based ui for tv devices

Post on 26-Feb-2016

93 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

Netflix Webkit-Based UIfor TV Devices

Matt McCarthy & Kim TrottNetflix

July 29, 2011

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

Topics

WEBKIT TV UIwhat’s the big deal?

2’ UI vs. 10’ UI

2’ UI

10’ UI

Some Netflix Webkit TV UI devices

…and many more

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

User Agent

WHY WEB?we did think this through

Dynamic Updates

Common Technology

Dynamically Add Locale Support

A/B Testing

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

2007

2009

Little Iteration in Native UI

2010 2010

2010 2010

Rapid Iteration in Web UI

• Retention

• Streaming hours

Core Metrics

Plus

NavigatorSpecialWhich UI led to the most streaming?

56.3%57.1%

58.5%

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

similar)• Which TV/movie category• Etc.

Secondary Metrics

• 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?

HOW WE SUPPORT VAST VARIATIONnot just “very carefully”

• Events

• Dependency injection

Loose Coupling

Example: Special

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

• Tight coupling

• Mediator pattern

• DOM focus & events

Solutions We’ve Tried & Abandoned

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

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

Current Solution: State Transition System

Search ResultsState

Search ResultsState

Search InputState

Search InputState

Search InputState

Search Compound

State

Search Compound

State

PERFORMANCE AND MEMORY

building a lean, mean content browsing machine

• Single-page, long-lived application

• High volume of data & images

• Require high performance

• Range of device capabilities

Why do we worry?

Device Ecosystem

Video Memory

CPU GPU

Main Memory

CPU Architecture

Graphics driver

Network stack

Memory bus speed

Device Ecosystem

CPU: 3.2 GHzGPU: 550 MHzMemory: 512 MB

CPU: 600 MHz 3.2 GHzMemory: 88 MB 512 MB

Memory Budget

Total Memory- Operating System

- Webkit- Netflix SDK

- Network/Video Buffer

UI Budget

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

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

• 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

• 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

Provide Visual Cues

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

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

Software (CPU) = slowerHardware (GPU) = faster

• Avoid CSS gradients, boxshot shadows–Use images instead

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

CSS = SoftwareImage = Hardware

Eliminate paints

• Enables GPU acceleration of compositing parts of the page

• Greatly benefits CSS animations

Accelerated Compositing

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

• 3D transforms

• Opacity changes

• Accidental– Overlapping a layer– Render engine

Several ways to create layers

• Safe CSS properties–Transforms–Opacity

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

Leveraging layers

• 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

Show Compositing Borders

• Avoid unbounded growth

• Minimize the number of throwaway objects

• Use closures sparingly & only where necessary

• Dynamically load and unload code

Memory

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

QUESTIONS?

Matt McCarthy – mmccarthy@netflix.com – @dnl2baKim Trott – ktrott@netflix.com – @ktrott00

top related