Wireless networks define a very challenging scenario for the application programmer. Indeed, the fluidity inherent in the wireless media cannot be entirely masked at the communication layer: issues such as disconnection and a continuously changing execution context most often must be dealt with according to the application logic. Appropriate abstractions, usually provided as part of a middleware, are therefore required to support and simplify the programming task.Coordination [1] is a programming paradigm whose goal is to separate the definition of the individual behavior of application components from the mechanics of their interaction. This goal is usually achieved by using either message passing or data sharing as a model for interaction. Publish-subscribe, described in Chapter ?? is an example of the former, where coordination occurs only through the exchange of messages (events) among publishers and subscribers. While message passing, in its pure form, is inherently stateless, data sharing enables coordination among components by manipulating the (distributed) state of the system. The tuple space abstraction, the subject of this chapter, is a typical example of a data sharing approach. The two models, publish-subscribe and tuple spaces, have sometimes crossed paths in the scientific literature: their expressive power has been compared on formal grounds in [2]; the limits of an implementation of a stateful tuple space on top of a stateless publish-subscribe layer has been investigated in [3]; some extensions of publish-subscribe with stateful features exist (e.g., the ability to query over past events as in [4]). A thorough discussion of the relationship between the two is outside the scope of this chapter, and hereafter we focus solely on tuple spaces.Linda [5] is generally credited with bringing the tuple space abstraction to the attention of the programming community. In Linda, components communicate through a shared tuple space, a globally accessible, persistent, content-addressable data structure containing elementary data structures called tuples. Each tuple is a sequence of typed fields, as in "foo", 9, 27.5 , containing the information being communicated. A tuple t is inserted in a tuple space through an out(t) oper-1