15 October 2009

What is "Context-Aware Computing"?



Market analysts Gartner, Inc. recently published some research on the subject of "context-aware computing". Perhaps their recommendations were a little opaque to those not already versed in the topic (a common problem with market analysts' findings), since a question popped up today on LinkedIn Answers asking what exactly context-aware computing is.

I gave a short and, I hope, helpful response on that forum; but the subject interests me so I thought I'd expand on it here. The barrel of monkeys with keyboards at Wikipedia has an article on context-aware computing; you can read that at your leisure, it's not bad. Here's my synopsis:

Context-aware computing is at its core the idea of systems that take the user’s environment into account. By the user’s environment I mean such things as the user’s:

  • geographic location
  • presence information (such as online/offline availability and status)
  • social-networking information and preferences
  • interaction and communications preferences
  • privacy preferences
  • device type (mobile/laptop/etc.)
  • and, really, any other data which corresponds to the current state associated with that user.
Context-aware computing can take advantage of all these factors when delivering the user experience. Systems can attempt to make the experience optimal even when the user is accessing different applications from different devices, different locations, different browsers, and so forth. Context-aware computing can make apps better suited to the needs and desires of the individual users.

Without context, user experience can be very fragmented across apps, systems, and devices. Applications can behave generically for users. Non-context-aware applications may make no allowances for how the user is accessing, where the user is located while accessing, and what is happening in the physical and social world around the user.

Over the past few years, we have certainly been beginning to see context-aware applications in the consumer world, especially in social networking. The next wave of support could be in enterprise apps. Examples that are well-suited in the enterprise include call centers, customer services, and collaboration apps, and access control. This last area is where my own work in context-sensitive computing has been. By examining details such as a user's location, time of day, trust level, device type, computer state, etc., in addition to standard access privileges, a system can make more rational -- and more secure -- decisions about what level of system access to actually grant a user.

There are some challenges to implementation of this concept. We need to figure out just how to obtain this context data and share it with the applications.  We also need to consider trust and privacy – can we deliver context-aware systems while securely maintaining trust and without compromising users’ privacy?

Many of the elements of context-aware computing have been around for decades; Gartner predicts that they have now achieved a critical mass and will become a core part of applications in the near-to-medium future. This makes sense to me: context-aware computing seems to be intimately connected with the related trends of social networking and cloud computing. The three aren't the same things, of course, but there is a symbiotic relationship among them.

Remember, this is what we humans do all the time: we adjust our interactions based on the context of the situation we find ourselves in -- and that context includes other people. We use different vocabularies and different tones of voice with different audiences; we adjust how loud our voice is based on the ambient environment; we use titles of respect and manners of behavior in situations where they are expected. By integrating this concept into human-computer interactions we can make them more natural, more useful, and more flexible.