Benjamin Lerner

Designing for Extensibility and Planning for Conflict: Experiments in Web-Browser Design

copyright notice

Benjamin S. Lerner


The past few years have seen a growing trend in application development toward “web applications”, a fuzzy category of programs that currently (but not necessarily) run within web browsers, that rely heavily on network servers for data storage, and that are developed and deployed differently from traditional desktop applications. Where (typical) traditional applications are compiled pieces of code, written in arbitrary languages, that implement both an application's user interface and its functionality, web apps by contrast are written in three interpreted languages: HTML to define the structure or content of the UI, CSS to define the appearance, and JavaScript (JS) to define the behavior. These three languages feel nothing alike, and are used for different facets of the applications.

The last decade has also seen the rise of Mozilla Firefox, a web browser whose UI and functionality are themselves written in (dialects of) HTML, CSS, and JS, making Firefox one of the first fully-fledged web apps. Part of Firefox's appeal is its strong support for extensions, which are downloadable, third-party pieces of code (ie, not written by Mozilla or with Mozilla's cooperation) that enhance the browser with additional functionality or customizations. Firefox extensions are wildly popular: over six thousand distinct extensions have been downloaded over 2.5 billion times, and all major browser vendors have added varying degrees of support for extensions to their own products. Crucially, these extensions are also written in HTML, CSS, and JS: writing an extension feels fundamentally similar to writing a web page or web app.

Thanks to the dynamic, interpreted nature of these three languages, it is mostly straightforward to incorporate the contents of an extension into the existing browser. There are, however, some caveats. Not all programs are equally amenable to post-hoc extension, and there are currently no guarantees that multiple extensions do not conflict, destabilizing each other or the base browser.

In this dissertation, I aim to provide better support for rich extensibility for web apps. In particular, I claim that

Language-specific extension mechanisms are needed for each of HTML, CSS, and JS, and such mechanisms are needed for building useful diagnostic tools to address inter-extension conflicts.

To support this thesis, I first present C3, the “Cloud Computing Client”, an implementation of the HTML/CSS/JS platform architected explicitly to support experimentation with extensibility. I then define two such extension mechanisms for HTML and for JS: overlays and aspects, respectively. I develop conflict analyses for HTML overlays, and evaluate them on a sample of Firefox extensions. Conflict analyses for JS are sketched, and extension mechanisms for CSS are left for future work.



download vcard icon
Email (essential):
Location (likely):
West Village H, Office 326
Post (possible):
Northeastern University
Khoury College of Computer Sciences
360 Huntington Ave, 2nd floor
Boston, MA 02115
work Lecturer Office 326