this is the first presentation of the nbconvert-a11y template for assistive reading experiences in notebooks. these templates look beyond web content accessibility guidelines to construct idealized experiences for assistive technology.
# semantically meaningful notebooks
this is the first presentation of the `nbconvert-a11y` template for assistive reading experiences in notebooks. these templates look beyond web content accessibility guidelines to construct idealized experiences for assistive technology.
1. perceivable notebooks
2. operable notebooks
3. notebook demo
4. robust notebooks
this is the first presentation of the
nbconvert-a11y
template for assistive reading experiences in notebooks. these templates look beyond web content accessibility guidelines to construct idealized experiences for assistive technology.
## TLDR*EVERYONE, including assistive technology users, should have accessible developer experiences
*<q>HTML is our matter</q> for accessible experiences
*WCAG is anachronistic for interactive computing education
*reference implementations (eg [ARIA practice guides](https://www.w3.org/WAI/ARIA/apg/patterns/)) provide valuable calibrations for more complex applications
## beyond wcag*the POUR principles of [WCAG](https://www.w3.org/TR/WCAG/) are limited for computational literacies
<ul class=barb aria-label="accessibility principles for web content accessibility guidelines">
<li><a href="https://github.com/Chartability/POUR-CAF#perceivable">perceivable</a></li>
<li><a href="https://github.com/Chartability/POUR-CAF#operable">operable</a></li>
<li><a href="https://github.com/Chartability/POUR-CAF#understandable">understandable</a>
</li>
<li><a href="https://github.com/Chartability/POUR-CAF#robust">robust</a>
</li>
</ul>
*[section 508 amendent of the rehabiliation act of 1973](https://en.wikipedia.org/wiki/Section_508_Amendment_to_the_Rehabilitation_Act_of_1973) is drastically insufficient for the needs of interactive computing technology.
*[WCAG 2.0](https://www.w3.org/TR/WCAG20/) was published in Dec 2008 long before the demanding needs of modern javascript (eg [Modern Health, frameworks, performance, and harm ](https://ericwbailey.website/published/modern-health-frameworks-performance-and-harm/))
*[WCAG 2.2](https://www.w3.org/TR/WCAG22/), adopted in October 2023, is a more equitable goal with clearer specifications for implementers and testers than the prior versions. satisfy AAA and allow the ability to downgrade when access needs are less important.
*federal compliance goals actively neglect the needs of assistive technology users in modern learning environments and creates a two-tier system.
WCAG 2.2
, adopted in October 2023, is a more equitable goal with clearer specifications for implementers and testers than the prior versions. satisfy AAA and allow the ability to downgrade when access needs are less important.
federal compliance goals actively neglect the needs of assistive technology users in modern learning environments and creates a two-tier system.
## what if web content accessibility guidelines cared about visualization and data?
<figure>
<figcaption>
<q cite="https://github.com/Chartability/POUR-CAF"><a href="https://chartability.fizz.studio/">Chartability</a> is a set of heuristics for ensuring that data visualizations, systems, and interfaces are accessible.</q>
<br/>
the first four principles extend from web content accessibility guidelines. the last three principles are the additional principles for accessibile data experiences.
</figcaption>
<ul class=barb aria-label="accessibility principles for accessibile data experiences.">
<li><a href="https://github.com/Chartability/POUR-CAF#perceivable">perceivable</a>
<q>User must be able to easily identify content using their senses: sight, sound, and touch.</q></li>
<li><a href="https://github.com/Chartability/POUR-CAF#operable">operable</a>
<q>All controls must be error-tolerant, discoverable, and multi-modal (not just mouse operable, but using keyboard, etc).</q></li>
<li><a href="https://github.com/Chartability/POUR-CAF#understandable">understandable</a>
<q>Any information or data are presented without ambiguity, with clarity, and in a way that minimizes cognitive load.
</q></li>
<li><a href="https://github.com/Chartability/POUR-CAF#robust">robust</a>
<q>The design is compliant with existing standards and works with the user’s compliant, assistive technologies of choice.
</q></li>
<li><a href="https://github.com/Chartability/POUR-CAF#compromising">compromising</a>
<q>(Understandable, yet Robust): Information flows must provide transparency, tolerance, and consideration for different ways that users with assistive technologies and disabilities will prefer to consume different information.</q></li>
<li><a href="https://github.com/Chartability/POUR-CAF#assistive">assistive</a>
<q>(Understandable and Perceivable but labor-reducing): Interface must be intelligent and multi-sensory in a way that reduces the cognitive and functional labor required for use.
</q></li>
<li><a href="https://github.com/Chartability/POUR-CAF#flexible">flexible</a>
<q>(Perceivable and Operable, yet Robust): Design must respect user settings from user agents (browsers, operating systems, applications) and provide presentation and operation control.
</q></li>
</ul>
</figure>
read more about the relationship between <a href="https://github.com/deathbeds/nbconvert-a11y/wiki/accessible-computational-notebooks">accessible computational notebooks</a> and other <a href="https://www.w3.org/WAI/about/">web accessibility initiatives</a> on the <code>nbconvert-a11y</code> <a href="https://github.com/deathbeds/nbconvert-a11y/wiki">work in progress wiki</a>.
read more about the relationship between
accessible computational notebooks and other
web accessibility initiatives on the
nbconvert-a11y
work in progress wiki.
## designing assistive interfaces for POUR-CAF outcomes
accessibility is the floor.
our perceivable designs consider all the sensory modalities that are possible with hypermedia.
we'll find that correctly choosing semantics from the html standard has superior accessibility outcomes.
*how is the story percievable?
*what does the story feel like?
*what does the story sound like?
*what does the story look like?
*how operable and understandable is your opinion?
*who are you including?
*who are you excluding?
*is it configurable?
*what would [game accessibility guidelines say](https://gameaccessibilityguidelines.com/full-list/)?
*how robust is your approach?
*automated testing
*did you validate the html data structure?
*did you check the accessibility tree?
*user testing
*did you test with at least one screen reader?
*how you consulted affected communities?
accessibility is the floor.
our perceivable designs consider all the sensory modalities that are possible with hypermedia.
we'll find that correctly choosing semantics from the html standard has superior accessibility outcomes.
## demo: what does the story feel like?> there is no such thing as a static document in HTML.
a demonstration of standard, low vision, and screen navigation of the `nbconvert-a11y` template.
*tab stops
![a snapshot of the tab stops in a template starting from the url](attachment:515bb263-f39f-44ac-9bc6-c689e9a6b3b6.png)
> non-standard tabbing events are plaguing jupyter keyboard accessibility. see [tab traps pr](https://github.com/jupyterlab/jupyterlab/pull/14115)*screen reader navigation - screen readers have more tactile dimensions than otherwise
*cell list navigation
![a snapshot of the list item navigation illustrating how cells can be navigated.](attachment:5bfbc41e-3aee-442e-9ca4-4308933cc661.png)
*cell landmark navigation
![a snapshot of an alternative cell navigation mode using landmarks.](attachment:503f2b37-9845-43ed-9488-1fceb51da309.png)
*> [standard jupyter keyboard shortcuts conflict standard screen reader shortcuts.](https://github.com/jupyterlab/jupyterlab/issues/15303)
*currently, we use the suspect [`accesskey`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/accesskey) attribute for cell navigation and settings.
*conditionally operable [`dialog`](https://www.scottohara.me/blog/2023/01/26/use-the-dialog-element.html) and [`details`](https://adrianroselli.com/2019/04/details-summary-are-not-insert-control-here.html) options
*[include a visual table of contents](https://github.com/Iota-School/notebooks-for-all/issues/9)
*![image.png](attachment:0ee2a3c2-8bdc-4c72-9992-9ab81b93476c.png)
*![image.png](attachment:e61258ba-68ae-41fa-b92a-5f7bdd8596ce.png)
*explore more advanced `role=widget``grid` or `tree` that require javascript interventions.
in real interactive applications, technincal debt makes it hard to determine the accessible notebook experience in modern applications. they are not designed to be accessible so they are bad references for our goal. reference templates give us the ability to test expectations and implement our applications accordingly.
1
in real interactive applications, technincal debt makes it hard to determine the accessible notebook experience in modern applications. they are not designed to be accessible so they are bad references for our goal. reference templates give us the ability to test expectations and implement our applications accordingly.
## what does the story sound like?
we'll listen different aspects of screen reader navigation.
*the gestalt of a notebook
*at a glance, sighted visitors can assess overall qualities of notebooks. what are some?
*cell navigation, we can't know what is best for generic content
*aria live to indicate changes
*the reference template provided a valuable test bed for aria live best practices to influence [jupyterlab](https://github.com/jupyterlab/jupyterlab/pull/15048)
## what does the story look like?*reader mode color and text settings
*![nbconvert a11y settings juxtaposed next to firefox reader mode](attachment:9b488388-6f8a-4d7f-a3e9-5d936095c72a.png)
*notebook summary, table of contents, and activity log
*![the notebook summary and table of contents buttons](attachment:999a326a-b7dd-4396-863b-fdf2d1fa2ca6.png)
*![the user facing activity log](attachment:a2077d31-ca2b-41c5-9f17-1a81b3e71b9a.png)
## why is the urge believe sight so strong?
do we try to cram too much information into our narrow visual channels? what happens if we express more of the electromagnetic spectrum?
http://www.eklhad.net/philosophy.html
## did you test?*github issues may be insufficient to capture the disabled experience. [consider audio/visual feedback](https://github.com/Iota-School/notebooks-for-all/pull/73). following are examples of tony and patrick auditting the nbconvert a11y template
*10/18/2023 - https://www.youtube.com/watch?v=GkINFX3aJw0
*10/25/2023 - https://www.youtube.com/watch?v=Ku-leCdn6hk
*is the html validated?
*[pytest fixture](https://github.com/deathbeds/nbconvert-a11y/blob/main/nbconvert_a11y/pytest_w3c.py) for the [w3c validator](https://validator.w3.org/)
*accessibility testing is approaches are insufficient for open source. accessibility is a mission that requires dealing in inaccessibility and accessibility. (eg [measuring 3rd party inaccessibility](https://github.com/deathbeds/nbconvert-a11y/blob/main/tests/test_third.py)) with more [malleable deque AXE test fixtures](https://github.com/deathbeds/nbconvert-a11y/blob/main/nbconvert_a11y/pytest_axe.py)
*what does the accessibility tree look like?
![an accessibility tree illustrating the annotation object model for the document](attachment:6930099f-34b1-45c5-87c8-8d58cbd30bfa.png)
*[automated screen reader testing with guidepup](https://github.com/deathbeds/nbconvert-a11y/pull/30) is still a working in progress. can we measure understanding or information loss using virtual screen readers?
github issues may be insufficient to capture the disabled experience.
consider audio/visual feedback
. following are examples of tony and patrick auditting the nbconvert a11y template
## No Table (Critical)
[No Table (Critical)](https://github.com/Chartability/POUR-CAF?tab=readme-ov-file#no-table-critical)
html is our matter.
*we acheive superior assistive technology experiences for computational works
by expressing more of the html5 vocabulary to capture notebooks semantics.
> If you can use a native HTML element [HTML51] or attribute with the semantics and behavior you require already built in, instead of re-purposing an element and adding an ARIA role, state or property to make it accessible, then do so. > > https://www.w3.org/TR/using-aria/#firstrule > Do not change native semantics, unless you really have to. > > https://www.w3.org/TR/using-aria/#secondrule*it provides the accessible substrate for reading notebooks through progressive enhancement
*the table structure is flexible for notebook documents because they are stored as structured data
![the document object model for the notebook as a table](attachment:ac5c283a-dfef-449a-a59c-ec7e55a7a863.png)
[history of html tables](http://www.tiernok.com/posts/history-of-html-table-layouts.html)
[web typography tables](https://alistapart.com/article/web-typography-tables/)
we acheive superior assistive technology experiences for computational works
by expressing more of the html5 vocabulary to capture notebooks semantics.
If you can use a native HTML element [HTML51] or attribute with the semantics and behavior you require already built in, instead of re-purposing an element and adding an ARIA role, state or property to make it accessible, then do so.