Overview

Apps on mobile systems are exploding and are getting more and more complex. This is especially true when we look at the way rich data-centric apps deal with the management user and app data. While developers spend significant time building complex data management solutions into their app, they cannot cater to the needs of all users. So a user is always constrained by the decisions and made by the developer on their behalf. This leaves the users who have heterogeneous data management needs (E.g., secure cloud v/s public cloud, energy optimization v/s instant sharing) with little choice.

BlueMountain solves this problem by creating a pluggable data management solution for modern mobile platforms like Android. The goal of BlueMountain is to allow data management mechanisms and policies to be implemented independently of core app logic. BlueMountain allows a user to install data management solutions as apps, install multiple such solutions on a single device, and choose a suitable solution each for one or more apps. It allows app developers to focus their effort on app logic and helps the developers of data management solutions to achieve wider deployability. It also gives increased control of data management to end users and allows them to use different solutions for different apps.

BlueMountain works on regular Android phones and does not require a custom ROM or root permissions. To take advantage of the pluggable data management solution, an app should include the BlueMountain framework. We make this process a breeze by including a transformer, build with Reptor, a tool that uses byte-code instrumentation techniques that were earlier developed in the RMS Lab. The BlueMountain transformer automatically injects our framework into any app, without requiring the source code! Thus, it can also be used with some of the existing apps with the developer's intervention.

How BlueMountain Works