Yahoo! Experiences with Accessibility (a11y), DHTML, and Ajax in Rich Internet Applications Nate Koechley [email protected] http://nate.koechley.com/blog Refresh 06 Orlando, Florida2006.11.16
Download ReportTranscript Yahoo! Experiences with Accessibility (a11y), DHTML, and Ajax in Rich Internet Applications Nate Koechley [email protected] http://nate.koechley.com/blog Refresh 06 Orlando, Florida2006.11.16
Yahoo! Experiences with Accessibility (a11y), DHTML, and Ajax in Rich Internet Applications Nate Koechley [email protected] http://nate.koechley.com/blog Refresh 06 Orlando, Florida 1 2006.11.16 Hello, World • Nate Koechley – Charter member of Web Development team – In the trenches and in management – Yahoo! User Interface (YUI) Library team • Senior Front-End Engineer, Technical Evangelist, Design Liaison, YUIBlog Editor • Responsible for Yahoo! Browser Support specs • Role: Strategy and Direction 2 What’s Happening? 4 Browser vs. Desktop 5 Web 1.0 vs. Web 2.0 6 7 “Getting It Right The Second Time” – matt sweeney 8 Getting it Right the Second Time • Use technology as designed H1, LI, P • Not corrupt layers of the stack Bad: class=“red-button” and href=“#” • Create platforms. Evolvability – Encapsulation, Flexibility, Mashups, Services, Portability • Preserve opportunity & availability 9 How do you move to RIAs? 10 Definitions 13 Definitions: DHTML / Ajax • Is NOT a specific technology 14 Definitions: DHTML / Ajax • Is NOT a specific technology • Is NOT inherently inaccessible 15 Definitions: Rich Internet Applications (RIAs) • RIAs are: – web apps with features and functionality of traditional desktop applications – can be created in various languages: Flash, JavaScript, Java • today’s talk is focused on JavaScript RIAs 16 Definitions: Accessibility • Accessibility is: – “A general term used to describe the degree to which a system is usable by as many people as possible without modification” (cite: wikipedia) • Often, our focus is on enabling screenreaders specifically – However, the resulting work in generally more far-reaching 17 Accessibility = Availability Accessibility is Availability 18 Accessibility = Availability Accessibility is Availability 19 Accessibility = Availability Accessibility is Availability 20 “Rich” isn’t new, so what about desktop accessibility? 21 Accessibility on the Desktop • OS provides a11y API – Microsoft’s Active Accessibility 2.0 (MSAA) – Sun’s Java Access Bridge – Accessibility Toolkit for Linux (ATK) • Assistive Technology talks to OS API • Result: nearly ubiquitous a11y 22 So desktop accessibility is nearly ubiquitous, but what about web accessibility? 23 Accessibility on the Web (1) • Some information is provided to the desktop API – The Document Object Model (DOM) provides static information via semantic elements and attributes • Form elements announce focus (sometimes) 24 http://www.w3.org/Consortium/Points/ “One of W3C's primary goals is to make these benefits available to all people, whatever their hardware, software, network infrastructure, native language, culture, geographical location, or physical or mental ability. “ 25 Accessibility on the Web (2) • So the picture isn’t fully bleak … but the depth of necessary information is missing: • Role, state, actions, caret, selection, children, relations, changes… – Input and output communication is missing too: • Keyboard, focus, blur, change, updates. • Clunky, see data table and speadsheets 26 So how can we move forward? 27 Characteristics of Techniques • Don’t make it worse • Provide alternatives • Learn from other technologies • Prepare for when a11y tech improves • Support improvement of a11y tech 28 Four Techniques – Use Them All 1. Standards-based development 2. Redundant interfaces 3. Faithful and Predictable Ports 4. WAI ARIA aka “Accessible DHTML” 29 Standards-Based Development Don’t miss the opportunity 30 Approach 1: Standards-Based Development • Overview and Definition • Create and stand upon a strong foundation • Subsequent layers enhance meaningful and structured markup • Progressive and unobtrusive enhancement • Don’t contaminate the neighborhood • Be generous – it’s your last chance! 31 Standards-Based Development Example: Y!News Tab Panel • Example: Tab-Panel box: complete 32 Standards-Based Development Example: Y!News Tab Panel • Example: Tab-Panel box: no CSS 33 Standards-Based Development Example: Y!News Tab Panel • Example: Tab-Panel box: no JavaScript 34 Standards-Based Development Example: Y!News Tab Panel • Notice: • Tab box is really anchored links and lists – well marked up content, available to all • Unobtrusive JavaScript doesn’t Hijax links when it shouldn’t • Stretching semantics to provide clues • Microformats enrich date, and provide predictable hooks for add-ons 35 Standards-Based Development Ex: Y!Photos Ratings & Tags http://nate.koechley.com/talks/2006/11/refresh06/RIA_Accessibility/photos-nocss.avi 36 Standards-Based Development Example: Y!Games http://nate.koechley.com/talks/2006/11/refresh06/RIA_Accessibility/games-nav.avi 37 Standards-Based Development Example: Y! Home Page http://nate.koechley.com/talks/2006/11/refresh06/RIA_Accessibility/da11y-fp-searchtabs.avi 38 Standards-Based Development Benefits • Should be doing this regardless • “With the grain” of web technologies • Truly available to all • The foundation of better things • A step toward a semantic web • Here to stay (10+ years) 39 Standards-Based Development Drawbacks • Doesn’t solve every problem • Perceived overhead • Unobtrusive JavaScript and Hijax are still less familiar techniques – Be careful not to step on event handlers – Only trap clicks when appropriate – Server must reply to both partial and complete requests from the client 40 Redundant Interfaces Offer flexible interactions 41 Approach 2: Redundant Interfaces • Overview and Definition • Multiple means of input • GUI input vs. char input • Direct movement of objects vs. configuration-based movement • Plain text vs. Auto Complete • Tab vs. Arrow Keys 42 Approach 2: Redundant Interfaces • Overview and Definition • Multiple means of manipulation • Keyboard vs. Mouse • Esc vs. Cancel • Drag-drop vs. form-based • Ajax vs. HTTP 43 Redundant Interfaces Example: 1D Slider http://developer.yahoo.com/yui/examples/slider/index.html • Simple support for vertical and horizontal sliders as a direct-manipulation alternative to input boxes • Enhances the basic input box, but need not replace it. http://nate.koechley.com/talks/2006/11/refresh06/RIA_Accessibility/Slider-basic.avi 44 Redundant Interfaces Example: 2D Slider http://developer.yahoo.com/yui/examples/slider/rgb2.html 45 Redundant Interfaces Example: Date Selector http://developer.yahoo.com/yui/examples/calendar/intl_japan/ 46 Redundant Interfaces Example: YUI Menu from Markup http://developer.yahoo.com/yui/examples/menu/leftnavfrommarkup.html 47 Redundant Interfaces Example: YUI Panel from Markup • Motion Protection – http://developer.yahoo.com/yui/examples/con tainer/panel-aqua.html • Technology Protection – http://yuiblog.com/blog/2006/09/22/yahoodevday-schedule/ 48 Redundant Interfaces Example: Yahoo! home page http://nate.koechley.com/talks/2006/11/refresh06/RIA_Accessibility/frontpage-nojs.avi 49 Redundant Interfaces Ex: Drag-n-Drop vs. Edit Flow http://nate.koechley.com/talks/2006/11/refresh06/RIA_Accessibility/my-change-layout.avi 50 Redundant Interfaces Benefits • Better for everybody – Keyboard is important for ALL users – Let users choose from multiple task flows • Transfer the complete set of expectations from the desktop to the browser • Works today 51 Redundant Interfaces Drawbacks • Insufficient communication with accessibility APIs on the desktop • Dual experiences/interfaces may pressure goals of parity • Requires development of two experiences • But not 2x effort! • Can actually benefit development process 52 Faithful and Predictable Preserve the illusion 53 Faithful and Predictable Ports: Faithful and Predictable Ports • Overview and Definition • We must capture this moment in time • Learnability • Discoverability • Completeness is critical 54 Faithful and Predictable Ports: Example: Full Selection Model http://photos.yahoo.com/ http://nate.koechley.com/talks/2006/11/refresh06/RIA_Accessibility/photos-selection.avi 55 Faithful and Predictable Ports: Ex: Full Keyboard Control 56 Faithful and Predictable Ports: Ex: Full Keyboard Control Example: Slider fortified with keyboard http://nate.koechley.com/talks/2006/11/refresh06/RIA_Accessibility/slider-keyboard.avi 57 Faithful and Predictable Ports: Ex: Full Keyboard Control 58 Faithful and Predictable Ports: Benefits • More options for everybody • Better discoverability • Better usability • Supports many working styles • Establish the new platform 59 Faithful and Predictable Ports: Drawbacks • Isn’t always easy • Seems heavier and/or more complex • Not always the path of least resistance 60 WAI ARIA “Accessible DHTML” 61 Rich Interfaces Require Sophisticated Definitions 62 “Assistive technologies … requires information about the semantics of specific portions of a document in order to present those portions in an accessible form. For example, to provide reliable access to a form element, a tool must also be able to recognize the state of that element (for example, whether it is checked, disabled, focused, collapsed, or hidden).” http://www.w3.org/2006/09/aria-pressrelease.html 63 Approach 4: “Accessible DHTML” • Overview and Definition – IBM technology, now in W3C and open • http://www.w3.org/TR/aria-roadmap/ • http://www.w3.org/WAI/PF/adaptable/HTML4/embedding20060318.html – Allows embedded role and state metadata in (X)HTML documents – Uses namespace extensions to XHTML 2, but • Techniques allow most functionality in HTML 4 documents, as of today – Communicate directly with the desktop API 64 The Virtual Buffer • Screen readers “scrape” a page into a Virtual Buffer. • Facilitates knowledge of the page – “20 links”, “list, 14 items”, “four headers” 65 The Virtual Buffer and Script • Handles basic script: – click, keypress, mouseover – For these, new content is exposed • Ajax content isn’t natively exposed in reaction to these events • For example, doesn’t know onreadystatechange 66 Content has changed! • focus on updated content – tabindex -1 • Omits from tab order • Not fully cross-browser • Works, but unsophisticated 67 Role Taxonomy for Accessible Adaptable Applications http://www.w3.org/WAI/PF/GUI/ 68 States and Adaptable Properties Module http://www.w3.org/WAI/PF/adaptable • • • • • • • • • • • • • • • checked iconed disabled readonly multiselectable domactive zoom expanded selected pressed important required haseffect valueNew valuemax • • • • • • • • • • • • • • • valuemin step invalid describedby labeledby hasparent haschild haspopup alternatestyle tabindex flowto flowfrom controls controlledby subpageof 69 “Accessible DHTML” Example: XHTML <html xmlns:wairole="/w3.org/2005/01/wairdf/GUIRoleTaxonomy#" xmlns:waistate=“/w3.org/2005/07/aaa"> <span id="slider" class="myslider" role="wairole:slider" waistate:valuemin="0" waistate:valuemax="50" waistate:valuenow="33"> </span> 70 “Accessible DHTML” Example: HTML 4 <script type="text/javascript" src="enable.js"></script> <span id="slider" class="myslider myselector2 slider valuemin-0 valuemax-50 valuenow-33" tabindex="0" > </span> 71 “Accessible DHTML” Benefits • Utilizes powerful and well-understood desktop API • Map controls, events, roles and states directly to powerful and well-understood desktop accessibility APIs • Standard and predictable enrichment of markup • Allows ARIA on top of RIA 72 “Accessible DHTML” Drawbacks • Requires recent-version of assistive technology software (e.g., screen reader) • Only works in Mozilla’s Firefox 1.5+ today – Not in Microsoft’s IE7 • XHTML required for full power – HTML does not allow multiple states, for example 73 Need Your Help • This is an important development – Thanks for IMB/Mozilla/W3C • Becky Gibson • Aaron Leventhal – We can thank them with adoption and a steady commitment – We can help these small companies. 74 Availability and Browser Support “Graded Browser Support” 75 The Dirty Truth • The Web is the most hostile software engineering environment imaginable. – Douglas Crockford 76 Binary Browser Support • Do I need to support ___ on this project? 77 Graded Browser Support: Two Key Ideas (1) 1) Support != Same Expecting two users using different browser software to have an identical experience fails to embrace or acknowledge the heterogeneous essence of the Web. 78 Graded Browser Support: Two Key Ideas (2) 2) Support must not be binary! Our primary goal is availability. – Don’t exclude anyone – Welcome all visitors 79 http://developer.yahoo.com/yui/articles/gbs/gbs.html 80 Graded Browser Support: General Best Practice Three Grades of Browser Support C-grade support (core support, 2%) A-grade support (advanced support, 96%) X-grade support (the X-Factor, 2%) 81 http://developer.yahoo.com/yui/articles/gbs/gbs_browser-chart.html 82 Final Thoughts • It’s possible to give the new richness to everybody, and morally correct. – More users + good PR = win win • There’s no excuse for not doing this, plus it’s not that hard. • Together we’ll get there faster. 83 Thanks! nate.koechley.com/talks/2006/11/refresh06/RIA_Accessibility/ • Nate Koechley: – [email protected] | [email protected] – http://nate.koechley.com/blog • Yahoo! Developer Network and Y! UI Blog: – – – – – http://developer.yahoo.com http://developer.yahoo.com/yui http://developer.yahoo.com/ypatterns http://www.yuiblog.com http://groups.yahoo.com/group/ydn-javascript • Creative Commons Photos from Flickr: – http://www.flickr.com/photos/tgray/48830193/ – http://www.flickr.com/photos/macwagen/90472902/ – http://www.flickr.com/photos/zen/157658496/ 84 We’re Hiring! Josie Aguada: [email protected] Usual suspects: JavaScript, PHP, CSS, HTML, ActionScript… 85