- 1 Presentation of the project
- 2 Zanshin's Context
- 3 User Stories
- 3.1 Inbox and base editing
- 3.2 Projects and task hierarchy basics
- 3.3 Complete base workflow
- 3.4 Base workflow convenience
- 3.5 Context basics
- 3.6 Context conveniences / Complete projects 1
- 3.7 Complete contexts 1 / Complete projects 2
- 3.8 Notes and tags basics
- 3.9 Complete notes/tags / Task advanced edition bases
- 3.10 Notes convenience
- 3.11 Workday view basics
- 3.12 Workday view convenience
- 3.13 Purge
- 3.14 Task advanced edition + Delegation
- 3.15 Navigation Convenience Behavior
- 3.16 Munich
- 4 Mockups
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, providing strong integration with KMail or KOrganizer. 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.
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.
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)
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 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 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
- 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 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
- 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
- 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.
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.
- As a user I want to sort by title, end-date, due-date, priority, degree of completion
Draft UI Mockups, not final.