{"id":5121,"date":"2020-05-13T18:08:27","date_gmt":"2020-05-13T18:08:27","guid":{"rendered":"https:\/\/owncloud.com\/?p=5121"},"modified":"2020-07-07T18:09:31","modified_gmt":"2020-07-07T18:09:31","slug":"laying-accessibility-groundwork-in-ownclouds-new-web-interface","status":"publish","type":"post","link":"https:\/\/owncloud.com\/de\/blogs\/laying-accessibility-groundwork-in-ownclouds-new-web-interface\/","title":{"rendered":"Laying accessibility groundwork in ownCloud\u2019s new web interface"},"content":{"rendered":"<p>At the start of 2019, ownCloud team lead Michael Stingl approached me and asked whether I could support the accessibility aspect of ownClouds Project Phoenix. I was very pleased to say yes, especially once I learned that Phoenix was a) a web-app and b) written in Vue.js. The intersection of web accessibility and modern, framework-driven JavaScript is a fascinating topic for me, and additionally, Vue.js is my favourite framework.<\/p>\n<p>Michael then went into more detail: It would be perfect if I could help with improving the already existing\u00a0<a href=\"https:\/\/owncloud.github.io\/owncloud-design-system\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>ownCloud Design System (ODS)<\/em>\u00a0pattern library<\/a>\u00a0in multiple ways:<\/p>\n<ol>\n<li>Help building accessible components\u00a0that can be used throughout the new interface, using the strength of a design system: Authors and developers would need to build and test an inclusive interface pattern once, and it could then be used all across the interface. In the bird\u2019s eye view, an application consisting of well-built single parts is on a good path to become a truly inclusive one.<\/li>\n<li>Help with documentation: When certain components or controls a built in a certain way \u2013 what is the reasoning behind it? What user groups and which assistive technologies are affected? What circumstances and strategies could people have when they approach the interface? In the end, the documentation is intended to have two audiences: The core team members and associated freelancers, but also anyone else building extensions for the new front-end. For both groups, the design system should serve as a knowledge center: about the available components, for sure, but also about the design and markup decisions that went into them. Project Phoenix is being heavily worked on and will, especially when it comes to user experience and screen designs, go through further iterations. But the sometimes abstract, sometimes concrete documentation bits in ODS are meant to stand the test of time and to be educational resources for everyone working in the proximity of ownCloud\u2019s new interface.<\/li>\n<li>Lastly to conduct occasional\u00a0video calls\u00a0or physical meetings where I can show to the team some strategies people with disabilities employ to use websites, and the tools developers have at their disposal to help them succeed. Over the last months, these occasional \u201caccessibility session\u201d also dealt with what needs to be done in the future, and I tried to make it clear,\u00a0<em>why<\/em>\u00a0something needs to be done in accessibility terms.<\/li>\n<\/ol>\n<p>In October and November of 2019, I also had the opportunity to work in the \u2018machine room\u2019 of both Project Phoenix and the ownCloud Design System. While doing so, I tried to emphasize accessibility basics but also the special idiosyncrasies that exist in JavaScript-based web apps. In these weeks, I approached the following topics:<\/p>\n<ul>\n<li>Semantics of controls, and buttons vs. links<\/li>\n<li>The importance of accessible names and labels<\/li>\n<li>Communicating interstitial states in web apps, like a condition where a progress (e.g. upload) is running for a certain time (<a href=\"https:\/\/github.com\/owncloud\/phoenix\/pull\/2542\" target=\"_blank\" rel=\"noreferrer noopener\">example<\/a>)<\/li>\n<li>How an application or document can be structured non-visually with headline and\/or ARIA landmark regions, and how skip links will help people who are not using a pointer device (such as mouse, or a touch surface)<\/li>\n<li>The virtue of hiding things accessibly, either from visual users, or from screen reader users without alienating the other group<\/li>\n<li>The concept of an accessible disclosure widget and where it could and should be used in an interface (<a href=\"https:\/\/github.com\/owncloud\/owncloud-design-system\/pull\/522\" target=\"_blank\" rel=\"noreferrer noopener\">example<\/a>)<\/li>\n<li>The Basics of WAI-ARIA (<a href=\"https:\/\/github.com\/owncloud\/owncloud-design-system\/pull\/542\/files#diff-81ab8b8a650cd5cb49ba176b307b93ecR1\" target=\"_blank\" rel=\"noreferrer noopener\">example<\/a>)<\/li>\n<li>That keyboard navigation is a cornerstone of accessibility, and that good usability in that regard oftentimes is passed on to assistive technology<\/li>\n<li>The concept of an \u201caction menu\u201d (a widget that emulates native application menus on the desktop, and triggers screen readers to go into a special mode) (<a href=\"https:\/\/github.com\/owncloud\/owncloud-design-system\/pull\/522\" target=\"_blank\" rel=\"noreferrer noopener\">example<\/a>)<\/li>\n<li>How to build a tab module accessibly (<a href=\"https:\/\/github.com\/owncloud\/owncloud-design-system\/pull\/539\" target=\"_blank\" rel=\"noreferrer noopener\">example<\/a>)<\/li>\n<li>The best way of implementing an accessible date picker (<a href=\"https:\/\/github.com\/owncloud\/phoenix\/issues\/2258#issuecomment-543593897\" target=\"_blank\" rel=\"noreferrer noopener\">example<\/a>)<\/li>\n<li>The central importance that all of the above should be tested with real users, and that building inclusive interfaces is not checking of a list, and real feedback from real people wins over dogmatism<\/li>\n<\/ul>\n<p>All in all, especially the weeks in the fall were exciting times. In my project\u00a0<a href=\"http:\/\/accessible-app.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">accessible-app.com<\/a>\u00a0I built a small dummy application to show some concepts, components and patterns. But of course a living, breathing and growing project like Phoenix was something else, and I really enjoyed it to work so<em>\u00a0close to the metal<\/em>.<\/p>\n<p>Still, in such a relatively short amount of time and in a growing and complex application like Phoenix it is impossible to boost the accessibility up to eleven. Nevertheless, I really hope to have helped facilitate laying the groundwork for accessibility knowledge, and that everyone will reap the rewards of this work in the near future. In the meantime, you can check out Phoenix\u2019s progress at\u00a0<a href=\"https:\/\/github.com\/owncloud\/phoenix\/releases\" target=\"_blank\" rel=\"noreferrer noopener\">github.com\/owncloud\/phoenix\/<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Web accessibility is a complex topic, especially in the context of JavaScript-based web applications. With its new web interface, ownCloud starts to tackle this topic to create a front-end usable for and accessible to everyone, regardless of their circumstances, abilities or technologies used.<\/p>\n","protected":false},"author":7,"featured_media":5116,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[43],"tags":[],"class_list":["post-5121","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/5121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/comments?post=5121"}],"version-history":[{"count":0,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/posts\/5121\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/media\/5116"}],"wp:attachment":[{"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/media?parent=5121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/categories?post=5121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/owncloud.com\/de\/wp-json\/wp\/v2\/tags?post=5121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}