Ubiquitous computing describes a world in which technology invisibly assist us in our everyday activities. Unfortunately, development of ubiquitous software has fallen behind advances in available hardware and high-speed networking. Subiquitous is a software platform to support the development and deployment of applications in a ubiquitous computing environment. The goal of Subiquitous is to provide flexible support for a variety of ubiquitous application structures and distributions as well as to support the rapid development and zero configuration, user friendly set-up of those applications. The Subiquitous system consists of two basic parts. First, it provides a client-server architecture to support the deployment and communication of Subiquitous applications. Second, it provides an application framework used to build Subiquitous applications. The framework, in collaboration with the Subiquitous server and client, provides service discovery, transparent and flexible communications, code distribution, and application organization. To demonstrate Subiquitous contributions toward the improvement of ubiquitous software, a number of example ubiquitous applications were developed. The examples demonstrate: a) distribution of Subiquitous applications to different devices along the Model-View-Controller separation, b) running of the same application in multiple devices supporting easy communication between devices, c) a resource-server with multiple clients all sharing data from a single location, and d) an existing complex application with a Subiquitous wrapper that supports moving user interaction from one device to another. Each example application requires zero user configuration and includes no more than thirty lines of Subiquitous code to support user interaction across multiple devices in the home.