User talk:Harikrishna: Difference between revisions

Page contents not supported in other languages.
From KDE TechBase
No edit summary
(added reference to Plasma::Context but can't explain it)
 
(23 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Dikku - the User Context framework ==
== Dikku - the User Context framework ==


This section is to track the discussions on the implementation of "User Context" in KDE. For a more general discussion of context in Nepomuk, [http://usercontext.opendfki.de/ check out here].  
This section is to track the discussions on the implementation of "User Context" in KDE. For a more general understanding of context in Nepomuk, [http://usercontext.opendfki.de/ check out here] for the basics and [http://dev.nepomuk.semanticdesktop.org/wiki/UserWorkContext here] for the details.


=== What is Context? ===
=== What is User Context? ===
Though there are numerous definitions of Context out there, we would like to refine the important aspects of context to
Though there are numerous definitions of Context out there, we would like to refine the important aspects of context to the aspects of "user context":


* what you are doing (activity),  
* what you are doing (activity),  
* where you are (location),  
* where you are (location),  
* who you are with (contacts), and  
* who you are with (contacts), and  
* what resources and devices are nearby...
* what resources and devices are relevant now...
 
In general, the meaning of the word "context" is not defined and talking about the word "context" in discussions is unfruitful. We are [http://www.springerlink.com/content/c1cw78ge9n6dvvhg/ Understanding Context Before Using It] and use the term "user context" deliberately, understanding it as "activity, location, contacts, and resources relevant to the work the user is doing at the moment".


=== Why Dikku? ===
=== Why Dikku? ===
Typically Desktop applications and widgets have been available as just normal tools which are in no way more "intelligent" than their physical counterparts (ok, apart from their ability to undo things ;)
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 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 things are becoming more mobile!!
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 ....
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 ....
Line 24: Line 26:
'''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 ?
'''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 adhoc grouping of apps and widgets for a purpose (like in virtual desktops) to projects (which have deadlines, tasks and resources).
'''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). Perhaps a little history can help here :
Activities in KDE have their existence based on 'virtual desktops', where user forms adhoc grouping of apps and widgets. We are currently planning to extend the concept to cover projects also, where user can just add deadlines, tasks and resources to an existing 'virtual desktop' (visually) and can use it as a project with associated apps, etc


=== Current Plans ===
=== Current Plans ===
Line 31: Line 34:
* the current activity the user is working on
* the current activity the user is working on
* the list of all currently known activities
* the list of all currently known activities
* the list of previously user-touched resources as indexed in soprano
* the list of previously user-touched [http://dev.nepomuk.semanticdesktop.org/wiki/PimoOntology PIMO] things as described [http://www.kdedevelopers.org/node/3382 here] in the PIMOShell
* geographical location of the user
* geographical location of the user
* whatever else we dream up ... =)
* whatever else we dream up ... =)
Line 37: Line 42:


* the creation of new activities
* the creation of new activities
* the association of resources with an activity
* the association of resources and things with an activity
 
 
The context framework could be implemented in three phases:
 
* [[/Phases/1 |Phase 1 : Focus on global context and user productivity]]
* [[/Phases/2/|Phase 2 : Focus on app-specific observers and knowledge reuse]]
* [[/Phases/3/|Phase 3 : Possibly introduce semi-AI things]]
 
== Overview ==
The Architecture of Dikku can be split into three major parts:
 
1. [[/Architecture/Data Model|Data Model]] - how the information is actually stored. We plan to use existing Nepomuk ontologies here
 
2. [[/Architecture/Learning Model|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. [[/Architecture/Interaction Model|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!
 
The main component where all three architecture parts come together will be a Dikku-usercontext daemon.
 
== Design ==
 
[[/Architecture/design decisions|The design decisions]] taken in this framework are listed in a separate page.




As [http://nepomuk.kde.org/ 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 [[/Nepomuk Links|related Nepomuk links]]
As [http://nepomuk.kde.org/ 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 [[/Nepomuk Links|related Nepomuk links]]


=== Relation to PIMO ===
The PIMO (Personal Information Model) of the user contains the relations between items (resources, things) on the desktop. There we store the relations between a task and related documents, people, topics, etc. Dikku will use these relations to suggest relevant things once a resource is touched by the user.
User interfaces that show "current related things" taken from Dikku should then allow the user to "save" these relations when shown. For example when I look at a mail "bug in dikku", Dikku suggest the mail is related to "Work on KDE" and has the Topic "Dikku project", I can "save" the relation between the task "Work on KDE" and "Dikku project". Saving the relations is not part of Dikku but of nepomuk-kde libs and stored in soprano using the PIMO vocab.
While PIMO cares for relations and topics of things, Dikku knows '''which things''' are relevant at the moment and can '''give suggestions'''.


The context framework could be implemented in three phases:
=== Relation to Plasma::Context ===
Unclear (for LeoSauermann) is the relation between Plasma::Context and Dikku, Aaron Seigo suggested: ''plasma defines which is the current activity and publishes that information. the rest of the activity nodes remain in Nepomuk.'' Could we get more on this?


* [[/Phase 1 : Focus on global context and user productivity|Phase 1 : Focus on global context and user productivity]]
=== Other Projects with interesting designs ===
* [[/Phase 2 : Focus on app-specific observers and knowledge reuse|Phase 2 : Focus on app-specific observers and knowledge reuse]]
[http://www.schemaweb.info/schema/SchemaDetails.aspx?id=205 '''MeNow'''] - describes a variety of aspects of the current status of someone, either online or off, in a way that the data can be easily aggregated or retrieved. Its [http://crschmidt.net/semweb/menow/index project page] tell more details!
* [[/Phase 3 : Possibly introduce semi-AI things|Phase 3 : Possibly introduce semi-AI things]]


== Overview ==
== Usecases ==
* [[/Usecases/activity changes|Changing focus when user switches activity]]
* [[/Usecases/location changes|Changing focus when user location changes]]
* [[/Usecases/Intelligent suggestions|Intelligent suggestions by the system]]
* [[/Usecases/Knowledge reuse|Knowledge reuse]]


The Architecture of Dikku can be split into three major parts:
== Similar Projects ==
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:


1. [[/Data Model|Data Model]] - how the information is actually stored. We plan to use existing Nepomuk ontologies here
=== [http://www.symonds.id.au/marcopolo/ Marcopolo for OSX] ===
Application that can be configured to trigger actions based on context, which is detected by hardware observation (usb activity, network)


2. [[/Learning Model|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)
The "location" and "activity" concept of Marcopolo maps to PIMO's classes pimo:Location and pimo:Topic and pimo:Task / pimo:Project, we use them to represent important locations.


3. [[/Interaction Model|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!
What we learn from Marcopolo:
* We should try to detect if thing (location, task) is in current context
* we should allow the user to trigger actions if a certain thing is in context


== Usecases ==
=== Scalable Fabric by MSR ===
* [[/Changing focus when user switches activity|Changing focus when user switches activity]]
The group around Mary Czerwinski from Microsoft Research (she is famous in HCI research) did several things in task and context management. Scalable Fabris is one of the older, simple appraoches:
* [[Changing focus when user location changes]]
* [http://research.microsoft.com/~marycz/AVI04-Fabric-final2.pdf  Scalable Fabric: Flexible task management (pdf)]
* [[/Intelligent suggestions by the system|Intelligent suggestions by the system]]
* [[/Knowledge reuse|Knowledge reuse]]


What we can learn (her abbridged conclusions)<br/>
"Windows in a central focus area behave as usual, while windows in the display periphery are scaled down minimized windows. Periphery windows can remain open and live. Task switching is accomplished by a single mouse click. Users prefer this approach to the standard TaskBar. Problem: it should replace the existing task bar."


== Similar Projects ==
There is later work by others, LeoSauermann has no time on 29.8.2008 to find it
Though we are not aware of any other context framework that ships with the desktop, there are a few applications which give a fair attempt at context-awareness. Some of them are listed below:


* [http://www.symonds.id.au/marcopolo/ Marcopolo for OSX]
=== More ===
* [http://www.cs.cmu.edu/~aura/ Project Aura] by Carnegie Mellon Univ. to model "a distraction-free Ubiquitous Computing" that offers personalized support to a user's activities at any location
* [http://plum.csail.mit.edu/ PLUM: towards lifetime user modeling] by CSAIL@MIT.
* [http://tasktop.com/ Tasktop Technologies]  As you work on a task, Tasktop automatically tracks the documents and web pages you access, showing you only the ones relevant to that task.
* [http://projects.csail.mit.edu/jourknow/ Jourknow] that associates your notes with contextual information, helps you organize scattered thoughts, and forwards your thoughts into the appropriate applications.

Latest revision as of 09:50, 1 September 2008

Dikku - the User Context framework

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 for the basics and here for the details.

What is User Context?

Though there are numerous definitions of Context out there, we would like to refine the important aspects of context to the aspects of "user context":

  • what you are doing (activity),
  • where you are (location),
  • who you are with (contacts), and
  • what resources and devices are relevant now...

In general, the meaning of the word "context" is not defined and talking about the word "context" in discussions is unfruitful. We are Understanding Context Before Using It and use the term "user context" deliberately, understanding it as "activity, location, contacts, and resources relevant to the work the user is doing at the moment".

Why Dikku?

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.

Terms Used

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). Perhaps a little history can help here : Activities in KDE have their existence based on 'virtual desktops', where user forms adhoc grouping of apps and widgets. We are currently planning to extend the concept to cover projects also, where user can just add deadlines, tasks and resources to an existing 'virtual desktop' (visually) and can use it as a project with associated apps, etc

Current Plans

Currently we plan to track the following information in Dikku:

  • the current activity the user is working on
  • the list of all currently known activities
  • the list of previously user-touched resources as indexed in soprano
  • the list of previously user-touched PIMO things as described here in the PIMOShell
  • geographical location of the user
  • whatever else we dream up ... =)

and allow for:

  • the creation of new activities
  • the association of resources and things with an activity


The context framework could be implemented in three phases:

Overview

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!

The main component where all three architecture parts come together will be a Dikku-usercontext daemon.

Design

The design decisions taken in this framework are listed in a separate page.


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

Relation to PIMO

The PIMO (Personal Information Model) of the user contains the relations between items (resources, things) on the desktop. There we store the relations between a task and related documents, people, topics, etc. Dikku will use these relations to suggest relevant things once a resource is touched by the user.

User interfaces that show "current related things" taken from Dikku should then allow the user to "save" these relations when shown. For example when I look at a mail "bug in dikku", Dikku suggest the mail is related to "Work on KDE" and has the Topic "Dikku project", I can "save" the relation between the task "Work on KDE" and "Dikku project". Saving the relations is not part of Dikku but of nepomuk-kde libs and stored in soprano using the PIMO vocab.

While PIMO cares for relations and topics of things, Dikku knows which things are relevant at the moment and can give suggestions.

Relation to Plasma::Context

Unclear (for LeoSauermann) is the relation between Plasma::Context and Dikku, Aaron Seigo suggested: plasma defines which is the current activity and publishes that information. the rest of the activity nodes remain in Nepomuk. Could we get more on this?

Other Projects with interesting designs

MeNow - describes a variety of aspects of the current status of someone, either online or off, in a way that the data can be easily aggregated or retrieved. Its project page tell more details!

Usecases

Similar Projects

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:

Marcopolo for OSX

Application that can be configured to trigger actions based on context, which is detected by hardware observation (usb activity, network)

The "location" and "activity" concept of Marcopolo maps to PIMO's classes pimo:Location and pimo:Topic and pimo:Task / pimo:Project, we use them to represent important locations.

What we learn from Marcopolo:

* We should try to detect if thing (location, task) is in current context
* we should allow the user to trigger actions if a certain thing is in context

Scalable Fabric by MSR

The group around Mary Czerwinski from Microsoft Research (she is famous in HCI research) did several things in task and context management. Scalable Fabris is one of the older, simple appraoches:

* Scalable Fabric: Flexible task management (pdf)

What we can learn (her abbridged conclusions)
"Windows in a central focus area behave as usual, while windows in the display periphery are scaled down minimized windows. Periphery windows can remain open and live. Task switching is accomplished by a single mouse click. Users prefer this approach to the standard TaskBar. Problem: it should replace the existing task bar."

There is later work by others, LeoSauermann has no time on 29.8.2008 to find it

More

  • Project Aura by Carnegie Mellon Univ. to model "a distraction-free Ubiquitous Computing" that offers personalized support to a user's activities at any location
  • PLUM: towards lifetime user modeling by CSAIL@MIT.
  • Tasktop Technologies As you work on a task, Tasktop automatically tracks the documents and web pages you access, showing you only the ones relevant to that task.
  • Jourknow that associates your notes with contextual information, helps you organize scattered thoughts, and forwards your thoughts into the appropriate applications.