Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

This report was prepared by the Preferences for Global Access team as part of the project "Cloud-Based Accessibility For Individuals with Disability; Tools for Creating Specifications of User Needs and Preferences for Online Interactions in Several Different Application Settings". This report was submitted as "Deliverable Task 2.2 Architecture Report".

Table of Contents

Table of Contents
stylenone

1. Introduction

This document describes the architecture of the Preferences for Global Access (PGA) First Discovery Tool. The PGA project was funded by the National Institute on Disability and Rehabilitation Research (NIDRR), a component of the U.S. Department of Education's Office of Special Education and Rehabilitative Service, under Task Order 0002 of ED-OSE-12-D-0013 - Tools for Creating Specifications of User Needs and Preferences for Online Interactions in Several Different Application Settings. The purpose of Task Order 0002 was to develop and evaluate example First Discovery Tools that address the creation of user needs and preferences specifications for users in the following four application settings: accessible voting, online educational assessment, community-based technology support for older citizens, and open educational resources. The purpose of examining the four application settings was both to inform the design of the prototype tool, and to identify how the tool would be modified and integrated into different settings – including who would be doing the modifying.

The First Discovery Tool is an open-source, freely available JavaScript application. A live prototype of the tool is publicly available, and the source code can be found in the project’s Github repository.

Section 2 of this document describes the GPII Preferences Framework, upon which the First Discovery Tool is built. Section 3 explains how the First Discovery Tool  is constructed using the Preferences Framework. Section 4 describes how the Tool can be integrated into different contexts, and Section 5 provides an overview of our plans for future development of the First Discovery Tool.

...

The First Discovery Tool uses the GPII Preferences Framework, a reusable set of schemas, APIs, and user interface building blocks that is employed in the development of each of the preference tools in the Global Public Inclusive Infrastructure (GPII). The Preferences Framework was a key development of Task Order 0001 of the Preferences for Global Access project (Petrides et al., 2013b).

...

The Preferences Framework and the First Discovery Tool architecture follow Fluid Infusion‘s declarative Inversion of Control (IoC) philosophy: With Infusion IoC, instead of writing code with tightly-coupled dependencies, developers express their application structure as a declarative “component tree” that is instantiated and managed by a context-aware framework (Basman et al., 2011). This makes it easier for third-party developers and designers to refine and extend a preference editor over time, and to contextualize and integrate it into any environment (see the Integration and Contextualisation section below for information about how the First Discovery Tool can be customized).

...

Figure 2: Preferences Framework Builder workflow

 

Schemas

Primary

The Primary Schema is a JSON document that contains the information necessary to define a preferences editor’s preferences using the format specified by the JSON Schema specification. The schema defines such things as the type of the preference, its default value, the limits of its range (if appropriate), an enumeration of possible values (if appropriate), etc.

The following example  from the First Discovery Tool illustrates the structure of the schema (the full Primary Schema for the First Discovery Tool can be found in the source code for the project. ):

 

fluid.defaults("gpii.firstDiscovery.schemas.language", {
    gradeNames: ["autoInit", "fluid.prefs.schemas"],
    schema: {
        "gpii.firstDiscovery.language": {
            "type": "string",
            "default": "en-US",
            "enum": ["en-US", "fr-FR", "es-MX",
                     "de-DE", "nl-NL", "sv-SE"]
        }
    }
});
fluid.defaults("gpii.firstDiscovery.schemas.speak", {
    gradeNames: ["autoInit", "fluid.prefs.schemas"],
    schema: {
        "gpii.firstDiscovery.speak": {
            "type": "boolean",
            "default": true
        }
    }
});
fluid.defaults("gpii.firstDiscovery.schemas.textSize", {
    gradeNames: ["autoInit", "fluid.prefs.schemas"],
    schema: {
        "fluid.prefs.textSize": {
            "type": "number",
            "default": 1,
            "minimum": 0.2,
            "maximum": 1.2,
            "divisibleBy": 0.1
        }
    }
});

 

Auxiliary

The Auxiliary Schema is a JSON document that defines the information needed to build a preference editor’s interface, including

...

The following example (taken from the First Discovery Tool) illustrates the structure of the schema (the full Auxiliary Schema for the First Discovery Tool can be found in the source code for the project):

 

 

{
    "loaderGrades": ["gpii.firstDiscovery.firstDiscoveryEditor"],
    "namespace": "gpii.firstDiscovery",
    "templatePrefix": "../src/html/",
    "template": "../src/html/firstDiscovery.html",
    "messagePrefix": "../src/messages/",
    "message": "%prefix/firstDiscovery.json",
    "textSize": {
        "type": "fluid.prefs.textSize",
        "enactor": {
            "type": "fluid.prefs.enactor.textSize"
        },
        "panel": {
            "type": "gpii.firstDiscovery.panel.textSize",
            "container": ".gpiic-fd-prefsEditor-panel-size",
            "template": "%prefix/rangeTemplate.html",
            "message": "%prefix/textSize.json"
        }
    }
}

 

Preferences Editor Loader definition

The Preferences Framework’s Preferences Editor Loader component coordinates the collaboration between the preferences editor, the template loading functionality and the  message loading functionality (described below). The Loader also configures other functionality of the preferences editor, such as navigation and self-voicing in the case of the First Discovery Tool. This functionality is described in Section 3.

Localization

The Preference Framework supports localization through the use of message bundles: JSON files containing the strings to be used in the interface. Message bundles are JSON files containing key/value pairs representing the message key and the localized text associated with it. Each set of localized text is contained in its own message bundle. The Preference Editor loads the appropriate message bundles based on the requested language and makes the bundles available to the panels for rendering.

...

information that configures the destination

 

Persistence

The First Discovery Tool uses a component called a Settings Store (offered by the Infusion Preferences Framework) to manage the persistence of the user’s preferences. Currently, the First Discovery Tool is configured to use the Cookie Settings Store, which saves the preference values in a browser cookie. This is a temporary measure. In the future, the GPII toolset will provide a Settings Store that will communicate directly with the GPII preferences server to record the user’s preferences, ensuring privacy and security.

Template Management

Individual portions of the First Discovery Tool interface have their own HTML templates. The Preferences Framework coordinates the loading of the template files and their use by the relevant Infusion component.

Message Loading

All of the text in the First Discovery Tool interface is stored in JSON files called “message bundles.” A sample message bundle is shown below:

...

Message loading functionality in the Infusion Framework is used to load the relevant strings into the interface. Internationalization is accomplished by providing alternate JSON files containing translated strings and directing the message loader to load the correct files.

Navigation

The First Discovery Tool presents preferences to the user one at a time. The user navigates from one preference panel to the next linearly, using ‘next’ and ‘back’ buttons. The component that manages the navigational buttons responds to activation of the buttons by updating the tool’s internal model of the “current” panel. The preference editor component responds to the change in model by presenting the appropriate panel.

Self Voicing

The First Discovery Tool uses the browser-based Web Speech API to speak the interface aloud. While the implementation is not as thorough as that offered by a screen reader, it avoids any dependence on third-party applications, and does not require any understanding of how to interact with screen readers, which often require particular key sequences and other interactions that take time to learn. Providing text-to-speech as part of the First Discovery Tool ensures that users who would benefit from the functionality will be able to participate in the First Discovery process.

UI Enhancement

Several of the First Discovery Tool preferences have an immediate effect on the interface of the tool itself. A UI Enhancer component adds enactors to the tool to carry out these changes. This implements users’ preferences immediately, supporting the user in aligning the First Discovery Tool with their preferences as they use the tool. The enactors that will respond to the preferences outside of the First Discovery Tool context may be slightly different, but the First Discovery Tool provides the user with an idea of how the preference will affect their experience with other programs and devices.

...

This section describes the technical requirements for modifying the First Discovery Tool, a task that might be performed by a staffer of an organization that has adopted GPII, such as a school district technology coordinator or an election office system administrator. There is currently no user interface (see Administrative Interface in the following section) for this process, but these customizations typically require only basic web skill such as HTML, CSS, and JSON. This section describes the underlying modifications required for these contextualizations. This section focuses on contextualizations that are currently possible with the code.

...

The Preferences for Global Access architecture is, as described above, closely aligned with the overall Global Public Inclusive Infrastructure. As part of this alignment, a robust and comprehensive architecture has been designed to support the personalization of desktop, mobile, and web applications (Clark et al., 2104). In future versions of the First Discovery Tool, users will be able to explore and discover preferences and adaptations not only for web-based content but also native platform tools such as assistive technologies like screen readers, screen magnifiers, and operating-system-level keyboard accessibility settings. Further information about the GPII's architecture for web, desktop, and mobile personalization, including the configuration of assistive technologies, is available in the GPII wiki.

Administrative Interface

...

In this diagram, each box represents an Infusion Framework component

 

 

Component

Responsibility

firstDiscovery

the Builder-assembled component for the entire tool

store

persistence of preference values

settingsStore

specific interface for persisting preferences in a browser cookie

enhancer

page-level component scopes adjustments to the entire page

uiEnhancer

coordinating enactors

[enactors]

applying a preference to the current page

prefsEditorLoader

coordinates all the parts of the tool interface

templateLoader

loads HTML templates

messageLoader

loads string bundles

selfVoicing

text-to-speech; respond to mute button activation

helpButton

a placeholder component to render the text, and will eventually launch the tools help system

prefsEditor

coordinate panels

[panels]

render adjusters for preference values and respond to input by updating the model value for that preference

nav

container for navigational components

navButtons

render the next/back buttons and respond to activation by updating the model’s currentPanel value

navIcons

indicating status: current page and completed pages

stepCount

render the message “step X of Y” at the bottom of the tool

 

...