At the moment, instant messaging is really quite limited. We have a global realtime network for tracking information about people and communicating with them, and yet we're still basically just rehashing concepts dating back to ICQ, or even earlier. By moving this information about people into the system, we can make better use of it. I can see two ways of doing this: First, a globally hotkeyed user interface for doing "things" with people. Quicksilver is the inspiration here. People would (ideally) be provided from a wide variety of sources: your address book, your buddy list, authors of documents on your computer, anywhere we could scavenge knowledge of a person from. Actions, similarly, would be flexible: SubEthaEdit could have a "start collaborating on a document with person x" action, while Adium and Mail would both provide "send a message to person x" (ideally it would decide which to use based on availability!). Other actions could include "start playing game y with person x", "find documents written by person x", and so on. Essentially the goal is to have the shortest possible path between deciding to involve another person in your work, and having done so. One of the tricky bits of the Quicksilver UI is deciding what to do with a given item you've looked up. You have to tab over to the second pane, then navigate a list of options without accidentally mistyping/clicking, since that will cancel the operation. One thing that a friend and I considered is having the initial hotkeyed 'person finder' UI then stick around as a floating person window which you could drag files to, etc... A student applying for this idea would be expected to provide lots of ideas, and preferably mockups or test applications. Fluid UI is absolutely critical if people are to be expected to integrate it into their workflows. Second, an abstraction layer for providing information about people to applications on the system. Adium has a powerful Applescript API as of version 1.2 (thanks Summer of Code!), but it's specific to Adium. For application adoption to truly take off, it needs to be possible to work with presence and contact information regardless of what program it's coming from. An reasonable goal would be to support Adium, Address Book, and iChat's InstantMessage.framework, along with a test application showing off the API in some useful fashion. Solid API design is the key skill for this one.