My Ph.D. work was on a system called Intermezzo, which was basically a toolkit designed to support “situationally-aware” applications. Collaboration, by definition, involves the participation of multiple people. These people don’t just exist in the “virtual” or computer-mediated world—they’re also situated in the work-a-day physical world. The context in which collaboration occurs necessarily affects how the participants interact with one another. Being cognizant of and participating in interactions with the physical world is even more important in computer-based collaboration than it is in “stand-alone” work: in solitary work we can typically just ignore “the system” when the physical world demands our attentions. In contrast, when working collaboratively, we must cope with the demands of the physical, not just on ourselves, but also on our collaborators. The situational context of the participants is typically not available to our applications (or, by extension, us). When it is available, it’s typically mediated through a video conference, or some other form which is not readily machine-parsable.
The goal with Intermezzo was to create an infrastructure that could represent user activity in a systematic, machine-parsable form. Intermezzo takes the approach that activity is the salient element of context, and codifies information about user activity in a way that applications, and the infrastructure itself, can take advantage of. Applications can use the information as a basis for providing awareness of the participants in a collaboration. More interesting, in my opinion, are the ways in which the infrastructure itself can use information about activity to provide higher-level services to applications. For example, Intermezzo provides a session management service to its applications that is based on detection of confluent activity. That is, collaboration is afforded by two people opening the same document at the same time, much as in the physical world. A real world analog is when you visit the library, and notice someone looking in the stacks nearby you, you are aware that the person is interested in a similar subject and have the opportunity (although not requirement) of interacting and collaborating with that person.
Security and privacy are obviously big issues when information about your activity is kept available and stored in a machine-parsable format. Intermezzo uses activity information as a means to control access to itself. Applications and users can specify access policies that dictate how the system will respond to requests for information about them. Unlike typical collaborative systems, many of which use the static notion of roles to establish access control groups, policies are extremely dynamic, and are based on the instantaneous state of the world at the time access is requested. So, for example, an access control policy could go beyond simply enumerating the members of my work group. Instead, it could define a set of access rights for people in my lab right now. Essentially, Intermezzo’s dynamic policies allow you to describe, rather than define, the members of an access control group. This description can be based on the state of the world, using the situational information provided by the system.
Here’s a little coffee table reading on Intermezzo:
(For a more complete list of my papers, go here.)