We envision a future where applications written by third-party developers are deployed on networks of common devices (e.g., TVs, thermostats, refrigerators). To accomplish this vision, modern "closed" devices must be "opened" both physically through communication hardware and logically through software interfaces. Developers also need a software infrastructure (i.e., middleware) that allows them focus on the problem to be solved an hides complex and mundane details like discovery, communication, etc.