Improving transparency of a distributed programming system Boris Mej´ ıas 1 , Rapha¨ el Collet 1 , Konstantin Popov 2 , and Peter Van Roy 1 1 Universit´ e catholique de Louvain, Louvain-la-Neuve, Belgium {bmc, raph, pvr}@info.ucl.ac.be 2 Swedish Institute of Computer Science, Stockholm, Sweden kost@sics.se Abstract. Since Grid computing aims at creating a single system image from a distributed system, transparent support for distributed programming is very im- portant. Some programming systems have attempted to provide transparent sup- port for distribution hiding from the programmer several concerns that deal with the network behaviour. Sometimes, this leads to restricted models that attach pro- grammers to the decisions of language designers. This work propose language abstractions to annotate entities specifying their distributed behaviour while keep- ing the transparency of the distribution support, and a failure model that separates the application’s logic from failure handling. 1 Introduction It is well known that distributed programming is hard, and large research effort has been devoted to simplify it. One of the approach is transparent distribution, where the distributed system appears to the user as a single system image. In such environment, semantics of operations performed in a centralised system remain the same in a dis- tributed one. Even though, distributed programming is plagued with network failures, lack of global time and other problems shown in [1] that make full transparency infea- sible. However, transparent distribution can be achieved in several degrees. In transparent distribution, the consistency of the system is maintained using pre- defined access architectures and protocols, which are designed depending on the se- mantics of each type of entity. These distribution strategies cannot be modified by the programmer, who is limited to use the default design. We propose a way to annotate language data structures, here referred as entities. These annotations will allow pro- grammers to choose between several strategies for every entity according to the non- functional requirements of their programs. Annotating entities in peer-to-peer networks becomes very helpful to keep the con- sistency of their states. Knowing that the peer that is currently hosting an entity can leave the network at any time, one may annotate it with a migratory strategy. As soon as another peer request access to it, the entity will migrate to the requesting peer, and the original host can safely leave. Regarding distributed garbage collection, a peer can chose a persistent strategy to keep an entity alive even when temporary there is no dis- tributed reference to it.