Zanshin

From KDE Community Wiki
Revision as of 14:31, 23 January 2016 by Franck (talk | contribs)

Presentation of the project

Zanshin is trying to provide a software support for the "Getting things done" approach of David Allen. It integrates very well in the KDE environment using Akonadi as a main back-end to store you personal information. Zanshin is targeting tasks management, but in order to provide a note management aspect, Renku, a standalone application is born along the development process. Both are complementary and help the user to keep track of his todo's activities.

Reference : https://en.wikipedia.org/wiki/Getting_Things_Done

Zanshin's Context

Context is a meta-data concept. Since todos/tasks can be related, for instance, to a specific project, it would be nice to express this semantic link : that's where Context rises up. You, as a user, will be able to link any kind of context name to a todo helping you to organize and give the semantic you want them to have.

Akonadi Backend : The context concept is stored into akonadi through the Akonadi Item Tag. An item holds a list of Tag that have a name and can be from diffents type. As a convention, a tag related to the type "zanshin-context" would be zanshin related, its name, that will be displayed to the user, will depend on what the user as set.

User Stories

Requirements for Zanshin in the User-Story format, sorted by priority.

Inbox and base editing

  • display the inbox in order to see the notes and task which need to be orginazed (e.g. any task or note not associated to any project, context or tag) : Done
  • create task by typing a title in the Inbox in order to collect ideas while reflecting on my life : Done
  • mark a task as completed in order to have a warm feeling about getting it done : Done
  • delete a simple task so it is removed in order to clean old useless tasks : AT to do
  • modify the due date in order to know when the task has to be completed : Done

Projects and task hierarchy basics

  • Select project to see the notes and tasks it contains : Done
  • Create project : Done
  • Associate a task to a project (associated to only one project)  : Done
  • Associate a task to a task ( only one parent task ) : Done ( side-effect : see reflexive linking )

Complete base workflow

  • Dissociate a task from a project (get back in inbox) : Done
  • deleting parent task with all its children set in order to clean old useless tasks, in such case the user will be warned : AT to do
  • Filter out tasks which do not match by title nor text in order to find specific tasks : AT to do
  • can visually distinguish critical tasks that have past the due date with a different aspect in order to have them stand out : AT to do ?

Base workflow convenience

  • create a task from Krunner by typing a title in order not to forget the current idea I'm having.  : Done (no AT possible)
  • create task by typing its title in a project area in order to refine my project steps : Done
  • modify a title of a task in order to fix a typo or refine its definition : Done
  • can see tasks that need to be done for today with a different aspects in order to have them stand out : Done (no AT possible)

Context basics

  • Select a context in order to see all its associated tasks : Done
  • Create a context  : Done
  • Display the Context view in order to see all existing contexts : Done
  • Associate a task to a context in order to describe the task resources (can be a person) : Done

Context conveniences / Complete projects 1

  • create task by typing its title from the context view in order to add faster a task associated to a context  : Done
  • Delete project ( delete all its content )  : Done

Complete contexts 1 / Complete projects 2

  • Delete a context (if a task isn't associated with any context or project, it is not deleted but sent to the inbox) : Needs Attention (see etherpad)
  • Rename a project : Done
  • Dissociate a task from a context in order to fix a mistake : Done
  • Dissociate a task from a project (associated to only one project) : AT to do
  • Rename a context : Done

Notes and tags basics

  • Display the tag view in order to see all exisiting tags  : Done
  • Associate a task to a tag in order to organize knowledge  : Done
  • Select a tag in order to see all its associated artifacts : Done
  • create note by typing a title from the Inbox in order to collect knowledge : TODO
  • Create a tag : Done

Complete notes/tags / Task advanced edition bases

  • modify the text of the task in order to save details about a task or add additional information : AT Tdo
  • modify a text of the note in order to save details about a note or add additional information : TODO
  • Delete a tag (if a note isn't associated with any tag or project, it is not deleted but sent to the inbox) : TO DIG, franck on it

Notes convenience

  • create an note by typing its title in a tag area in order to organize personal knowledge around this tag
  • Dissociate a note from a tag in order to fix a mistake
  • modify a title of a note in order to fix a typo or refine its definition

Workday view basics

  • display a workday view (start date or due date in the past) in order to know what I'm supposed to do : Done
  • modify the start date of tasks for today in order to have them plan from today (today view for instance) : AT to finish (in workday-starbutton.feature)

Workday view convenience

  • Modify the start date of a task in order to schedule it for a given day : Done
  • Filter out task with a start in the future in order to focus on what I should work on now : To Do
  • Filter out completed task views in order to focus on what is remaining only : To Do

Purge

  • purge all completed task in order to clean my tasks lists

Task advanced edition + Delegation

  • modify the progress information of a task in percent in order to roughly know how much work is left
  • modify the duration information of a task in order to give a estimation on this workload
  • Can propose to someone a task delegation in order to offload work to someone else
  • task get associated to a context corresponding to a person
  • notification got sent to the person
  • Technical story : Given a delegated task, when it gets modified the notification is sent to the relevant user

Navigation Convenience Behavior

  • Able to give focus to available page to move from on to an other easily (eg : alt + up)
  • Drag and drop dialog from a task selection to move it without using the mouse (as "m" of Kmail) + filtering
  • Navigation dialog to change view without clicking / moving the mouse (as "J" of Kmail) + filtering

Munich

Delegation

  • As a user I want to delegate a task to another user.
  • As a user I want to monitor progress of a delegated task (The progress updates are handled by iTip already).
    • As a user I want to see tasks that I assigned to someone but have a visual distinction that I don't have to act on them directly.
  • (As a user I want to accept or decline a task that was assigned to me.) => This is handled by kmail

Folder selection (same for notes and todos)

  • As a user I want to see tasks in a selected folder
  • As a user I want to see tasks from multiple selected folders
  • As a user I want to maintain a list of visible although not necessarily selected folders, so I can quickly enabled the folders as required.
  • As a user I want to search for new folders to enable, that will then appear in my folder list.
  • As a user I want to remove folders from my currently visible list.
  • As a user I want to create new folders
  • As a user I want share my folders with other users
  • As a user I want to see to whom a shared folder belongs.

Tags/Contexts

While contexts are tags too, we also need plain tag support. This is to have a uniform tagging mechanism accross email and calendaring objects. I'm going to refere to a tag of type "context" with context and to a tag of type "PLAIN" with tag. For tags I think filtering only is sufficient. Note that plain tags have no hierarchy.

  • As a user I want to filter tasks and notes by tag/context.
  • As a user I want to assign tags/contexts to todos/notes.
  • As a user I want to create new tags/contexts.

Sorting

  • As a user I want to sort by title, end-date, due-date, priority, degree of completion

Mockups

Draft UI Mockups, not final.

Mockups by Björn Balazs

File:20120212 ZenshinMockup.ep.zip

Mockups by Christian Mollekopf

File:Cmollekopf zanshinmockup 30 5 2014.ep.zip