Accessibility

Starting off &quot;Accessibility for laconica&quot; with a few general thoughts about accessibility, and why it is important.

Why accessibility?
Accessibility (on the web) ensures a web site or web can be used by anyone regardless of technology used to access it and regardless of impairments the user may have. Accessibility is a process, not an absolute state. Accessibility ensures equivalent access to the largest extent possible, without needlessly excluding users.

Accessibility for whom?
Everyone (to the extent possible). Everyone using a small device to access the web. Everyone who has some impairment, whether from birth or acquired later, whether permanent or only temporary. (If you break your wrist tomorrow, you may have problems to use a mouse. Older eyes can see less contrast than young eyes. etc.)

The web was enabling for many people with impairments that prevented them from simply going out to the supermarket to shop, or to read a newspaper, until the graphical web made it hard again in many cases. Yet that is not needed, and an accessible web site doesn't need to be ugly - sites can be designed with accessibility in mind, and still be just as engaging or stunning as non-accessible sites.

Accessibility for microblogging
Microblogging is maybe unique in the way it enables informal communication between all sorts of people that without this &quot;medium&quot; might never have met. It has the potential to allow people to communicate with little effort, regardless of technology they use or impairments they may have - provided the application used is accessible to them.

As with any application, accessibility is easiest and cheapest to ensure when it is designed with accessibility in mind right from the start. Currently, the laconica software is moving forward so fast, partly thanks to its being OSS and several contributors supplying fixes and new functionality, that clear sight of accessibility - and how to achieve that - is in danger of getting lost in the stampede. This page is an attempt to get everyone on the same page and provide some insights and guidelines for making and keeping laconica accessible.

Things to consider
When designing for accessibility, there are many things to consider when generating HTML code, when styling the result with CSS, and when adding behavior with JavaScript. What follows is not an exhaustive list, just a few things to keep in mind at all times.

This is still a stub, to be expanded.

The browser
An important principle for web development with accessibility in mind is &quot;Progressive Enhancement&quot;. In short, it means you build a site in three, cleanly separated layers: HTML for structure and semantics, then CSS as a presentation layer, and finally JavaScript for behavior. And - globally - in that order, so that you make a working site in pure, non-presentational HTML first, then add styling, etc.

HTML only
The first, and most important, layer in Progressive Enhancement, HTML provides the basic level of functionality with the benefit that the content will most likely be delivered. When viewed with a graphical browser, HTML does not seem to have the resources to make a good interface; but consider that many people are using a textbrowser like lynx (sometimes in combination with a screenreader). For people using these tools, the site should at least be usable, and essential functionality should not depend on CSS and/or JavaScript.

-&amp;gt;Some things that can make a site more accessible in the HTML layer:
 * 1) Structure your text with headings and paragraphs: they make text not only more &quot;consumable&quot; but can also enable heading and parapgraph navigation
 * 2) Make sure your link texts make sense out of context, to enable link navigation (avoid &quot;more...&quot; links and similar)
 * 3) If the page starts with a lot of navigation links, provide a &quot;skip to content&quot; link as the first thing in the text stream: that way a user can avoid a lot of TABbing through links before reaching the actual content
 * 4) Make use of &amp;lt;link&amp;gt; tags for site navigation (lynx is especially good at exposing this often-forgotten feature)
 * 5) Provide appropriate alt text for all images: an empty string for purely decorative images, a functional equivalent (not a description) for images that are actual content or links

HTML and CSS only
CSS allows for a greater flexibility in interface design, but has issues with display across different graphical browsers (note that text browsers usually don't support CSS at all). While CSS can make a site much more usable (and accessible!) for users of graphical browsers, it also has the capability to make a site inaccessible to many users.

-&amp;gt;Some things that can make a site more accessible in the CSS layer:

JavaScript
JavaScript allows for some powerful transformations, allowing the information to be presented in the best method available dynamically. While powerful, JavaScript is not guarantied to be available, and may add unneeded complexity; as with CSS there are also browser incompatibilities to take into account.

Custom Client
Sometimes, even the best use of existing technology does not meet the needs of the users. In cases like these, a custom client built to use API calls might be called for. However, this is often too expensive in time and resources compared to the previous options.

The user
Here the problems to take in consideration:
 * Keyboard accessibility
 * Motor impairments
 * Old eyes
 * Color blindness
 * Low vision
 * Blindness
 * Dyslexia