Monthly Archives: August 2008

Building Distributed Applications with Recompilers

(Cross-posted from my work blog)

My article Volta: Developing Distributed Applications by Recompiling (co-authored with Brian Beckman and Benjamin Livshits) is now available in the Software Development Tools issue of IEEE Software (September/October 2008).

Here’s the abstract:

Mainstream languages and tools are tailored for sequential, non-distributed applications, with support for distributed computing provided only in library APIs. Such programming environments force developers to make decisions about “where-code-runs” early in the application lifecycle, structuring the entire application around partitioning decisions. Performance measurement may reveal that the original partitioning was wrong, but redistributing the application is expensive because redistributing is restructuring. We built a new kind of tool suite that recompiles executables into distributed form based on declarative user annotations, inserting most of the necessary remoting and synchronization boilerplate code, and facilitating post-hoc instrumentation to drive quantitative redistribution. Since the tools operate on the intermediate language CIL, they are compatible with a wide variety of .NET programming languages and eventual execution environments, even those that do not support .NET CIL directly, such as JavaScript.


Web 2.0 and Generativity

Earlier today on the Microsoft Campus in Redmond I attended a talk by Jonathan Zittrain. This was a timely talk since about a month ago I finished reading his book The Future of the Internet (and How to Stop it)–mentioned first in my previous blog post Services Without Borders. Today’s talk, focused on Civic Technologies, was interesting and engaging–e.g., referring to email as the shared hallucination application, and bringing up Sturgeon’s law. He covered some of the topics discussed in the book, including generativity in the context of Web 2.0.

The book identifies Web 2.0 as one of the trends towards limiting generativity. I didn’t agree with this perspective while reading the book, and as it came up today what better way of revisiting it than talking to the author? As Jonathan gracefully signed a sticker that’s now glued to my copy of the book I asked for a few examples that illustrate how Web 2.0 hampers generativity. He offered a couple, explaining how forcing developers to use a unique key in their programs does just that.

Jonathan makes a good point: many of the sites that provide snippets to be mashed up elsewhere do require unique developer keys. However, as the echoes of the Web 2.0 workshop I organized recently haven’t faded completely in my head, his explanation involves an implicit assumption about the Web 2.0 platform. What is this platform?

  • If you assume that the platform resides on top of providers that require unique developer keys, the mechanism for controlling (and even disabling) generativity is indeed embedded within the Web 2.0 fabric.
  • If you assume that the Web 2.0 platform resides on top of DHTML + HTTP, the access through developer keys resides on a different, higher layer that could be bypassed thus does not hamper generativity.

Now I understand what frame of reference Jonathan used when he pointed his finger at Web 2.0, and thus the reason for my disagreement.