
Migratory Applications Krishna A. Bharat Luca Cardelli Graphics, Visualization & Usability Center Digital, Systems Research Center College of Computing, Georgia Tech. 130, Lytton Avenue Atlanta, GA 30332-0280 Palo Alto, CA 94301 E-mail: [email protected] E-mail: [email protected] ABSTRACT cope with the needs of mobile and distributed users. New metaphors will be necessary to cope with these demands. We introduce a new genre of user interface applications that can migrate from one machine to another, taking their user We introduce a new genre of user interface applications: interface and application contexts with them, and continue migratory applications can migrate from one host to from where they left off. Such applications are not tied to one another, maintaining intact the state of their user interface. user or one machine, and can roam freely over the network, After migration, a former host may shut down without rendering service to a community of users, gathering human affecting the application. We discuss how application input and interacting with people. We envisage that this will migration can be implemented at the programming lan- support many new agent-based collaboration metaphors. guage/environment level. Our approach places some The ability to migrate executing programs has applicability demands on the programming environment, but almost to mobile computing as well. Users can have their applica- none on the application programmer. No restrictions are tions travel with them, as they move from one computing placed, in principle, on the type of the application being environment to another. We present an elegant programming migrated. The entire migration operation can be realized by model for creating migratory applications and describe an the execution of a single command. The same technique use implementation. The biggest strength of our implementation for transmitting an application can be used to save the run- is that the details of migration are completely hidden from ning application to Þle and transmit it over other channels to the application programmer; arbitrary user interface appli- be resumed at a later time. cations can be migrated by a single ÒmigrationÓ command. We address system issues such as robustness, persistence Application migration is useful in the context of many and memory usage, and also human factors relating to appli- agent-based collaboration metaphors. For example: cation design, the interaction metaphor and safety. 1. Applications that follow a user across physical locations: KEYWORDS: Application Migration, Collaborative the ubiquitous computing metaphor. For ÒeagerÓ behavior, Work, Interactive Agents, Application Checkpointing, some applications could use a location sensing device such Mobile Computing, Ubiquitous Computing, Safety. as an Òactive badgeÓ, to automatically follow the user. 2. Applications that serve a group of people by travelling to 1 INTRODUCTION each personÕs site in turn (e.g. a meeting scheduler): the The goal of the human-computer interaction community is electronic secretary metaphor. to make powerful applications easy to use, while retaining 3. Applications that interact with people on a userÕs behalf their full potential. For this purpose metaphors have been and carry out an agenda: the interactive agent metaphor. devised; metaphors like overlapping windows, direct manip- ulation, and hypermedia. A successful metaphor hides com- 4. Communication over email that is interactive and intelli- plexity, and allows users to accomplish their tasks with little gent: the interactive message metaphor. Unlike previous effort. Often, a metaphor requires advances in technology implementations of Òactive mailÓ [6], the recipient is able to before it can be effectively implemented. Conversely, a new forward the interactive message after interacting with it. technology often needs the introduction of new metaphors to harness it. In addition to self-induced migration as described so far, it is equally easy to allow a program to be migrated under exter- As the infrastructure for ubiquitous computing comes into nal control. We could Òdrag-and-dropÓ programs from one being, new demands will be placed on the way applications machine to another in the same manner that we move Þles between folders, and windows between screens. Section 2 describes our approach to programming migra- tory applications. In Section 3, we show how this paradigm was applied in the Visual Obliq environment [3] to support the migration of (arbitrary) user interface applications. In Section 4 we provide a walk-through of the process of cre- ating a migratory application. In Section 5 we discuss some The closure table contains a single entry, indicated by Òwhere issues raised by migration. Section 6 lists related work. In x = ...Ó: Section 7 we draw some conclusions. x = 0 2 PROGRAMMING MODEL proc() x:=x+1; x end Our programming model is based on the facilities available where x = in the Obliq distributed scripting language [7]. Figure 2: The closure of a procedure 2.1 Network Semantics In Obliq, arbitrary data, including procedures, can be trans- The transmission of a closure (Figure 3) follows the same mitted over the network. A piece of Obliq data can be seen rules as the transmission of any data graph. When a closure is as a graph where some nodes are mutable (meaning that transmitted, all the program text is copied, since it consists of they have local state that can be modiÞed by assignment) immutable data. The associated collection of values for free and where other nodes are immutable (meaning that they variables is copied according to the general rule. In particu- cannot be modiÞed). For example, the program text of a lar, the locations of global updatable variables are not copied: procedure is immutable and cannot be modiÞed, while network references are generated to their location, so that Þelds in an object are mutable because they can be assigned they can be remotely updated. new values. x = 2.1.1 Network Transmission. When a data graph is passed to a remote procedure, or returned from a remote proc ... x ... end proc ... x ... end where x= where x= procedure, we say that it is transmitted over the network. From To The meaning of transmitting a data graph is the following Transmit (see Figure 1). Starting from a given root, the graph is cop- ied from the source site to the target site up to the point Figure 3: Transmission of a closure where mutable nodes or network references are found. Mutable nodes (indicated by shaded boxes) are not copied; 2.1.2 Network Copy. In contrast to the default transmis- in their place, network references to those nodes are gener- sion mechanism, which stops at mutable nodes and network ated. Solid pointers represent either local or remote refer- references, a special primitive is provided to perform a net- ences. Existing network references are transmitted work copy of a data graph. This primitive makes a complete unchanged, without following the reference. Sharing and local copy of a possibly mutable and distributed graph. circularities are preserved. Copy Transmit From To From To Figure 4: Network Copy Figure 1: Transmission of a data graph Network copy is useful, for example, when moving a user For example, an Obliq object (one of the basic data struc- interface along with a migrating application. tures) is never copied over the network on transmission, since objects have state. A network pointer to the object is A user interface is normally closely bound to site-dependent transmitted in its place. The object can then be referenced resources, such as windows and threads. Since these remotely through that network pointer; for example, one of resources cannot migrate, a stand-alone snapshot of the user its methods may be remotely invoked. interface is Þrst assembled. The snapshot consists of some complex data structure, including a representation of the cur- Arrays and updatable variables are similarly not copied on rent state of all the live windows of the application. This data transmission, since they have state. structure, resembling the graph in the picture above, can be copied over to the target site, and then converted back to a live Obliq procedures are Þrst-class data and, like other data, interface. have a value that can be manipulated and transmitted. The value of a procedure is called a closure; it consists of the 2.2 Agents program text of the procedure, plus a table of values for the An agent is a computation that may hop from site to site over global variables of the procedure. Figure 2 shows the clo- the network [19]. We review the concepts of agents, agent sure for a procedure incrementing a global variable x; the servers, suitcases, and brieÞngs. In Section 2.3, we describe variable x denotes a mutable location containing 0. an Obliq implementation of agent hopping. brieÞng. Agent servers are simple compute servers whose main task is to run agents and supply them with appropriate A suitcase is a piece of data that an agent carries with it as brieÞngs (and maybe check the agentÕs credentials). it moves from site to site. It contains the long-term memory of the agent. It may include a list of sites to visit, the tasks The hop instruction can be programmed in Obliq as follows: to perform at each site, and the results of performing those tasks. let hop = proc(agentServer, agent, suitcase) A brieÞng is data that an agent receives at each site, as it agentServer( enters the site. It may include advice for the agent (e.g. Òtoo (1) proc(briefing) busy now, try this other siteÓ), and any site-dependent data fork( such as local Þle systems and databases. (2) proc() An agent server, for a given site, is a program that accepts (3) agent(copy(suitcase), briefing); code over the network, executes the code, and provides it end); with a local brieÞng.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages10 Page
-
File Size-