Challenge Overview
This is a proof of concept for next generation complex data interaction interface for in browser use. A success is running code, prototypes of some the navigation contols, some analysis on a "good enough" software architecture, technology choices that are likely to make sense or be similar to winners in the next few years, and one eye-poping end-to-end demo.
The overall goal is to have a graphic interface which allows a human to have some sense of meaningful orientation (and re-orientataion) while interacting with extremely large, complex, and dynamic data.
Some basic use-case requirements are:
- Browsing and interacting with multi-scale and multi-dimensional data which is being gathered in near real-time from a complex, dyanmic system (e.g. a swarm of robots, a very complex computer network, or constantly changing n-dimensional maze)
- Visualization controls which:
- zoom in and out: like Google Maps
- browse "into" components: imagine Google Map zooming "into" your house
- handle dynamic updates of data: imagine Google Maps tracking your car
- handle abstract relationships between data: like a social graph
- handle searching of tagged data: like searching a social graph
- allow for multiple users to collaboratively interact with the data
- provide a "library" of innovative graphic "clues" to differentiate data and aid in user orientation: color, texture, motion, font, etc
- appropriate mechanism to filter data on demand delivered to the user's eyes (and ears) to aide in meaningful interaction
- The data is not known to the client before starting the visualization engine but can be assumed to be delivered in well known format like XML with a global graph structure: like Facebook data
- The data is large enough that it can never fit into the memory of the client (viewer) system
- The data is constantly changing on the backend
- Elegant integration with standard data viewing metaphors, like tables, for human consumable fragments of data (e.g. a list of properties)
Some other requirements/assumptions are:
- Must run in Google Chrome
- Very fast client machine can be assumed (e.g. MacBook Pro Retina Display fully loaded)
- Should be built on standard, available, preferrably free Javascript plugins
- 3D capabilities are assumed but not required
- The back end which serves the data is assumed to be a very large cloud infrastructure able to deliver limitless data to the client
- A "streaming" client like the Minecraft client is acceptable
- A proof of concept which only supports less than 10 clients is fine
- Suggestions and implementation of sound "cues" (like a video game) are welcome