The recent Mac Developer Roundtable podcast featured a good deal of information and discussion of context-sensitive interfaces and applications on the Mac platform (start listening around 50:00). I was surprised to hear one of the panel members, David Symonds, talk about a product on the Mac that sounded extremely similar to my own work. I feared that I’d reinvented the wheel and someone had build what I wanted before I even realized it.
The product in question is MarcoPolo, a context-sensing application that uses sensors to detect the user’s “context” and take actions accordingly. The interface design is eerily similar to my own and there is quite a deal of overlap of functionality between the two apps. However, there are a few significant differences:
1. MarcoPolo uses a rule-based system to make sense of observations. MarcoPolo does not learn from user-provided labels, but relies upon the user to define rules that define a given context. Genkanban uses an ID3 decision tree (or a naive Bayes classifier) to accomplish the same goal.
2. MarcoPolo seems to have a more system-oriented action functionality than Genkanban. Recall that Gankanban can initiate an arbitrary action using either distributed notifications (and listening apps) or executing AppleScripts on context changes. MarcoPolo includes a number of specific actions that are oriented toward configuring the local system for the new context. This includes setting up the network, configuring the default printer, etc. MarcoPolo includes a ShellScript action type that allows shell scripts to be executed on context changes. This can conceivably encompass Genkanban’s AppleScript functionality. (Update: ActionScripts can be directly executed using the “Open” action.)
3. MarcoPolo seems oriented toward the idea that location is largely the same as context. Genkanban takes a bigger picture view and explicitly looks at location, activity, and social contexts as discrete elements of context. This finer-grained formulation allows Genkanban to take specific actions based on changes in the specific components. For example, I only care about activity when updating my Adium status message. I probably only care about location when deciding whether to activate the system screensaver.
That said, both Genkanban and MarcoPolo are more similar than different. The way I see things, components like Genkanban’s machine learner can be replaced with MarcoPolo’s rule-based system without much fuss (and vice versa). Genkanban’s sensors work much like MarcoPolo’s, and there’s probably no good reason that a common sensor interface couldn’t be be written so both systems’ sensors are interchangeable. I couldn’t tell if MarcoPolo is issuing distributed notifications on context changes, but this may be another element that can be standardized.