29.11.2012 Views

2nd USENIX Conference on Web Application Development ...

2nd USENIX Conference on Web Application Development ...

2nd USENIX Conference on Web Application Development ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C3: An Experimental, Extensible, Rec<strong>on</strong>figurable Platform for HTML-based<br />

Applicati<strong>on</strong>s<br />

Benjamin S. Lerner Brian Burg<br />

University of Washingt<strong>on</strong><br />

Abstract<br />

The comm<strong>on</strong> c<strong>on</strong>cepti<strong>on</strong> of a (client-side) web applicati<strong>on</strong><br />

is some collecti<strong>on</strong> of HTML, CSS and JavaScript<br />

(JS) that is hosted within a web browser and that interacts<br />

with the user in some n<strong>on</strong>-trivial ways. The comm<strong>on</strong><br />

c<strong>on</strong>cepti<strong>on</strong> of a web browser is a m<strong>on</strong>olithic program<br />

that can render HTML, execute JS, and gives the user a<br />

portal to navigate the web. Both of these are misc<strong>on</strong>cepti<strong>on</strong>s:<br />

nothing inherently c<strong>on</strong>fines webapps to a browser’s<br />

page-navigati<strong>on</strong> idiom, and browsers can do far more<br />

than merely render c<strong>on</strong>tent. Indeed, browsers and web<br />

apps are c<strong>on</strong>verging in functi<strong>on</strong>ality, but their underlying<br />

technologies are so far largely distinct.<br />

We present C3, an implementati<strong>on</strong> of the<br />

HTML/CSS/JS platform designed for web-client<br />

research and experimentati<strong>on</strong>. C3’s typesafe, modular<br />

architecture lowers the barrier to webapp and browser<br />

research. Additi<strong>on</strong>ally, C3 explores the role of extensibility<br />

throughout the web platform for customizati<strong>on</strong> and<br />

research efforts, by introducing novel extensi<strong>on</strong> points<br />

and generalizing existing <strong>on</strong>es. We discuss and evaluate<br />

C3’s design choices for flexibility, and provide examples<br />

of various extensi<strong>on</strong>s that we and others have built.<br />

1 Introducti<strong>on</strong><br />

We spend vast amounts of time using web browsers: casual<br />

users view them as portals to the web, while power<br />

users enjoy them as flexible, sophisticated tools with<br />

countless uses. Researchers of all stripes view browsers<br />

and the web itself as systems worthy of study: browsers<br />

are a comm<strong>on</strong> thread for web-related research in fields<br />

such as HCI, security, informati<strong>on</strong> retrieval, sociology,<br />

software engineering, and systems research. Yet today’s<br />

producti<strong>on</strong>-quality browsers are all m<strong>on</strong>olithic, complex<br />

systems that do not lend themselves to easy experimentati<strong>on</strong>.<br />

Instead, researchers often must modify the source<br />

code of the browsers—usually tightly-optimized, obscure,<br />

1<br />

Herman Venter Wolfram Schulte<br />

Microsoft Research<br />

and sprawling C/C++ code—and this requirement of deep<br />

domain knowledge poses a high barrier to entry, correctness,<br />

and adopti<strong>on</strong> of research results.<br />

Of course, this is a simplified depicti<strong>on</strong>: browsers are<br />

not entirely m<strong>on</strong>olithic. Modern web browsers, such<br />

as Internet Explorer, Firefox or Chrome, support extensi<strong>on</strong>s,<br />

pieces of code—usually a mix of HTML, CSS and<br />

JavaScript (JS)—that are written by third-party developers<br />

and downloaded by end users, that build <strong>on</strong> top of the<br />

browser and customize it dynamically at runtime. 1 To<br />

date, such customizati<strong>on</strong>s focus primarily <strong>on</strong> modifying<br />

the user interfaces of browsers. (Browsers also support<br />

plug-ins, binary comp<strong>on</strong>ents that provide functi<strong>on</strong>ality,<br />

such as playing new multimedia file types, not otherwise<br />

available from the base browser. Unlike extensi<strong>on</strong>s, plugins<br />

cannot interact directly with each other or extend each<br />

other further.)<br />

Extensi<strong>on</strong>s are widely popular am<strong>on</strong>g both users and<br />

developers: milli<strong>on</strong>s of Firefox users have downloaded<br />

thousands of different extensi<strong>on</strong>s over two billi<strong>on</strong> times 2 .<br />

Some research projects have used extensi<strong>on</strong>s to implement<br />

their ideas. But because current extensi<strong>on</strong> mechanisms<br />

have limited power and flexibility, many research<br />

projects still must resort to patching browser sources:<br />

1. XML3D [14] defines new HTML tags and renders<br />

them with a 3D ray-tracing engine—but neither<br />

HTML nor the layout algorithm are extensible.<br />

2. Maverick [12] permits writing device drivers in JS<br />

and c<strong>on</strong>necting the devices (e.g., webcams, USB<br />

thumb drives, GPUs, etc.) to web pages—but JS<br />

cannot send raw USB packets to the USB root hub.<br />

3. RePriv [5] experiments with new ways to securely<br />

expose and interact with private browsing informa-<br />

1 Opera supports widgets, which do not interact with the browser or<br />

c<strong>on</strong>tent, and Safari recently added small but slowly-growing support for<br />

extensi<strong>on</strong>s in a manner similar to Chrome. We ignore these browsers in<br />

the following discussi<strong>on</strong>s.<br />

2 https://add<strong>on</strong>s.mozilla.org/en-US/statistics/<br />

<str<strong>on</strong>g>USENIX</str<strong>on</strong>g> Associati<strong>on</strong> <strong>Web</strong>Apps ’11: <str<strong>on</strong>g>2nd</str<strong>on</strong>g> <str<strong>on</strong>g>USENIX</str<strong>on</strong>g> <str<strong>on</strong>g>C<strong>on</strong>ference</str<strong>on</strong>g> <strong>on</strong> <strong>Web</strong> Applicati<strong>on</strong> <strong>Development</strong> 61

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!