The current implementation of Lime serves as a proof of concept of global virtual data structures as an abstraction useful in guiding the development of middleware for mobile environments, enabling rapid and dependable application development.
We believe that the notion of middleware can be broadened to define a layer of abstraction which itself is a layered composition of abstractions. This composition should be dynamic and configurable by the application programmer. For example, at the lowest level, middleware can be developed to utilize different protocols based on the characteristics of the communication media. For example, in radio communication, broadcast protocols have no more overhead than unicast and when possible should be exploited in protocols for this environment. Above this, algorithms can be developed to report, with varying degrees of guarantees, current connectivity information. In a logical mobility only setting or a physically mobile setting with restricted mobility where disconnections are always announced, tight guarantees can be made such that at all times, all nodes in the network are guaranteed to have the same view of the network. This of course comes at the cost of system-wide synchronization protocols, therefore such strong guarantees may not be desired and options for this layer of the middleware should include weaker notions of system configuration. At a yet higher level, different devices may have varying resource configurations. Middleware should accommodate this in two ways, first by allowing only the essential modules of the middleware to be installed on the device, and second by implementing the same high level abstractions with different functionality depending on the capabilities of the device on which it is executing. The driving theme is adaptability realized through modular middleware which can be pieced together for the specific needs of the application and the environment the application is running in.