Puppeteer is a new system we have built to support a new form of adaptation we call component-based adaptation. Puppeteer takes advantage of the modular component-based structure, consistent file formats, and exposed APIs of modern applications. By remotely ``pulling strings'' on these applications, Puppeteer can add a wide variety of adaptation policies to pre-existing applications without modifying them in any way.
Figure 1:System architecture.Figure 1 shows the four-tier Puppeteer system architecture. It consists of the application(s) to be adapted, the Puppeteer client proxy, the Puppeteer server proxy, and the data server. The application and data server are completely unmodified. The Puppeteer client proxy and server proxy work together to perform the adaptation.
The Puppeteer client proxy is in charge of executing the policies that adapt the applications. The Puppeteer server proxy is assumed to have strong connectivity to the data server. In the most common scenario, it executes on the same machine as the data server. The Puppeteer server proxy is responsible for parsing documents, exposing their structure, and transcoding components as requested by the client proxy. Data servers can be arbitrary repositories of data such as Web servers, file servers or data bases.
Puppeteer can adapt an application if it can uncover the component structure of its documents and if the application provides a run-time interface that enables Puppeteer to view and modify the data the application operates on. We refer to the latter feature as Data Manipulation Interface ( DMI ). Additionally, Puppeteer can benefit greatly from being able to track the user as she uses the application.
Figure 2: Puppeteer architecture.
The Puppeteer architecture consists of four types of modules: Kernel, Driver, Transcoder, and Policy (see Figure 2). The Kernel is a component-independent module that implements the Puppeteer protocol. It appears once in both the client and server Puppeteer proxies.
A driver supports adaptation for a particular component type. A driver for a particular component type may call on a driver for another component type, if a component of the latter type is included in a component of the former type. At the top of this driver hierarchy sits the driver for a particular application (which itself is a component type).
Puppeteer supports three types of drivers: import, export, and tracking drivers. The import drivers parse the documents, extracting their component structure and converting them from their application specific file formats to a Puppeteer Independent Format (PIF), consisting of a skeleton and a set of related data items. Export drivers un-parse the PIF and update the application using the DMI interfaces exposed by the application. A minimal export driver, has to support inserting new components into a running application. Tracking drivers are necessary for many complex policies. A tracking driver tracks which components are being viewed by the user and intercepts load and save requests. Tracking drivers can be implemented using polling or event registration mechanisms.
Drivers may execute both in the client and the server Puppeteer, as may Transcoders which implement specific transformations on component types.
Policies specify particular adaptation strategies and execute in the client Puppeteer proxy. These policies traverse the skeleton, choosing what components to fetch and with what fidelity.
The adaptation process in Puppeteer is divided roughly into three stages: parsing the document to uncover the structure of the data, fetching selected components at specific fidelity levels, and updating the application with the newly fetched data.
When the user opens a (static) document, the Kernel on the Puppeteer server proxy instantiates an import driver for the appropriate document type. The import driver parses the document, extracts its skeleton and data, and generates a PIF. The Kernel then transfers the document's skeleton to the Puppeteer client proxy. The policies running on the client proxy policy ask the Kernel to fetch an initial set of components from within the skeleton at a specified fidelity.
The policies then use the export driver to supply this set of components to the application as though it had the full document at its highest level of fidelity. The application, believing that it has finished loading the document, returns control to the user. Meanwhile, Puppeteer knows that only a fraction of the document has been loaded and will use the techniques described above to fetch or upgrade the fidelity of the remaining components.
Component-Based Adaptation
Eyal de Lara, Yogesh Chopra, Rajnish Kumar, Nilesh Vaghela, Dan S. Wallach, and
Willy Zwaenepoel
Submitted for journal publication.
Collaboration and Multimedia Authoring on Mobile Devices
Eyal de Lara, Rajnish Kumar, Dan S. Wallach, and Willy Zwaenepoel
To Appear in Proceedings of Firsth International Conference on Mobile Systems, Applications, and Services (MobiSys), San Francisco, May, 2003
Extensible Adaptation viaConstraint Solving
Yuri Dorsenko, Eyal de Lara, Dan S. Wallach, and Willy Zwaenepoel
In Proceedings of the 4th IEEE Worwshop on Mobile Computing Systems and Applications (WMCSA). Callicoon, New York. June, 2002
HATS: Hierarchical Adaptive Transmission Scheduling
Eyal de Lara, Dan S. Wallach, and Willy Zwaenepoel
In Proceedings of the 2002 Multimedia Computing and Networking Conference (MMCN). San Jose, California. January, 2002.
Reducing the Energy Usage of Office Applications
Jason Flinn, Eyal de Lara, M. Satyanarayanan, Dan S. Wallach, and Willy Zwaenepoel
In Proceedings of the IFIP/ACM International Conference on Distributed Systems Platforms (Middleware), Heidelberg, Germany. November, 2001.
Collaboration and Document Editing on Bandwidth-Limited Devices
Eyal de Lara, Rajnish Kumar, Dan S. Wallach, and Willy Zwaenepoel
In Proceedings of the Workshop on Application Models and Programming Tools for Ubiquitous Computing (UbiTools). Atlanta, Georgia. September, 2001.
Position Summary: Architectures for Adaptation Systems
Eyal de Lara, Dan S. Wallach, and Willy Zwaenepoel
8th IEEE Workshop on Hot Topics in Operating Systems (HotOS). Schloss Elmau, Germany. May 2001.
Puppeteer: Component-based Adaptation for Mobile Computing
Eyal de Lara, Dan S. Wallach, and Willy Zwaenepoel
In Proceedings of the 3rd USENIX Symposium on Internet Technologies and Systems (USITS). San Francisco, California. March 26-28, 2001.
Opportunities for Bandwidth Adaptation in Microsoft
Office Documents
Eyal de Lara, Dan S. Wallach, and Willy
Zwaenepoel
In Proceedings of the 4th USENIX
Windows Systems Symposium. Seattle, Washington. August 3-4, 2000.