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. While this is of course useful, and works in some cases, it is even better to have user interfaces that are usable by everyone to begin with, and one way to do that is to build around reinterpretable data structures, rather than single 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 essentially any audience. Another example is plain text, which, owing to the fact that it is just a sequence of characters, can be interpreted and modified by many kinds of software (any text editor can edit any text file, can be printed on paper, displayed in braile, etc.).
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.
Another useful thing to keep in mind when designing accessability into things is the curb-cut effect. Curb-cuts, where the curb of a road is cut to create a ramp from road to pavement, were first designed to allow people using wheelchairs to get onto the pavement from the road, but are also useful to people with suitcases, baby prams/strollers, and heavy trolleys.
All this to say that designing for accessibility is designing for everyone, and that things that make it easier for some people to access, also make it easier for us all. Not that that should be the only reason for making accessable systems.
I'm unsure of a definitive essay for the curb-cut effect, I think I first read about it in a book, so I'll just link the the wikipedia page on the curb-cut effect.