Giter Site home page Giter Site logo

universalaccessibilityprotocol's Introduction

Universal Accessibility Protocol

The purpose of the Universal Accessibility Protocol (UAP) is to make every day devices, especially those in public spaces, accessible to anyone with a physical disability. The UAP aims to achieve this by defining a standard protocol for devices to wirelessly broadcast actions that nearby users can call.

Example

Imagine a lift, to operate it, an able bodied person would:

  1. Press the up or down button outside the lift
  2. Enter the lift and select their floor
  3. Optionally hold the door open for someone

However for a person with limited upper mobility many of these steps might be hard, if not impossible. Plus designing physical interfaces for a wide range of access scenarios is difficult - hand rails for one person might prevent someone in a wheelchair getting close enough to reach the buttons. What would be ideal, is if the interface was customised to the access requirements of each person. This is what the UAP enables.

For a person with limited mobility accessing the same lift: (Via smartphone app in this example)

  1. Approach lift and open app
  2. App receives call actions: ['Up', 'Down']
  3. User makes selection and the lift is called
  4. Enter lift and app receives list of available floors: ['B', 'G', '1', '2', '3', '4'],
  5. User makes selection and the lift travels to the selected floor

Additionally, it could broadcast miscellaneous actions: ['Doors Open', 'Emergency Stop', 'Emergency Telephone']

These same steps could be carried out by any client device implementing the UAP. It might not necessarily be a smartphone, it could be any custom made device implementing client-side UAP.

Advantages

Interface Polymorphism

A device broadcasting UAP actions can have these actions displayed in any type of interface, including non-visual ones, voice controlled, spoken, tactile, etc. Any interface capable of stepping up or down a decision tree and selecting elements can call actions of a UAP broadcast device. So in short, even a device that loops through options and only requires a user to make a single selection should be able to call actions for a UAP broadcaster.

Localisation

Available actions for a broadcast device should be pieced together from pre-defined actions in the UAP specification. This means that a broadcast device will always have its actions displayed in the user's preferred language. This limitation to predefined actions is what also enables interface polymorphism.

Locality

Using short range technologies should limit access to devices to people within the physical area of the broadcast device. This is NOT an IoT application and internet connectivity should never be a requirement.

Action Parity

Any device broadcasting UAP should make the available actions identical to those physically available. The device itself should not need to know if someone pressed a physical button or used UAP.

Requirements

Broadcast devices should not create unnecessary steps prior to calling an action. This means no need to log in, no need to connect to a network, nor accept terms of use. Broadcast devices should also not be accessible over the internet. This makes Bluetooth a better candidate than Wifi.

Broadcast devices also need to be able to communicate a decision tree of actions, some of which may be named and some of which may be an ordered list of actions. This means we need dictionaries and arrays. Well we get these things for with JSON, plus a more human readable form with YAML, and nearly every language has tools to parse, transform, and serialize JSON.

Glossary

Broadcast Device

A device which is making its physical features accessible via the UAP. For example, a lift.

Client Device

A device used by someone with a disability to access and command broadcast devices. For example, a smartphone app.

Action

Actions that can be performed on or by objects in the world. For example, "Open doors".

Actionable Nouns

Names of common things that will be used as an action in broadcast devices. A clear example of this is a lift with the destination Basement.

Further reading

Contributing

UAP requires a well defined set of actions and well defined use cases for its 1.0 spec. It also needs a hardware proof of concept, its own "Hello world!" if you will.

If you feel capable of contributing either of these things then make sure to get involved! Submit an issue, pull request, or suggestion.

universalaccessibilityprotocol's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

silky

universalaccessibilityprotocol's Issues

Should actions be objects?

Currently, actions are implemented as either a plain english string or an integer. This has the advantage of meaning that all leaf elements must be an action.

However, an action could be an object specifying type, interaction mode, action code, and descriptions. For example:

{
  "name": "Doors Open",
  "code": "#000003",
  "interaction_mode": "Press and hold",
  "description": "Prevent doors from automatically closing."
}

Action objects could provide the following benefits:

  1. Actions with similar names but different contexts can be uniquely identified by their code.
  2. Interface devices can handle and/or display different interaction modes pre-emptively. This could allow users to make all Press and Hold actions to become toggle if it is better suited to their access needs.
  3. Devices could provide unique descriptions. However these would break localisation.

Action objects could have the following disadvantages:

  1. Less clear where leaf nodes are in the schema.
  2. More to write in a specification.

If actions do become objects, then the following needs to be considered:

  1. While name and code must be coupled, should interaction_mode also be coupled to code?

Add more actions

The list of possible actions is exceedingly short.

These are clear actions that can be performed on or by objects in the world.

Libraries needed for client devices

UAP needs implementations for client side devices. Since this could be used in everything from smartphones to custom devices, we should have the following implementations:

  • Swift
  • Kotlin
  • C
  • Go
  • Node
  • Python
  • Rust
  • An implementation for Arduino?

Should the UAP be extended to include EFTPOS devices?

The general criteria for UAP devices is that they be public facing, (i.e. not an air conditioner as that is a private device that needs to be protected from public access and is accessible via smart home systems).

However a very commonly used device in public is the EFTPOS machine. Could UAP make this device accessible to more people? Can it be done securely? What potential exploits might exist, how do we protect client device user's payment details?

Add more actionable nouns

The current list of actionable nouns is exceedingly short.

Actionable nouns are names of common things that will be used as an action in broadcast devices. A clear example of this is a lift with the destination Basement.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.