Netflix Webkit -Based UI for TV Devices
description
Transcript of Netflix Webkit -Based UI for TV Devices
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 – [email protected] – @dnl2baKim Trott – [email protected] – @ktrott00