This pack uses the template for slides for TPAC 2022.

To start the slide show:

Press ‘A’. Return to the index by pressing ‘A’ or ‘Esc’. On a touch screen, use a 3-finger touch. You can also double click to open a specific slide. In slide mode, press ‘?’ (question mark) to get a list of available commands.

If it doesn't work: Slide mode requires a recent browser with JavaScript. If you are using the ‘NoScript’ add-on (Firefox or the Tor Browser), or changed the ‘site settings’ (Chrome, Vivaldi, Opera, Brave and some other browsers), or the ‘permissions for this site’ (Edge), you may have to explicitly allow JavaScript on these slides. Internet Explorer is not supported.

Leaving slide mode.

Breakout Session:

Architecting for Privacy, Media Accessibility and Product development: the video element

Nigel Megitt, BBC

14 September 2022, 13:30-14:30 America / Vancouver

IRC: private-a11y

Summary and goals

Session summary

Think about architectural models for allowing user accessibility choices while maintaining privacy and providing data to support product development, with reference to the video element in particular.

Session goals

Understand what architectural pattern(s) can allow user choices without exposing additional fingerprinting vectors or increasing privacy risks, while also providing usable product data.

Context

Proposed Solution

The solutions being looked at seem to have these properties:

The problem(s)

Core question for this session

What architecture can allow users to set preferences in a reusable way without exposing them to unwanted fingerprinting, while allowing content/app/page providers to get useful product data about accessibility feature usage, and allowing for creative/improving solutions for accessibility?

The <video> element

Let's step through some key features of the <video> element...

<video> accepts no children:

<video controls>
   This text will not be rendered
   by browsers that
   support the video element
</video>

<video> is a shadow host but accepts no shadow tree

It's a built-in element that already contains a shadow DOM and doesn't accept an additional one.

No parent-child layout

Pages can not use traditional parent-child layout to put overlays on top of video - they are forced to create a separate element and use CSS to position them in the same location.

Ever tried tracking video element moves when the page layout changes?

No general purpose polyfills

It is essentially impossible to create a general purpose polyfill to provide, say, caption rendering, because the introduction of a new container element to the DOM may have unknown effects on the code in the page.

It is possible to do it if the page creates a specific container element and arranges for positional alignment.

But that's what the polyfill should do!

Even if it were possible, there would be no way to access the user’s accessibility settings, even if the user wanted to allow it, or there were other ways to track the user (so no incremental fingerprinting).

Usage tracking is limited

Basic usage data can be retrieved by using cue entry and exit handlers in JS

No data about user accessibility setting choices can be collected because they are opaque to the page.

Good for privacy, bad for product improvement.

Both the current choices are non-ideal

Choice 1: Use <track> children with VTT captions and hand over to the browser to render:

Both the current choices are non-ideal

Choice 2: Create a separate container element as part of the page and use that to render captions; use CSS to colocate it positionally with the video; customisation is whatever the page offers.

We seem to be able to satisfy user needs or product owner needs but not both!

Can we do any better? (1/2)

Here are some ideas, not mutually exclusive (maybe co-dependent):

Can we do any better? (2/2)

Here are some ideas, not mutually exclusive (maybe co-dependent):

What can native apps offer?

By way of comparison, what do native apps do?

Discuss!