Righting Web Development

15 May
Monday, 05/15/2017 1:00pm to 3:00pm
Computer Science Building, Room 151
Ph.D. Dissertation Proposal Defense
Speaker: John Vilk

"Righting Web Development"

Every day, billions of people use browsers to access the web from a variety of devices. Unfortunately, it remains difficult to write, debug, and optimize the client-side of web applications because the browser presents a challenging environment for software development. The browser environment limits the utility of conventional development tools and prevents developers from re-using code written in arbitrary programming languages.

The browser environment is unique because it deeply enmeshes web applications with their UI, which they interact with through a complex, concurrent, and high-level API that forces event-driven execution. Event-based concurrency obscures an application's control flow, introduces nondeterminism that complicates debugging, and makes it difficult to reason about an application's performance. Memory leaks are common in web applications because their state is split between JavaScript and the UI, and each side may hold on to references in the other. Developers are unable to reuse code written in conventional programming languages because the browser exposes unfamiliar and incompatible abstractions for a variety of common tasks. Developers struggle with all of the above issues, but are stuck with conventional development tools that provide little or no assistance.

This dissertation revisits web development and provides developers with a complete set of development tools with full support for the browser environment. ReJS makes time-traveling debugging practical in the browser, and lets developers debug both the application and its GUI during time-travel; components of this work shipped in Microsoft's ChakraCore. I propose BCoz, which automatically identifies optimization opportunities in concurrent web applications and presents developers with actionable speedup curves that quantify the impact of an optimization on the program's performance. I also propose a technique for automatically detecting, locating, and isolating memory leaks in web applications, which leverages properties of the unique browser environment. Doppio lets developers run code written in conventional languages in the browser, and Browsix brings Unix into the browser to enable unmodified programs expecting a Unix-like environment to run directly in the browser. Together, these five systems form a solid foundation for web development.

Advisor: Emery Berger