This section is to track the discussions on the implementation of "User Context" in KDE. For a more general understanding of context in Nepomuk, check out here.
Though there are numerous definitions of Context out there, we would like to refine the important aspects of context to
Typically, Desktop applications and widgets have been available just like normal tools which are in no way more "intelligent" than their physical counterparts (ok, apart from their ability to undo things ;) in that they just do exactly what the users tell them to (of course, bugs don't count here!). Nothing less, nothing more!
They have been heaped with loads of functionality which just adds to the clutter the user is already facing with the growing information-overload. They do nothing more that will help the user to reduce his overload, apart from what he tells them to do. So, something has to be done to tackle this now, when information overload is increasing and things are becoming more mobile!!
Continuing the passion for desktop innovation with KDE, we want to induce in our apps the "intelligence" to adjust themselves to the work the user is currently doing. Hence ....
Dikku is a new user context framework that exposes the current user activity and location to both plasma widgets as well as other applications, thus enabling them to adjust themselves to the user's needs.
Dikku means direction in Tamil; when we get lost we generally establish context of where we are based on direction. Currently when we are lost in information, we could look forward to Dikku for assisting us ;) So, I think the name fits. Any suggestions ?
Activities are a "more casual" term for things that range from organized content like projects (which have deadlines, tasks and resources) to adhoc grouping of apps and widgets for a purpose (like in virtual desktops).
Currently we plan to track the following information in Dikku:
and allow for:
The context framework could be implemented in three phases:
As Nepomuk project has already handled the bulk of work by doing a lot of research in this area, we can just reuse whatever is possible from them (the beauty of open source !)... Check out related Nepomuk links
The design decisions taken in this framework are listed in a separate page.
The Architecture of Dikku can be split into three major parts:
1. Data Model - how the information is actually stored. We plan to use existing Nepomuk ontologies here
2. Learning Model - how the system observes the user, understands what he is doing and learns to suggest things to the user and other interested agents (apps and widgets)
3. Interaction Model - how the interested agents adjusts themselves according to the system suggestion; and how the user deals the system and possibly corrects its assumptions to start getting results!
Though we are not aware of any other context framework that ships with the desktop, there are a few projects which give a fair attempt at context-awareness. Some of them (with downloadable code) are listed below: