Users are increasingly inundated with small devices with communication and storage capabilities. Typically, each of these devices is synchronized regularly with the Home PC. Hence, the Home PC is responsible for making sure that the data from a peripheral is both persisted and consistent with other devices in the system. It ensures that working with the peripheral is the same as working with any other device in the system.

A Graph of Footloose Devices

We believe that current trends show that as the number of mobile peripheral devices grow and as mobile devices gain wireless communication bits like Bluetooth, it will no longer be reasonable to expect for consistency to be maintained by manual one-to-one synchronizations directly with a Home PC. For example, devices may form a connected network, but never come in physical contact with all devices. Users will expect their devices to automatically synchronize with each other and through each other using whatever connections are available.


For example, consider the following. Louis purchases an item online at work and enters his purchase in a financial planner. His work computer knows that his home computer keeps track of this information for Louis and would like to propagate this data to it. However, Louis home computer is off and cannot be reached. Fortunately, Louis's cell phone is within wireless range of the work computer. The work computer connects to the cell phone and determines that it is likely to see Louis's home computer, so the work computer transfers the purchase information to the cell phone. When Louis returns home that evening, as Louis checks his e-mail, the cell phone in his pocket comes within wireless range of the desktop and transfers the new purchase to the home computer. Here, the cell phone acts merely as a carrier of financial information it has no need or ability to understand.


Our initial stab at this problem is Footloose, a user-centered data store replicated among diverse devices. Data stored in Footloose can be modified by any device the user owns . Furthermore, Footloose ensures that the changes are reflected in all devices interested in the change see the change as long as long as they communicate with at least one other device that knows about the change. Correspondingly, devices uninterested in the change pass the data along in order to help the interested devices converge on a single data state.

Footloose exploits two key ideas:

Physical eventual consistency allows data to pervasively follow a user. Selective conflict resolution aids physical eventual consistency by letting other devices act as carriers of conflicting information.