These days I am invariably at odds with Ben’s take on ubiquitous computing and related issues, and the trend seems likely to continue.
In On Context, Ben argues that we still don’t have a clear understanding of what context, among other terms, means. Come off it, really. We’ve known what context means for centuries, and what it means within computer science for decades (which, when one looks at it, is not substantially different from what it means in the ordinary world). John McCarthy, helped to formalize context over a decade ago – a remarkable feat, and one that would be all the more remarkable if the meaning of context was still unclear at that time. McCarthy has also looked at formalizing common sense, a term that I believe is much harder to define than context. The problem is no longer figuring out what context is or what it means, it is understanding how to monitor (sense) it, model it, derive it, and use it to do something sensible even in the face of imperfect information. These are hard problems, and it strikes me as a distinct possibility that people are still talking about what context is because they are avoiding the difficult problems involved with utilising it. Not only do we already know what context is, we know what it is useful for; all you have to do is observe the way in which a typical conversation proceeds between two people and see how they fill in the blanks in the absence of explicit information. Or, the next time you see a person standing in the middle of an intersection wearing a blue uniform and waving their hands about in various ways, observe the way in which you and other motorists respond. It is unlikely that any motorist would make a call to the nearest hospital for the mentally ill. But if you saw a similarly dressed person making those gestures in the middle of a football field, that phone call might be made. Why? Context is the element that allows us to differentiate between these two scenarios or situations. In the words of Dey:
Context is any information that can be used to characterize the situation of an entity. An entity is a person, place, or object that is considered relevant to the interaction between a user and an application, including the user and applications themselves.
So how does an application decide what is relevant, without being pre-configured with a static set of entities that the programmer/administrator/user has deemed to be relevant to the scenarios in which the application will be used? Now there’s a real research problem. I think this is the gist of what the IFTF article to which Ben refers was getting at – that context is mutable and hard to track, not that the term itself is hard to define.
The meaning of context, I think, is well understood, and the fact that there are many slightly different definitions of context floating around in computer science does not imply otherwise, just as there are many ways of describing the term "light-bulb". So I have no hesitation in adding another definition to the mix. This definition approaches context from a more functional point of view:
Context is the implicit environmental parameter that can be used to disambiguate a statement or an action.
That goes for statements made in natural languages and programming languages. For instance, in an application, we may wish to send a message to somebody. Perhaps the only formal parameter provided by the user is the contents of the message. It is then up to the application to figure out who the message is supposed to be sent to and how that message is supposed to be sent. As mentioned above, knowing what information is relevant to the decision making process, and then actually utilising this information is the tricky part.
Context has been defined to death, and just in case it wasn’t dead already, I made sure by throwing another definition at it. The last thing we need is more papers purporting to confer a better understanding of context unto the computer science community. What is needed are solutions to the problems of modelling, incomplete information, filtering, scaling and the derivation of context information from existing context information. Basically we need to figure out how to remove the current limiting factors so that it can be applied more generally and with predictable results that make sense to the user.