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


