End-User Programming for the Web

Michael Bolin & Robert Miller

Motivation
On the desktop, an application can expect to control its user interface down to the last pixel, but on the World Wide Web, a content provider has no control over how the client will view the page, once delivered to the browser. This creates an opportunity for end-users who want to automate and customize their web experiences, but the growing complexity of web pages and standards prevents most users from realizing this opportunity.
Approach
Chickenfoot is a scripting environment embedded in the Firefox web browser that enables end-user programmers to customize and automate their interaction with the web by talking about objects they see in a web page.

Firefox browser displaying the Chickenfoot sidebar

Most approaches to web automation and screen scraping require the programmer to understand the underlying structure of the web page because they require the user to write syntactic patterns, such as regular expressions or XPATH, in order to identify elements in a web site. Chickenfoot scripts differ because they support the use of semantic patterns, so the user never needs to view the raw HTML of the web page. For example, the name of the HTML element for Yahoo!'s search box is "p," so other automation systems may let the user programmatically set the contents of the search box by writing something like the following:
  html.body.p[3].table.tr[2].input.p = "search terms"
whereas in Chickenfoot, an end-user programmer could write:
  enter('search box', 'search terms')
The former is tedious to write because it requires the author to plumb through several hundred lines of machine-generated HTML to find the name for the textbox. Further, this script will fail if Yahoo! decides to change the textbox's name or its location in the page. By contrast, the Chickenfoot code is easier for an end-user programmer to write and maintain because he simply needs to view the web page to write the script. Additionally, Chickenfoot scripts are more robust to changes in the web site. With Chickenfoot, users can automate web tasks, programmatically extract content from web sites, and customize how web pages are presented in their browser.

Some examples of tasks we have accomplished with Chickenfoot scripts are:

Acknowledgements

This work was supported in part by the National Science Foundation under award number IIS-0447800. Any opinions, findings, conclusions or recommendations expressed in this publication are those of the authors and do not necessarily reflect the views of the National Science Foundation.

References:

[1] Michael Bolin, Matthew Webber, Philip Rha, Tom Wilson, and Robert C. Miller. "Automation and Customization of Rendered Web Pages." UIST 2005, pp. 163-172.  Winner of best paper award. [Powerpoint slides]

[2] Michael Bolin. End-user Programming for the Web. MEng thesis, Massachusetts Institute of Technology, June 2005.  Winner of William A. Martin Memorial Thesis Prize for an outstanding Master's thesis in computer science.

[3] Michael Bolin and Rob Miller.  "Naming Page Elements in End-User Web Automation." Workshop on End-User Software Engineering, ICSE 2005.