Accessibility

Accessibility is an area that both large scale and small scale software often fail in (including my own). This includes accessibility across languages, accessibility to different levels of sightedness, and accessibility for people of varying computer literacy.

Often times the proposed solution is other software, inbetweens, that can allow people who were not included in its design to use it. This can work in some cases, but a more systemic solution is to design systems that are built around reinterpretable data structures, rather than fixed user interfaces.

An example in practice is HTML, which was originally designed to describe a visual hypertext document, but with its semantic tags and plaintext format can be reinterpreted in a way accessible to blind people. Another example is actual plaintext, which, owing to the fact that it is just a sequence of characters, can be interpreted and modified by many kinds of software.

Karl Dahlke's article Command Line Programs for the Blind talks about this in more depth and is where the example of HTML is drawn from.