Introducing the Cloud4all/GPII Architecture
Colin Clark Lead Software Architect, Inclusive Design Research Centre
Antranig BasmanCore Framework Architect
Fluid Project
Monday, 9 July, 12
What is accessibility?
Monday, 9 July, 12
Rethinking Disability
Monday, 9 July, 12
Rethinking Disability
A mismatch between the
user
and the
user interface
Monday, 9 July, 12
Disability is contextualMonday, 9 July, 12
Designing for Context
Monday, 9 July, 12
Disability is environmental
Monday, 9 July, 12
Accessibility is...
the ability of the system
to accommodate the needs of the user
Monday, 9 July, 12
Make yourself at home...
Monday, 9 July, 12
Today’s Challenges
The Internet is no longer optional, but many can’t use it.
The assistive technology market is struggling.
We are in a new era of cross platform diversity.
Computers are everywhere, but accessibility isn’t.
Monday, 9 July, 12
Monday, 9 July, 12
User Experience
• User interfaces that can adapt to the needs, preferences, tastes of users—feel at home
• Content that can be delivered in a form that people can understand and use
... across all the platforms we use.
Monday, 9 July, 12
Technical Goals
• Lower the cost of building accessibly: Developers can draw from a diverse range of easy to find adaptive building blocks
• Build user personalization into the fabric of the web, mobile, and desktop
• Sustain an infrastructure for personalization and interoperability for the long run
Monday, 9 July, 12
Technical Challenges
• How do we support all these platforms?
• How do we respond to the increased hybridization across web and desktop?
• How do we scale it big?
• How do we make it extensible and able to grow sustainably over time?
Monday, 9 July, 12
Approach
1. Design an overall architecture
2. Build a viable, solid reference implementation
Monday, 9 July, 12
Big Project, Little Steps
• Focus on early, valuable use cases first:
• Do everything in the open
• Get it working and iterate, adding more features, more platforms, more use cases
Linux, Windows, and media on the web
Monday, 9 July, 12
Architectural Features
• Declarative
• Relocatable
• Ontology agnostic
• Extremely loosely coupled and extensible
Monday, 9 July, 12
Technologies
• Use the web!
• REST instead of platform-specific remoting APIs
• JSON payloads: simple, ubiquitous data interchange
• HTML, CSS, JavaScript for user interfaces
• Idiomatic platform integration
Monday, 9 July, 12
Reference Implementation
• Node.js for cross-platform development
• Core code written in JavaScript
• Native bindings to platform in C and libffi
• CouchDB document-oriented database
• Highly scalable cloud deployment model
Monday, 9 July, 12
Visualizing The Architecture
Monday, 9 July, 12
Monday, 9 July, 12
GPII Architecture
Monday, 9 July, 12
GPII Architecture
Monday, 9 July, 12
GPII Architecture
Monday, 9 July, 12
GPII Architecture
Monday, 9 July, 12
GPII Architecture
Monday, 9 July, 12
GPII Architecture
Monday, 9 July, 12
GPII Architecture
Monday, 9 July, 12
GPII Architecture
Monday, 9 July, 12
GPII Architecture
Monday, 9 July, 12
GPII Architecture
Monday, 9 July, 12
Preferences and Preferences Server
• Preferences editor interface
• Web-based preferences server
• Other GPII components (Flow Manager)
Accessible via:
a framework for preferences editing
Monday, 9 July, 12
Preferences Framework
PreferencesFramework
Preferences Wizard Game Preferences Editor Immediate, inline Editor
Resusable Preferences Objects
Persistence
Presentation
Action
Preferences AppCon!guration
Preferences AppCon!guration
Preferences AppCon!guration
Monday, 9 July, 12
Preferences Server
• RESTful API
• JSON-based payloads
• OAuth for delegating access
Easy for developers to use
Scalable and forward-looking
• Document-based persistence
• High-concurrency server
Monday, 9 July, 12
Source Code
Example code and configuration:
• Preferences statement: http://bit.ly/LN4iEB
• Settings Handler: http://bit.ly/M6mDfD
• Solutions Registry: http://bit.ly/KrLo6Z
Github Project https://github.com/GPII/
Issue Tracker http://issues.gpii.net
Monday, 9 July, 12
How you can get involved
1. Feedback, ideas suggestions: tell us what works and what doesn’t
2. Testing and bug fixing
3. Code with us: an open meritocracy
4. User experience design
Monday, 9 July, 12
Questions?Colin Clarke: [email protected]: @colinbdclark
fluidproject.orggpii.net
Antranig Basmane: [email protected]
Monday, 9 July, 12