The new properties of mobile/cloud applications pose significant challenges for application programmers. Developers of mobile/cloud applications have largely tackled these new challenges, along with some old ones, without the benefit of lower-level abstractions typically provided by operating systems.
Operating system abstractions developed for traditional desktop applications are not suited to the new properties of mobile/cloud applications. The operating system has been replaced with distributed services that still leave significant responsibilities for user management, deployment management and storage management up to the application.
The Sapphire project consists of several research directions to design new operating system abstractions tailored the new and unique characteristics of mobile/cloud applications.
Sapphire is a new distributed programming platform that provides customizable and extensible deployment of mobile/cloud applications. Sapphire’s key design feature is its distributed runtime system, which supports a flexible and extensible deployment layer for solving complex distributed systems tasks, such as fault-tolerance, code-offloading, and caching. Rather than writing distributed systems code, programmers choose deployment managers that extend Sapphire’s kernel to meet their applications’ deployment requirements. In this way, each application runs on an underlying platform that is customized for its own distribution needs.
Agate is a new secure, distributed runtime platform that enforces user-defined security policies for sensitive information, including photos, passwords and sensor data like GPS, across an entire mobile/cloud application. Users are able to set policies that give applications access to sensitive data, but also enforce what the application does with the data afterwards (e.g., give the application access to my camera, but only allow it to send my photos to my friends). Agate achieves this goal by using an innovative user-centric information flow control mechanism.
Diamond is a new data management system for wide-area, reactive applications. Reactive applications give users the illusion of continuous synchronization across mobile devices and the cloud server. Diamond simplifies this task by providing applications with persistent cloud storage, reliable synchronization between storage and mobile devices, and automated execution of application code in response to shared data updates.