![]() Although PDAs and phones have become much more powerful in the last decade and are now ubiquitous, the software applications for them have failed to grow and adapt at a similar rate. Most mobile applications are simply static, inflexible, reduced-functionality versions of standard desktop applications such as word processors or spreadsheets. Domino attempts to address the problem of static mobile applications by providing an infrastructure upon which it is easy to create dynamic and adaptive mobile systems. For example, a tourist system built using Domino and running on a phone might continually search for recommendations from peer devices. When a tourist using the system visits a new area such as a museum, he may receive recommendations for a software component that presents a guide to that museum from other devices in the area. If the tourist accepts the recommendation, the Domino system will automatically transfer it from one of the peer devices in the area, install it, and execute it at runtime. Thus, appropriate and useful adaptations to the existing software and user interface can be made at runtime, and integrate fluidly with existing applications. The Domino infrastructure brings together a large amount of novel software and concepts to drive fluid and useful adaptation on mobile hardware. It utilises a custom wireless driver designed specifically to maximise the likelihood of encountering peers. The driver is able to intelligently select which wireless network to join at any time - seeking out infrastructure networks to provide standard Internet connections when available, and connecting to ad hoc networks when there are no useable access points nearby. This allows users to continue normal use of any Internet applications on their device whilst still permitting Domino peers to maximise the likelihood of discovering one another. Domino uses a sophisticated recommendation algorithm (Recer) to generate recommendations for software components when peers are encountered, and also to decide when to cull cached data and which data to transmit first when a peer is encountered. These are vital tasks in a mobile environment as storage is often low, plus the peer encounters, and the length of such encounters, are sporadic and unpredictable. By relying on a recommendation algorithm to decide which data to discard, and which is a priority when communicating with peers, Domino can operate within the constraints of a mobile environment whilst continuing to generate high-quality recommendations. Castles, a game built using the Domino infrastructure, was tested at the University of Glasgow. The aim of Castles is to build a powerful medieval army with which you can defeat your opponents, by constructing buildings such as knight schools, farms and mills. Each building and unit within Castles is a Domino software module, and can potentially be recommended to others, copied to their devices, and installed and executed during an ongoing game. Players started with a small number of buildings and units that they could construct, but as the game progressed and they met and battled peers, the software modules recommended and delivered by peers increased the buildings and units they could construct. Furthermore, by tracking when and in which combinations modules were used within the game, Domino offered recommendations on which buildings any player should build next and gave reasons for the recommendations. Thus Domino can also act as a guide, advising users on how to use the new software functionality it provides. Work on the Domino infrastructure was published at Pervasive 2006 in “Domino: Exploring Mobile Collaborative Software Adaptation”, Marek Bell, Malcolm Hall, Matthew Chalmers, Phil Gray and Barry Brown, Proc. Pervasive 2006, Dublin, Ireland, pp. 153-168. Source CodeThe Visual Studio 2005 solution containing the source code for the Domino infrastructure, Recer, and SelfDiscoveringSpaces can be downloaded here. Please note that you will need the community edition of OpenNetCF installed to compile to code. |