a implementer's story - integrating maavis with the gpii

17
At the 16 th International Conference on Human-Computer Interaction 2014 Crete, Greece Implementers’ hackathon A Implementer's Story Steve Lee OpenDirective Ltd.

Upload: dissemination-cloud4all

Post on 12-Jun-2015

263 views

Category:

Technology


2 download

DESCRIPTION

Steve Lee, from Open Directive, tells his experience on integrating Maavis with the GPII architecture.

TRANSCRIPT

Page 1: A Implementer's Story - Integrating Maavis with the GPII

At the 16th International Conference on Human-Computer Interaction

2014 Crete, Greece

Implementers’ hackathon

A Implementer's Story

Steve LeeOpenDirective Ltd.

Page 2: A Implementer's Story - Integrating Maavis with the GPII

2

Maavis

• Simple access to media and communications• Research tech for people living with dementia• People with cognitive disabilities• People with low digital literacy

Page 3: A Implementer's Story - Integrating Maavis with the GPII

3

Demo

• Standalone• With GPII

Page 4: A Implementer's Story - Integrating Maavis with the GPII

4

What we did

• Understand architecture• Figure how to integrate• Install and test GPII• Create a few declarative docs• Create a new settings handler

Page 5: A Implementer's Story - Integrating Maavis with the GPII

Effort

Page 6: A Implementer's Story - Integrating Maavis with the GPII

A User Profile{ "display": { "screenEnhancement": { "applications": { "net.opendirective.maavis": { "name": "maavis", "priority": 100, "parameters": { "theme": "bw" } } } } }}

Page 7: A Implementer's Story - Integrating Maavis with the GPII

Solution life cycle (dev version)

• User Logs in (simulates listener)• Retrieve user settings– Set Maavis settings– Launch Maavis

• User logs out (simulates listener)– Restore Maavis settings– Exit Maavis

Page 8: A Implementer's Story - Integrating Maavis with the GPII

Solution{ "name": "maavis", "id": "net.opendirective.maavis", "contexts": { "OS": [ { "id": "win32", "version": ">=5.0" } ] }, "settingsHandlers": [ { "type": "gpii.settingsHandlers.noSettings", "capabilities": [ "display.screenEnhancement.applications.net\\.opendirective\\.maavis.name" ] } ] }}

+ Common Terms

Page 9: A Implementer's Story - Integrating Maavis with the GPII

10

Maavis Settings

{"userType":"touch","theme":“colour","speakTitles":"yes","speakLabels":"no","showLabels":"yes","showImages":"yes","useSkype":"no","scanMode":"AUTO1SWITCHAUTOSTART","scanRate":"2500","selectionsSetSize":"2x3","language": "en"}

Page 10: A Implementer's Story - Integrating Maavis with the GPII

Settings Handler gpii.settingsHandlers.JSONSettingsHandler.set = function(profile) {

var app = fluid.copy(profile); for (var appId in app) { for (var j = 0; j < app[appId].length; j++) {

// load the default settings used by MAAVIS var path = app[appId][j].options.path;

var defaultSettings = require(path);

// record differences between required and default settings// so that they default settings can be restoredvar requiredSettings = app[appId][j].settings;var changedSettings = fluid.copy(requiredSettings);for (var settingKey in requiredSettings) { var oldValue = defaultSettings[settingKey]; var newValue = requiredSettings[settingKey]; changedSettings[settingKey] = {

"oldValue": oldValue,"newValue": newValue

};}app[appId][j].settings = changedSettings;

// merge the required settings and default settings// this means required settings overwrite default settingsfluid.merge(null, defaultSettings, requiredSettings);

// Write the new settings to a file for MAAVIS to readfs.writeFileSync(path, JSON.stringify(defaultSettings));

} }

Page 11: A Implementer's Story - Integrating Maavis with the GPII

Lifecycle manager"lifecycleManager": { "start": [ "setSettings", { "type": "gpii.launch.exec", "command": "${{environment}.ComSpec} /c \"cd ${{environment}.MAAVIS_HOME} && MaavisPortable.cmd\"" } ], "stop": [ { "type": "gpii.launch.exec", "command": "${{environment}.SystemRoot}\\System32\\taskkill.exe /f /im firefox.exe" }, "restoreSettings" ]}

Page 12: A Implementer's Story - Integrating Maavis with the GPII

13

Common Terms mapping

In solution registry entry

• HighContrast -> "theme"• Speech -> "speakTitles“ + "speakLabels"

Page 13: A Implementer's Story - Integrating Maavis with the GPII

In summary

Easily done and low impact

• Modified Maavis installer so GPII can find it• Entry in the Solution Registry• New JSON Settings handler• Configure Lifecycle Manager• Test Profiles

Page 14: A Implementer's Story - Integrating Maavis with the GPII

15

Challenges

• Early adopter – high churn– A: Engage with the architecture team!

• Lack of documentation– A: Get architecture team to do the work for you!

Page 15: A Implementer's Story - Integrating Maavis with the GPII

16

Contribution

• Reduce your maintenance costs• Best way to learn• Open Source skills• Fun

Page 16: A Implementer's Story - Integrating Maavis with the GPII

Further Developments

• Dynamic reading of settings– eg for context awareness

• Prosperity4All + low digital literacy– Framework and Components

• Porting to HTML components– Move to browser context

Page 17: A Implementer's Story - Integrating Maavis with the GPII

18

Thank You

This research was funded by the European Union's Seventh Framework Programme (FP7/2007-2013) grant agreement 289016 (Cloud4all)