Mobile, wearable, and ubiquitous computing devices are increasingly replacing personal computers for many everyday tasks. In this thesis, we treat these devices not as individual computers but as part of a larger computing environment and explore the challenges and opportunities presented.
We start by outlining our vision for this environment, focusing in particular on interacting with public devices that do not belong to a single user but are instead provided to the public by businesses and organizations such as restaurants, shopping centers, employers, universities, and governments. Software running in this environment will treat all the currently available devices as a single computer using the unique capabilities of each device to provide an enhanced user experience.
A software architecture is proposed to simplify writing applications that make use of many different devices. We propose a runtime environment to allow HTML and JavaScript applications to execute on a diverse set of devices and develop a concept for virtual components that allows user interfaces to spread across multiple displays without requiring foreknowledge of available devices and their capabilities. For device discovery and communication a JSON encoded protocol is used that operates on top of a number of transport protocols including UDP, TCP, and WebSockets. In addition, a secure boot mechanism is described for providing trusted access to public devices. Lastly, several example applications are provided that make use of this environment and their differences and unique capabilities are discussed.