emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Manish <mailtomanish.sharma@gmail.com>
To: Bernt Hansen <bernt@norang.ca>
Cc: emacs-orgmode@gnu.org
Subject: Re: TODO state tracking in org-mode
Date: Sat, 22 Mar 2008 18:36:00 +0530	[thread overview]
Message-ID: <e7cdbe30803220606t69cd4c80o23955044a5009b66@mail.gmail.com> (raw)
In-Reply-To: <8763vfa9hl.fsf@legolas.norang.ca>

On Sat, Mar 22, 2008 at 5:57 AM, Bernt Hansen <bernt@norang.ca> wrote:
> Here's my attempt at documenting how I use task todo keywords and state
>  change tracking in org-mode.
>
>  * Some Background
>
>  I am a consultant who works with multiple clients doing programming and
>  system maintenance projects.
>
>  I have multiple org files which are in my org-agenda-files variable so
>  any tasks added to these end up in my agenda.  I live in the agenda.
>  Due to the number of tasks I have to work on the 'hot topics' end up
>  being scheduled so they are 'in my face' on the daily agenda until they
>  are completed.  Only when the agenda has no pending work to do for today
>  do I look for NEXT tasks to work on.
>
>  I typically have one org file per client with lots of projects and tasks
>  in it.  I archive completed projects/tasks monthly to de-clutter my org
>  files.  I throw lots of details into my org files so they tend to get
>  rather long.  Active Org files for clients are at least 1,000 lines long
>  normally; one of them is approaching 10,000 lines.  The archives are
>  bigger.
>
>  * Task States
>
>  I have a few different types of tasks in my org files.  They roughly
>  break down into the following groups with the keywords listed.
>
>   - Notes and documentation
>    (these don't get a todo keyword)
>   - Purchase Orders
>    - OPEN
>    - CLOSED
>   - Regular Tasks
>    - TODO
>    - NEXT
>    - DONE
>    - WAITING
>    - CANCELLED
>    - SOMEDAY
>    - ONGOING
>
>  Notes and documentation normally do not get a task todo keyword.  It's
>  just a heading level under some project which I use to help organize
>  things.
>
>  I use OPEN and CLOSED todo keywords for Purchase orders only -- these
>  aren't normal tasks where you do things and then they're done.  The
>  purchase order is OPEN as long as you can bill against it and CLOSED
>  after that.  This just feels more natural to me than TODO/DONE.
>
>  I use ONGOING for tasks that do not have a well defined start and end.
>  Things like org-mode tuning :), reading email, administrative tasks for
>  clients etc.  I clock everything (or try to) so when I find I'm working
>  on something that isn't project specific but is more about organizing
>  things for a client/project I start clocking the appropriate ONGOING
>  task until I move on to something else.
>
>  All of the remaining task states are for regular tasks.  Tasks normally
>  go TODO -> NEXT -> DONE.  But things in life rarely go according to plan
>  so a task will often go to WAITING status, or be postponed indefinitely
>  (to SOMEDAY), or be CANCELLED without being complete.
>
>  * Task State Change Logging
>
>  I normally use a Remember template to create new project tasks.  This
>  creates the new task with a TODO keyword and today's date as the date
>  the task came into existence.  Subtasks are created when outlining the
>  project and no dates are normally recorded when they are created.
>
>  For a given task I want to record things like the following:
>
>   - Why/What a task is waiting for when it goes to WAITING status
>   - When a task is complete
>   - When a task is cancelled
>   - When a task is reopened (it was complete but now has work to do again)
>   - When a task is finished waiting for something
>   - When a purchase order is opened or closed
>
>  * Setup
>
>  I use the following setup in my .emacs for org-mode tasks.  Since I have
>  multiple org files I don't want to duplicate the settings for every
>  file.  I use an identical setup for every org file I use so I define
>  these globally.  I hate maintaining duplicated definitions.
>
>  ,----[ .emacs settings ]
>  | (setq org-log-done t
>  |       org-use-fast-todo-selection t)
>  |
>  | (setq org-todo-keyword-faces
>  |       '(("TODO"  . (:foreground "red" :weight bold))
>  |       ("NEXT"  . (:foreground "red" :weight bold))
>  |       ("DONE"  . (:foreground "forest green" :weight bold))
>  |       ("WAITING"  . (:foreground "orange" :weight bold))
>  |       ("CANCELLED"  . (:foreground "forest green" :weight bold))
>  |       ("SOMEDAY"  . (:foreground "orange" :weight bold))
>  |       ("OPEN"  . (:foreground "red" :weight bold))
>  |       ("CLOSED"  . (:foreground "forest green" :weight bold))
>  |       ("ONGOING"  . (:foreground "orange" :weight bold))))
>  |
>  | (setq org-todo-keywords
>  |       '((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d!/!)")
>  |       (sequence "WAITING(w@/!)" "|" "CANCELLED(c!/!)")
>  |       (sequence "SOMEDAY(s!/!)" "|")
>  |       (sequence "OPEN(O!)" "|" "CLOSED(C!)")
>  |       (sequence "ONGOING(o)" "|")))
>  `----
>
>  Defining org-log-done to true tells org-mode to record a CLOSED: tag and
>  date/time stamp when a task is completed (either DONE, CANCELLED, or
>  CLOSED).  Moving the task back to an active todo state removes this tag.
>
>  org-todo-keyword-faces defines what colours to use for the various todo
>  keywords.  It's not strictly necessary but it's nice :)
>
>  org-todo-keywords defines the todo keywords and when extra information
>  should be recorded.  I only use sequence todo keywords. Keywords to the
>  left of the '|' are todo states and keywords to the right of the '|' are
>  done (completed) states in the sequence.  S-left and S-right cycles
>  through the states in the sequence.
>
>   - TODO(t) sets the key 't' to be the fast todo selection key for
>     this todo state.  Nothing special is recorded.
>   - WAITING(w@/!) defines the WAITING keyword with 'w' as a fast todo
>     selection key.  The '@' tells org-mode to record a note and a
>     date/time stamp when entering this todo state.  The '/!' tells
>     org-mode to also record a date/time stamp when leaving this state.
>   - OPEN(O!) sets the key 'O' to be the fast todo selection key for
>     this todo state and the '!' tells org-mode to record a date/time
>     stamp when entering this state.
>   - DONE(d!/!) sets the key 'd' to be the fast todo selection key for
>     this state.  The '!' before the '/' tells org-mode to record a
>     date/time stamp when entering this todo state and the '!' after
>     the '/' tells org-mode to record a date/time stamp when leaving
>     this state.
>
>  Here's the result of this logging on a sample task.
>
>  ** DONE New Sample Task
>       CLOSED: [2008-03-21 Fri 18:48]
>       - State "DONE"       [2008-03-21 Fri 18:48]
>       - State "NEXT"       [2008-03-21 Fri 18:47]
>       - State "DONE"       [2008-03-21 Fri 18:45]
>       - State "ONGOING"    [2008-03-21 Fri 18:44]
>       - State "WAITING"    [2008-03-21 Fri 18:34] \\
>         For Someone(tm) to finish Something(tm)
>       [2008-03-21 Fri]
>
>       1. This task was created on Friday Mar 21, 2008
>       2. It moved to WAITING status at 18:34 with a note that it's
>          waiting for Someone(tm)
>       3. It left WAITING status and went to ONGOING at 18:47
>          ONGOING doesn't normally record a timestamp but since
>          we're leaving the WAITING state a timestamp is recorded
>       4. Then it was DONE (we thought)
>       5. But it later moved to NEXT because we marked it DONE too early
>       6. And then it was finally completely DONE
>
>  ** CLOSED Sample Purchase Order
>           CLOSED: [2008-03-21 Fri 19:03]
>           - State "CLOSED"     [2008-03-21 Fri 19:03]
>           - State "OPEN"       [2008-03-21 Fri 19:03]
>
>  This setup works very well for me.  I'm sure it can still be improved
>  but I thought I'd share it with the rest of you in case you find it
>  useful.
>

Great!  I picked up a few ideas.  Thanks for sharing.

It would be even better if you could also share your remember
templates setup and OS and version information.

-- Manish

  reply	other threads:[~2008-03-22 13:06 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-22  0:27 TODO state tracking in org-mode Bernt Hansen
2008-03-22 13:06 ` Manish [this message]
2008-03-23  1:46   ` Bernt Hansen
2008-03-23  4:52     ` Manish
2008-03-23 11:28       ` Bernt Hansen
2008-03-23 12:50         ` Carsten Dominik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e7cdbe30803220606t69cd4c80o23955044a5009b66@mail.gmail.com \
    --to=mailtomanish.sharma@gmail.com \
    --cc=bernt@norang.ca \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).