Much work has gone into supporting mobile clients [21] and into creating programming models that incorporate adaptation into the design of the application [17]. The project that most closely relates to Puppeteer is Odyssey [28], which splits the responsibility for adaptation between the application and the system. Puppeteer takes a similar approach, pushing common adaptation tasks into the system infrastructure and leaving the application-specific aspect of adaptation to application drivers. The main difference between the two systems lays in Puppeteer's use of existing run-time interfaces to adapt existing applications, whereas Odyssey requires applications to be modified to work with it.
Visual Proxies [34], an offspring of Odyssey, implements application-specific adaptation policies without modifying the application by using interposition between the X-server and the application. While this technique enables many adaptations that are possible with Puppeteer, it requires much more complicated application drivers.
The Dynamic Documents [19] system uses instrumentation of the Mosaic Web browser by Tcl scripts to set the policies for individual HTML documents. While Puppeteer uses the external interfaces provided by the application, Dynamic Documents uses an internal script interpreter in the browser.