Anatomy of a ubiquitous media center

lThe Web is such a rich architecture that it is giving birth to new applications that were unconceivable only few years ago in the past. Developing these applications being different from developing traditional applications, generalist programming languages are not well suited. To help face this problem, we have conceived the Hop programming language whose syntax and semantics are specially crafted for programming Web applications. In order to demonstrate that Hop, and its SDK, can be used for implementing realistic applications, we have started to develop new innovative applications that extensively relies on the infrastructure offered by Web and that use Hop unique features. We have initiated this effort with a focus on multimedia applications. Using Hop we have implemented a distributed audio system. It supports a flexible architecture that allows new devices to catch up with the application any time: a cell phone can be used to pump up the volume, a PDA can be used to browse over the available musical resources, a laptop can be used to select the output speakers, etc. This application is intrinsically complex to program because, i) it is distributed (several different devices access and control shared resources such a music repositories and sound card controllers), ii) it is dynamic (new devices may join or quit the application at any time), and iii) it involves different heterogeneous devices with different hardware architectures and different capabilities. In this paper, we present the two main Hop programming forms that allow programmers to develop multimedia applications more easily and we sketch the parts of the implementation of our distributed sound system that illustrate when and why Hop helps programming Web multimedia applications.