SlideShare une entreprise Scribd logo
1  sur  30
WAI-ARIA Live Regions:
eBuddy IM as a Case Example
          Peter Thiessen (eBuddy)
  Stephen Hockema (University of Toronto)
Goals

1. introduce live regions and their importance


2. propose a few techniques for handling
   floods of updates
W4A 2007: Reprise
Previously at the W4A Charles Chen and I presented
“AJAX Live Regions: Chat as a case example”

•   introduced:

    •   live regions

    •   limitations (causality, grouping updates, abstractions)

    •   channels

•   demoed Fire Vox announcing updates from ReefChat
Importance of WAI-ARIA
     Live Regions
Rich Internet Applications (RIA) hack HTML4 to
create desktop like User Interfaces (UI)

•   dynamic updates not accessible

•   live regions provide meaningful markup for AT

•   W3C specification = standardized cross browser
    and device (all the major browsers and screen readers)
Live Regions
                                    <div aria-live=“polite”>
                                            update(s) here
                                    </div>

                                    <div aria-live=“assertive”>
                                            higher priority update(s) here
                                    </div>

http://www.w3.org/TR/wai-aria
W3C WAI-ARIA 1.0 specification itself - very detailed.
http://dev.opera.com/articles/view/introduction-to-wai-aria
A most excellent WAI-ARIA 1.0 intro for newbs by: Gez Lemon

http://www.w3.org/TR/wai-aria-practices
Excellent for developers new to ARIA
Are Live Regions
  Production Worthy?
• a few large scale RIAs use live regions
• ARIA HTML attributes are harmless -
  won’t break you application
• more wide scale testing and use cases
  wouldn’t hurt
What would make a good live
     region use case?


• lots! of users
• wide variety of platforms and devices
• lots of dynamic updates and complex user
  interactions
eBuddy IM

             • 1 billion+ users around the world
             • Web, Mobile, Console, ...
             • Chat based = lots of updates


http://www.ebuddy.com
eBuddy Instant Messenger Website for Web and Mobile
eBuddy + live regions
     Follow W3C recommendation of tacking ARIA attributes into
     existing UI to expose dynamic updates. eBuddy IM had 3 main
     dynamic regions:

     1. <div id="container‐tabs" aria‐live=”polite”> …

     2. <ol  id="container‐contacts" aria-live=“polite”> …

     3. <div class=“container-chat-area” role=“log”>…




Note: additional ARIA markup was removed for simplicity.
eBuddy + live regions
Tab list live region:
<div id="container‐tabs" aria‐live=”polite”> …

Contact list live region:
<ol  id="container‐contacts" aria-live=“polite”> …
eBuddy + live regions
Chat session live region:
<div class=“container-chat-area” role=“log”>…
Demo
              Typical Case
10 contacts and 10 messages in about 1 minute
Typical Case:
   Live Regions Work

• effectively exposes DOM updates to AT
• effectively synchronizes with UI
                               (almost)


• appears very production worthy
• another use case coming soon: eBuddy IM
Demo
      Edge Case Live Regions Usage
183 contacts and 20 I/O messages in about 2 minutes
Edge Case:
      Live Regions Fail
• hard to focus: unrelated updates force user
  to multi task
• easily overwhelmed: flood of updates
  causes a user to fall behind
• miss timely updates: could result in a user
  not participating
Visually: lots
of Updates
Another Visual Example
1) Limit UI Visibility
Since AT rarely announce hidden content - minimize
the visibility of UI elements:

•   (+) Simple solution to implement

•   (+) Follow W3C recommendation

•   (-) Could be very limiting in terms of UI creativity
2) Use Assertive Setting
Live regions have a lower priority “polite” and
higher “assertive”:
• (+) Could bump priority updates up in the
  queue (a chat message for example)
• (+) Follow W3C recommendation
• (-) Does not solve grouping issue - increases
  problem
3) Channels
                               (W4A 2007: Reprise)



       Why have only one channel? More channel mappings
       could improve information processing:

       For example:
       -map contact list updates to a Screen Reader channel
       -map chat messages to a braille terminal


*Note: experimental solution
4) Tally Queue (TQ)
      Summary:
      Capture all updates,create logical groupings, and
      announce the active queue updates but only
      announce the tally (sum) and label of inactive queues.

      TQ Elements:
       -one “invisible” polite live region where updates are
       announced (HTML/CSS)
       -(N) tally queue datastore and label (JavaScript)
       -code to manage tally queue updates (JavaScript)


*Note: experimental solution
Same Example but With a
   Tally Queue: Part 1
Same Example but With a
   Tally Queue: Part 2
TQ Pseudo Code
Left as an exercise for the reader:
//Listen for Updates
attach an event listener to each dynamic region
       on event publish the update
subscribe to event updates
       on an update, determine the related tally queue to send update

//Active Tally Queue
Announce tally queue label on becoming active
for each stored update in the tally queue (FILO)
       send update to live region area to be announced

//Inactive Tally Queue(s)
for all updates
        Announce sum of related tally queue and label
TQ HTML and CSS
Left as an exercise for the reader:
//html
<div id="tally-container" aria-live="polite" aria-relevant=“text”>
   <div id="tally-meta” aria-atomic=“true”>
      <div id="tally-count"></div>
      <div id="tally-label"></div>
   </div>
   <div id="tally-message"></div>
</div>

//css to hide tally queue visually but not from AT (WCAG2 technique)
#tally-container {
    height:1px; width:1px; position:absolute; overflow:hidden; top: -10px;
}
TQ Pros and Cons
      •   (+) Improve focus and reduce disorientation

      •   (+) Solves the invisible UI updates issue

      •   (+) Potential for features to help user keep up (pause/
          play, navigable history, and searchable history)


      •   (-) Goes against W3C recommendation

      •   (-) A massive N of updates could still flood the user



TQ in more detail soon: temporarily on overscore.com and
soon after on wiki.codetalks.org
Take Away

              •     Live regions are a key part of Web2 accessibility (all
                    the technology is in place)


              •     Live regions are probably production worthy (more
                    use cases on the way)


              •     Start thinking about handling floods of updates (two
                    possible techniques: Channels, Tally Queues)




Related paper from PARC on tweet verbosity: Bernstein, M.; Kairam, S.; Suh, B.;
Hong, L.; Chi, E. H. A torrent of tweets: managing information overload in online social streams.
CHI 2010 Workshop on Microblogging.; 2010 April 11; Atlanta, GA.
Resources from Slides
•   eBuddy Instant Messenger: http://www.ebuddy.com
•   W3C WAI-ARIA Live Region References:
    • http://www.w3.org/TR/wai-aria
    • http://www.w3.org/TR/wai-aria-primer
    • http://www.w3.org/TR/wai-aria-practices

•   Community ARIA Reference: http://wiki.codetalks.org

•   ARIA introduction: http://dev.opera.com/articles/view/introduction-to-wai-aria

•   Previous W4A Paper:            Thiessen, Peter, Chen, Charles. Ajax Live Regions: Chat as a Case Example. Proceedings of
    the 2007 international cross-disciplinary workshop on Web accessibility (W4A), 2007.

•   (XEROX) PARC Research paper on tweet verbosity: Bernstein, M.; Kairam, S.; Suh, B.; Hong, L.; Chi, E.
    H. A torrent of tweets: managing information overload in online social streams. CHI 2010 Workshop on Microblogging.;
    2010 April 11; Atlanta, GA.
Questions?
                    Live Region Issue                                          Possible Solution
         Update Grouping: no method to group updates in
                                                                     Add a live region tag to assign group labels.
         ARIA - must use client side logic.

         Prioritization: The assertive setting has few uses and      Either add more meaningful prioritization or remove
         is very limited for prioritization queuing. No setting to   assertive as well.
         alter natural order of updates.
         Obsolete Items: Not announced and sometimes it is           Add a toggle to enable/disable announcing obsolete
         desirable to announce obsolete items removed from the       items
         DOM.
         Hidden Updates: UI updates not visible on the               Add a toggle to enable/disable announcing invisible
         screen are not announced when brought into focus.           updates brought to the for ground

         Causality: No setting to determine if an update was a       Add a toggle to enable/disable announcing distinction
         user driven or client (system) driven update.               between user and client updates.



Tell us what you would like eBuddy IM to be/do:
pthiessen@ebuddy.com
eBuddy is hiring
www.ebuddy.com/jobs.php

Contenu connexe

Similaire à W4A10 - WAI-ARIA Live Regions: eBuddy IM as a Case Example

Making RIAs Accessible - Spring Break 2008
Making RIAs Accessible - Spring Break 2008Making RIAs Accessible - Spring Break 2008
Making RIAs Accessible - Spring Break 2008Andrea Hill
 
Hortonworks Technical Workshop: What's New in HDP 2.3
Hortonworks Technical Workshop: What's New in HDP 2.3Hortonworks Technical Workshop: What's New in HDP 2.3
Hortonworks Technical Workshop: What's New in HDP 2.3Hortonworks
 
01 web 2.0 - more than a pretty face for soa
01   web 2.0 - more than a pretty face for soa01   web 2.0 - more than a pretty face for soa
01 web 2.0 - more than a pretty face for soaTechnology Transfer
 
VASmalltalk, Today and Tomorrow
VASmalltalk, Today and TomorrowVASmalltalk, Today and Tomorrow
VASmalltalk, Today and TomorrowESUG
 
Win j svsphonegap-damyan-petev-mihail-mateev
Win j svsphonegap-damyan-petev-mihail-mateevWin j svsphonegap-damyan-petev-mihail-mateev
Win j svsphonegap-damyan-petev-mihail-mateevMihail Mateev
 
Open web device as the reference feature phone
Open web device as the reference feature phoneOpen web device as the reference feature phone
Open web device as the reference feature phoneMiguel Schneider
 
Drupal Europe 2018: Hackers automate but the drupal community still downloads...
Drupal Europe 2018: Hackers automate but the drupal community still downloads...Drupal Europe 2018: Hackers automate but the drupal community still downloads...
Drupal Europe 2018: Hackers automate but the drupal community still downloads...hernanibf
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to MicroservicesAd van der Veer
 
WebRTC standards update - November 2014
WebRTC standards update - November 2014WebRTC standards update - November 2014
WebRTC standards update - November 2014Victor Pascual Ávila
 
WinOps meetup April 2016 DevOps lessons from Microsoft \\Build\
WinOps meetup April 2016   DevOps lessons from Microsoft \\Build\WinOps meetup April 2016   DevOps lessons from Microsoft \\Build\
WinOps meetup April 2016 DevOps lessons from Microsoft \\Build\DevOpsGroup
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017Patrick Chanezon
 
2016 Federal User Group Conference - TeamForge Capabilities and Directions
2016 Federal User Group Conference - TeamForge Capabilities and Directions2016 Federal User Group Conference - TeamForge Capabilities and Directions
2016 Federal User Group Conference - TeamForge Capabilities and DirectionsCollabNet
 
InduSoft Web Studio 8.0 + SP1 + Patch One Review
InduSoft Web Studio 8.0 + SP1 + Patch One ReviewInduSoft Web Studio 8.0 + SP1 + Patch One Review
InduSoft Web Studio 8.0 + SP1 + Patch One ReviewAVEVA
 
System Development Life Cycle
System Development Life CycleSystem Development Life Cycle
System Development Life Cyclesourav verma
 
Web 2.0: Behind The Hype Panel
Web 2.0: Behind The Hype PanelWeb 2.0: Behind The Hype Panel
Web 2.0: Behind The Hype Panellisbk
 
Denver ACE October 21st 2020
Denver ACE October 21st 2020Denver ACE October 21st 2020
Denver ACE October 21st 2020denveraug
 
TiConf Australia 2013
TiConf Australia 2013TiConf Australia 2013
TiConf Australia 2013Jeff Haynie
 
C Cure Users Group Presentation Final 4
C Cure Users Group Presentation Final 4C Cure Users Group Presentation Final 4
C Cure Users Group Presentation Final 4halgig
 
Technology standard ci_platforms
Technology standard ci_platformsTechnology standard ci_platforms
Technology standard ci_platformssuleymanissiz
 

Similaire à W4A10 - WAI-ARIA Live Regions: eBuddy IM as a Case Example (20)

Making RIAs Accessible - Spring Break 2008
Making RIAs Accessible - Spring Break 2008Making RIAs Accessible - Spring Break 2008
Making RIAs Accessible - Spring Break 2008
 
Hortonworks Technical Workshop: What's New in HDP 2.3
Hortonworks Technical Workshop: What's New in HDP 2.3Hortonworks Technical Workshop: What's New in HDP 2.3
Hortonworks Technical Workshop: What's New in HDP 2.3
 
Html5 aria-css-ibm-csun-2016
Html5 aria-css-ibm-csun-2016Html5 aria-css-ibm-csun-2016
Html5 aria-css-ibm-csun-2016
 
01 web 2.0 - more than a pretty face for soa
01   web 2.0 - more than a pretty face for soa01   web 2.0 - more than a pretty face for soa
01 web 2.0 - more than a pretty face for soa
 
VASmalltalk, Today and Tomorrow
VASmalltalk, Today and TomorrowVASmalltalk, Today and Tomorrow
VASmalltalk, Today and Tomorrow
 
Win j svsphonegap-damyan-petev-mihail-mateev
Win j svsphonegap-damyan-petev-mihail-mateevWin j svsphonegap-damyan-petev-mihail-mateev
Win j svsphonegap-damyan-petev-mihail-mateev
 
Open web device as the reference feature phone
Open web device as the reference feature phoneOpen web device as the reference feature phone
Open web device as the reference feature phone
 
Drupal Europe 2018: Hackers automate but the drupal community still downloads...
Drupal Europe 2018: Hackers automate but the drupal community still downloads...Drupal Europe 2018: Hackers automate but the drupal community still downloads...
Drupal Europe 2018: Hackers automate but the drupal community still downloads...
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to Microservices
 
WebRTC standards update - November 2014
WebRTC standards update - November 2014WebRTC standards update - November 2014
WebRTC standards update - November 2014
 
WinOps meetup April 2016 DevOps lessons from Microsoft \\Build\
WinOps meetup April 2016   DevOps lessons from Microsoft \\Build\WinOps meetup April 2016   DevOps lessons from Microsoft \\Build\
WinOps meetup April 2016 DevOps lessons from Microsoft \\Build\
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017
 
2016 Federal User Group Conference - TeamForge Capabilities and Directions
2016 Federal User Group Conference - TeamForge Capabilities and Directions2016 Federal User Group Conference - TeamForge Capabilities and Directions
2016 Federal User Group Conference - TeamForge Capabilities and Directions
 
InduSoft Web Studio 8.0 + SP1 + Patch One Review
InduSoft Web Studio 8.0 + SP1 + Patch One ReviewInduSoft Web Studio 8.0 + SP1 + Patch One Review
InduSoft Web Studio 8.0 + SP1 + Patch One Review
 
System Development Life Cycle
System Development Life CycleSystem Development Life Cycle
System Development Life Cycle
 
Web 2.0: Behind The Hype Panel
Web 2.0: Behind The Hype PanelWeb 2.0: Behind The Hype Panel
Web 2.0: Behind The Hype Panel
 
Denver ACE October 21st 2020
Denver ACE October 21st 2020Denver ACE October 21st 2020
Denver ACE October 21st 2020
 
TiConf Australia 2013
TiConf Australia 2013TiConf Australia 2013
TiConf Australia 2013
 
C Cure Users Group Presentation Final 4
C Cure Users Group Presentation Final 4C Cure Users Group Presentation Final 4
C Cure Users Group Presentation Final 4
 
Technology standard ci_platforms
Technology standard ci_platformsTechnology standard ci_platforms
Technology standard ci_platforms
 

Dernier

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Dernier (20)

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

W4A10 - WAI-ARIA Live Regions: eBuddy IM as a Case Example

  • 1. WAI-ARIA Live Regions: eBuddy IM as a Case Example Peter Thiessen (eBuddy) Stephen Hockema (University of Toronto)
  • 2. Goals 1. introduce live regions and their importance 2. propose a few techniques for handling floods of updates
  • 3. W4A 2007: Reprise Previously at the W4A Charles Chen and I presented “AJAX Live Regions: Chat as a case example” • introduced: • live regions • limitations (causality, grouping updates, abstractions) • channels • demoed Fire Vox announcing updates from ReefChat
  • 4. Importance of WAI-ARIA Live Regions Rich Internet Applications (RIA) hack HTML4 to create desktop like User Interfaces (UI) • dynamic updates not accessible • live regions provide meaningful markup for AT • W3C specification = standardized cross browser and device (all the major browsers and screen readers)
  • 5. Live Regions <div aria-live=“polite”> update(s) here </div> <div aria-live=“assertive”> higher priority update(s) here </div> http://www.w3.org/TR/wai-aria W3C WAI-ARIA 1.0 specification itself - very detailed. http://dev.opera.com/articles/view/introduction-to-wai-aria A most excellent WAI-ARIA 1.0 intro for newbs by: Gez Lemon http://www.w3.org/TR/wai-aria-practices Excellent for developers new to ARIA
  • 6. Are Live Regions Production Worthy? • a few large scale RIAs use live regions • ARIA HTML attributes are harmless - won’t break you application • more wide scale testing and use cases wouldn’t hurt
  • 7. What would make a good live region use case? • lots! of users • wide variety of platforms and devices • lots of dynamic updates and complex user interactions
  • 8. eBuddy IM • 1 billion+ users around the world • Web, Mobile, Console, ... • Chat based = lots of updates http://www.ebuddy.com eBuddy Instant Messenger Website for Web and Mobile
  • 9. eBuddy + live regions Follow W3C recommendation of tacking ARIA attributes into existing UI to expose dynamic updates. eBuddy IM had 3 main dynamic regions: 1. <div id="container‐tabs" aria‐live=”polite”> … 2. <ol  id="container‐contacts" aria-live=“polite”> … 3. <div class=“container-chat-area” role=“log”>… Note: additional ARIA markup was removed for simplicity.
  • 10. eBuddy + live regions Tab list live region: <div id="container‐tabs" aria‐live=”polite”> … Contact list live region: <ol  id="container‐contacts" aria-live=“polite”> …
  • 11. eBuddy + live regions Chat session live region: <div class=“container-chat-area” role=“log”>…
  • 12. Demo Typical Case 10 contacts and 10 messages in about 1 minute
  • 13. Typical Case: Live Regions Work • effectively exposes DOM updates to AT • effectively synchronizes with UI (almost) • appears very production worthy • another use case coming soon: eBuddy IM
  • 14. Demo Edge Case Live Regions Usage 183 contacts and 20 I/O messages in about 2 minutes
  • 15. Edge Case: Live Regions Fail • hard to focus: unrelated updates force user to multi task • easily overwhelmed: flood of updates causes a user to fall behind • miss timely updates: could result in a user not participating
  • 18. 1) Limit UI Visibility Since AT rarely announce hidden content - minimize the visibility of UI elements: • (+) Simple solution to implement • (+) Follow W3C recommendation • (-) Could be very limiting in terms of UI creativity
  • 19. 2) Use Assertive Setting Live regions have a lower priority “polite” and higher “assertive”: • (+) Could bump priority updates up in the queue (a chat message for example) • (+) Follow W3C recommendation • (-) Does not solve grouping issue - increases problem
  • 20. 3) Channels (W4A 2007: Reprise) Why have only one channel? More channel mappings could improve information processing: For example: -map contact list updates to a Screen Reader channel -map chat messages to a braille terminal *Note: experimental solution
  • 21. 4) Tally Queue (TQ) Summary: Capture all updates,create logical groupings, and announce the active queue updates but only announce the tally (sum) and label of inactive queues. TQ Elements: -one “invisible” polite live region where updates are announced (HTML/CSS) -(N) tally queue datastore and label (JavaScript) -code to manage tally queue updates (JavaScript) *Note: experimental solution
  • 22. Same Example but With a Tally Queue: Part 1
  • 23. Same Example but With a Tally Queue: Part 2
  • 24. TQ Pseudo Code Left as an exercise for the reader: //Listen for Updates attach an event listener to each dynamic region on event publish the update subscribe to event updates on an update, determine the related tally queue to send update //Active Tally Queue Announce tally queue label on becoming active for each stored update in the tally queue (FILO) send update to live region area to be announced //Inactive Tally Queue(s) for all updates Announce sum of related tally queue and label
  • 25. TQ HTML and CSS Left as an exercise for the reader: //html <div id="tally-container" aria-live="polite" aria-relevant=“text”> <div id="tally-meta” aria-atomic=“true”> <div id="tally-count"></div> <div id="tally-label"></div> </div> <div id="tally-message"></div> </div> //css to hide tally queue visually but not from AT (WCAG2 technique) #tally-container { height:1px; width:1px; position:absolute; overflow:hidden; top: -10px; }
  • 26. TQ Pros and Cons • (+) Improve focus and reduce disorientation • (+) Solves the invisible UI updates issue • (+) Potential for features to help user keep up (pause/ play, navigable history, and searchable history) • (-) Goes against W3C recommendation • (-) A massive N of updates could still flood the user TQ in more detail soon: temporarily on overscore.com and soon after on wiki.codetalks.org
  • 27. Take Away • Live regions are a key part of Web2 accessibility (all the technology is in place) • Live regions are probably production worthy (more use cases on the way) • Start thinking about handling floods of updates (two possible techniques: Channels, Tally Queues) Related paper from PARC on tweet verbosity: Bernstein, M.; Kairam, S.; Suh, B.; Hong, L.; Chi, E. H. A torrent of tweets: managing information overload in online social streams. CHI 2010 Workshop on Microblogging.; 2010 April 11; Atlanta, GA.
  • 28. Resources from Slides • eBuddy Instant Messenger: http://www.ebuddy.com • W3C WAI-ARIA Live Region References: • http://www.w3.org/TR/wai-aria • http://www.w3.org/TR/wai-aria-primer • http://www.w3.org/TR/wai-aria-practices • Community ARIA Reference: http://wiki.codetalks.org • ARIA introduction: http://dev.opera.com/articles/view/introduction-to-wai-aria • Previous W4A Paper: Thiessen, Peter, Chen, Charles. Ajax Live Regions: Chat as a Case Example. Proceedings of the 2007 international cross-disciplinary workshop on Web accessibility (W4A), 2007. • (XEROX) PARC Research paper on tweet verbosity: Bernstein, M.; Kairam, S.; Suh, B.; Hong, L.; Chi, E. H. A torrent of tweets: managing information overload in online social streams. CHI 2010 Workshop on Microblogging.; 2010 April 11; Atlanta, GA.
  • 29. Questions? Live Region Issue Possible Solution Update Grouping: no method to group updates in Add a live region tag to assign group labels. ARIA - must use client side logic. Prioritization: The assertive setting has few uses and Either add more meaningful prioritization or remove is very limited for prioritization queuing. No setting to assertive as well. alter natural order of updates. Obsolete Items: Not announced and sometimes it is Add a toggle to enable/disable announcing obsolete desirable to announce obsolete items removed from the items DOM. Hidden Updates: UI updates not visible on the Add a toggle to enable/disable announcing invisible screen are not announced when brought into focus. updates brought to the for ground Causality: No setting to determine if an update was a Add a toggle to enable/disable announcing distinction user driven or client (system) driven update. between user and client updates. Tell us what you would like eBuddy IM to be/do: pthiessen@ebuddy.com

Notes de l'éditeur