Tuple spaces were first introduced in the coordination language Linda. A tuple space is a shared associative memory used by processes to communicate. Processes can post and read tuples using three basic operations: out to insert a tuple into the tuple space, in to remove a tuple from the tuple space and rd to check if a tuple is present in the tuple space (without removing it). Tuples are anonymous and are extracted from the tuple space by means of pattern matching on the tuple contents. Tuple space communication is decoupled both in space and time: processes do not have to know each other beforehand nor to be available at the same time since tuples can be inserted and extracted independently. These forms of decoupling make the model highly suitable for mobile networks. However, maintaining a globally shared tuple space is not feasible in a mobile setting.
Some adaptations of tuple spaces targeting the mobile environment, such as LIME, have extended this model with the notion of federated tuple spaces. In this model every node in the network keeps a local tuple space. The tuples in the local tuple space of all devices in range are conceptually merged into a federated tuple space. Nodes can post and read tuples from this federated tuple space by means of the typical tuple space operations. When devices move out of range their tuples are no longer shared and removed from the federated tuple space.
Other tuple space systems, such as TOTA, have adopted a replication model where tuples are replicated amongst collocated devices in order to increase data availability in the face of intermittent connectivity. Rather than merging local tuple spaces when devices discover, tuples are equipped with a propagation rule that determines how a tuple hops from one tuple space to another one. These propagation rules can be exploited to achieve context-awareness based not only on connectivity but also on semantic information. On the hand, replicated-bases system do not guarantee atomicity for remove operations which is an essential feature to support synchronization between applications.
Within the domain of tuple spaces targeting the mobile environment, we have explored three main software engineering concerns:
This have given rise to three adaptations of the tuple space model, respectively:
Context-Aware Tuples for the Ambient, C. Scholliers, E. Gonzalez Boix, W. De Meuter, T. D’Hondt. In Proceeding of the 12th International Symposium on Distributed Objects, Middleware, and Applications (DOA’10), LNCS. Srpinger Verlang, October 2010. ( pdf)
TOTAM: Scoped Tuples for the Ambient, C. Scholliers, E. Gonzalez Boix, W. De Meuter. Proceedings of the Second International DisCoTec Workshop on Context-aware Adaptation Mechanisms for Pervasive and Ubiquitous Services (CAMPUS 2009), from Electronic Communications of the EASST, eds. 2009. ( pdf)
Fact Spaces: Coordination in the Face of Disconnection. S. Mostinckx, C. Scholliers, E. Philips, C. Herzeel, W. De Meuter. In Murphy and Vitek (eds.), Proc. of the 9th Int. Conf. on Coordination Models and Languages (COORDINATION). LNCS 4467, pp. 268–285. Springer Verlag, June 2007. (pdf,bibtex)