ervasive computing environments augment human thought and activity with digital information, processing, and analysis, providing an observed world that is enhanced by the behavioral context of its users. A spectrum of heterogeneous computation and communication devices aim to enhance user productivity and facilitate everyday tasks. Despite the prevalence of such devices, however, no suitable software infrastructure with which to develop applications for ubiquitous computing habitats or living spaces exists. To address this deficiency, we developed Gaia, a metaoperating system 1 (detailed in the sidebar "The Gaia Operating System") built as a distributed middleware infrastructure that coordinates software entities and heterogeneous networked devices contained in a physical space. Gaia is designed to support the development and execution of portable applications for active spaces 2 -programmable ubiquitous computing environments in which users interact with several devices and services simultaneously. Gaia exports services to query, access, and use existing resources and context, and provides a framework to develop user-centric, resource-aware, multidevice, context-sensitive, and mobile applications. By extending the concepts of traditional operating systems to ubiquitous computing spaces, we can simplify space management and application development. Gaia's main contribution is not its individual services but rather the functionality it provides as the result of the interaction of these services. This interaction lets users and developers abstract ubiquitous computing environments as a single reactive and programmable entity instead of a collection of heterogeneous individual devices. In this article, we present an overview of the Gaia architecture, focusing on the complete system rather than individual services. A physical space, illustrated in Figure 1a , is a geographic region with limited and well-defined physical boundaries containing physical objects, heterogeneous networked devices, and users performing a range of activities. An active space, shown in Figure  1b , is a physical space coordinated by a responsive context-based software infrastructure that enhances mobile users' ability to interact with and configure their physical and digital environments seamlessly. Active spaces must support the development and execution of user-centric mobile applications. In active spaces, sessions associate user data and applications with users. This lets users move across active spaces and have their data and applications always available. When a user enters an active space, the user's sessions are dynamically mapped to the active space resources. Users can define different sessions and can activate and suspend them as necessary. We refer to the collection of sessions associated with a user as the user virtual space. The user virtual The Gaia metaoperating system extends the reach of traditional operating systems to manage ubiquitous computing habitats and living spaces as integrated programmable environments.
Gaia REF is a framework for building context-aware applications.
A Middleware Infrastructure for Active Spaces
IEEE Pervasive Computing
Computer Science