protocols (HTTP), as well as the format and semantics of any data exchanged over via those protocols (usually HTML or XML). Web services and their clients must agree upon known service interfaces, generally expressed in the Web Service Description Language (WSDL) and invoked via Simple Object Access Protocol (SOAP). In all of these cases, there is a priori agreement on the form (syntax) and function (semantics) of communication, and this agreement is built in to each party to the communication. In other words, the respective developers of these programs have coded into them the ability to use a particular handful of protocols, and an "understanding" of the semantics of a handful of data types. Clearly, if we hope for a future in which arbitrary devices and services can interoperate, there must be some prior agreement of the details of communication among these devices and services. The question that is at the core of this paper is: at what level should this agreement take place? This paper describes an approach to interoperability, and an architecture called Speakeasy that embodies this approach, based on three premises: fixed domain-independent interfaces, mobile code, and user-in-the-loop interaction. We believe that this combination of premises, which we call recombinant computing, can support "serendipitous" interoperability—the ability for devices and services to use one another with only very restricted prior knowledge. The term "recombinant computing" is meant to evoke a sense that devices and services can be arbitrarily combined with, and used by, each other, without any prior planning or coding. In the sections that follow we present our rationale for the premises upon which our approach is based, and why we believe that they are key to providing the ability for devices and services to offer serendipitous interoperability. After this, we present the Speakeasy Figure 1 A user gives a presentation using Speakeasy. The network-enabled projector, and the filesystem on which the presentation resides, are Speakeasy components. The wireless PDA used to set up the connection automatically downloads presentation controls. ABSTRACT Interoperability among a group of devices, applications, and services is typically predicated on those entities having some degree of prior knowledge of each another. In general, they must be written to understand the type of thing with which they will interact, including the details of communication as well as semantic knowledge such as when and how to communicate. This paper presents a case for "recombinant computing"—a set of common interaction patterns that leverage mobile code to allow rich interactions among computational entities with only limited a priori knowledge of one another. We have been experimenting with a particular embodiment of these ideas, which we call Speakeasy. It is designed to support ad hoc, end user configurations of hardware and software, and provides patterns for data exchange, user control, discovery of new services and devices, and contextual awareness.