Designing for Extensibility and Planning for Conflict: Experiments in Web-Browser Design
Abstract
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.
Links
- Full text:
- Presentation:
- html
- Project page:
- available here
Contact
- Email (essential):
- (first initial + last name) {at} ccs.neu.edu
- Location (likely):
- West Village H, Office 326
- Post (possible):
-
Northeastern University
Khoury College of Computer Sciences
360 Huntington Ave, 2nd floor
Boston, MA 02115