emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Is OrgMode really GTD compliant?
@ 2014-04-27 20:51 Rene
  2014-04-28  0:21 ` Richard Lawrence
  0 siblings, 1 reply; 10+ messages in thread
From: Rene @ 2014-04-27 20:51 UTC (permalink / raw)
  To: emacs-orgmode

According to David Allen, whenever you define an action you need to
assign three pieces of information that you will later use as criteria
to decide what to do (in order of precedence):

 1. Context: Where should I be (@home, @work, etc.) and/or which tools
    should I have at my disposal (@computer, @internet, etc.) to do
    this action?
 2. Time needed: Which amount of time available must I have to do
    this action?
 3. Energy needed: How wasted/fresh can I be to do this action?

Then, when you're up for executing an action, you use "context", "time
available", and "energy available" as a sieve to sift out what can be
done. Only after you've looked at these three can you determine what
is the priority for right now, the present moment.

From the Getting Things Done perspective you don’t want to assign
“priority” to action items on the front end because as soon as the
situation changes and a couple of variables shift, as they are
guaranteed to do, it will alter the array of possibilities. So lots of
the action items you have rated at given priority levels are going to
change. And when they do, then you’re busy re-prioritizing all those
items.

This is why David Allen, states that "The `ABC' priority codes don’t work."

GTD suggests that priority makes a lot more sense to assess when you
know the complete "context+time available+energy available" of the
given moment.

Orgmode helps you capture
 - the context: by means of tags,
 - the time needed: by means of an "effort" property,
 - the ABC priorities: by means of cookies.

One notices:
 1) Orgmode offers a default implementation for priorities although
    this fourth criteria should not formally be dealt with according
    to GTD.
 2) The "energy" criteria is absent
 3) The word "effort" is misnamed as it reminds more of an energy
    measure than a duration.

Has anyone tried to customize orgmode so as to make it really GTD compliant?

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Is OrgMode really GTD compliant?
  2014-04-27 20:51 Is OrgMode really GTD compliant? Rene
@ 2014-04-28  0:21 ` Richard Lawrence
  2014-04-28 17:18   ` Rene
  0 siblings, 1 reply; 10+ messages in thread
From: Richard Lawrence @ 2014-04-28  0:21 UTC (permalink / raw)
  To: emacs-orgmode; +Cc: Rene

Hi Rene,

Rene <jlr_0@yahoo.com> writes:

> According to David Allen, whenever you define an action you need to
> assign three pieces of information that you will later use as criteria
> to decide what to do (in order of precedence):
>
>  1. Context: Where should I be (@home, @work, etc.) and/or which tools
>     should I have at my disposal (@computer, @internet, etc.) to do
>     this action?
>  2. Time needed: Which amount of time available must I have to do
>     this action?
>  3. Energy needed: How wasted/fresh can I be to do this action?
>
> Then, when you're up for executing an action, you use "context", "time
> available", and "energy available" as a sieve to sift out what can be
> done. Only after you've looked at these three can you determine what
> is the priority for right now, the present moment.
> ...
> Orgmode helps you capture
>  - the context: by means of tags,
>  - the time needed: by means of an "effort" property,
>  - the ABC priorities: by means of cookies.
>...
> Has anyone tried to customize orgmode so as to make it really GTD
> compliant?

I am not really familiar with the official GTD methodology, and I don't
know exactly how you would normally represent the "energy needed"
associated with a task, but here's a suggestion.

It occurs to me that you could just use the A/B/C priority cookies to
represent energy levels, since you don't want to use them to encode
priorities.  Something like:
  #A: need to be fresh
  #C: can be wasted
  #B: everything else
or whatever would work for you.  If that's granular enough to represent
your energy-needed levels, then it's a neat hack that requires zero
customization.  Sorting and filtering by energy needed is then already
built into the agenda functions, etc.  Just think "energy needed"
whenever Org says "priority" (which isn't very often), and you're good
to go.

-- 
Best,
Richard

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Is OrgMode really GTD compliant?
  2014-04-28  0:21 ` Richard Lawrence
@ 2014-04-28 17:18   ` Rene
  2014-04-29  6:51     ` Alan Schmitt
  0 siblings, 1 reply; 10+ messages in thread
From: Rene @ 2014-04-28 17:18 UTC (permalink / raw)
  To: emacs-orgmode

Richard Lawrence <richard.lawrence <at> berkeley.edu> writes:
> I am not really familiar with the official GTD methodology, and I don't
> know exactly how you would normally represent the "energy needed"
> associated with a task, but here's a suggestion.
> 
> It occurs to me that you could just use the A/B/C priority cookies to
> represent energy levels, since you don't want to use them to encode
> priorities.  Something like:
>   #A: need to be fresh
>   #C: can be wasted
>   #B: everything else
> or whatever would work for you.  If that's granular enough to represent
> your energy-needed levels, then it's a neat hack that requires zero
> customization.  Sorting and filtering by energy needed is then already
> built into the agenda functions, etc.  Just think "energy needed"
> whenever Org says "priority" (which isn't very often), and you're good
> to go.

That's exactly what I've been doing so far.  But that's not that convenient.
 The energy level appears in front of the action headline.  This adds noise
to the real action info.

I think I'll have to make the "Energy Level" an orgmode property that
appears in the :PROPERTIES: drawer of the action.

I'm not used to defining new properties in orgmode.  I'll try to define an
"Energy" property as well as functions like "org-agenda-cmp-user-defined" in
order to correctly use "org-agenda-sorting-strategy", unless someone has
already done so...

--

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Is OrgMode really GTD compliant?
  2014-04-28 17:18   ` Rene
@ 2014-04-29  6:51     ` Alan Schmitt
  2014-04-29 10:30       ` Samuel Loury
  0 siblings, 1 reply; 10+ messages in thread
From: Alan Schmitt @ 2014-04-29  6:51 UTC (permalink / raw)
  To: Rene; +Cc: emacs-orgmode

Hi,

On 2014-04-28 19:18, Rene <jlr_0@yahoo.com> writes:

> I'm not used to defining new properties in orgmode.  I'll try to define an
> "Energy" property as well as functions like "org-agenda-cmp-user-defined" in
> order to correctly use "org-agenda-sorting-strategy", unless someone has
> already done so...

I have not defined an Energy property, but I recently played with date
properties (and a user defined sorting function). If it's helpful to
you, the code is there:
https://github.com/brabalan/org-review/blob/master/org-review.el#L156

Alan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Is OrgMode really GTD compliant?
  2014-04-29  6:51     ` Alan Schmitt
@ 2014-04-29 10:30       ` Samuel Loury
  2014-04-29 10:49         ` Alan Schmitt
  0 siblings, 1 reply; 10+ messages in thread
From: Samuel Loury @ 2014-04-29 10:30 UTC (permalink / raw)
  To: Alan Schmitt, Rene; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 2562 bytes --]

Hi,
Alan Schmitt <alan.schmitt@polytechnique.org> writes:

> On 2014-04-28 19:18, Rene <jlr_0@yahoo.com> writes:
> I have not defined an Energy property, but I recently played with date
> properties (and a user defined sorting function). If it's helpful to
> you, the code is there:
> https://github.com/brabalan/org-review/blob/master/org-review.el#L156
I looked at the code and I don't get what means the part of the code
getting the org-marker text property of a:
--8<---------------cut here---------------start------------->8---
(get-text-property (point-min) 'org-marker a)
--8<---------------cut here---------------end--------------->8---
In this part, the point-min returns the point-min of the current buffer
(the agenda buffer in that case) while the function looks for the
property into a.

I tried launching this code into a custom agenda compare function and I
get the error:
--8<---------------cut here---------------start------------->8---
Args out of range: 1197, 1197
--8<---------------cut here---------------end--------------->8---
This makes sense since the agenda appears to be narrowed at that time so
that (point-min) returns 1197 and the a string at this time is not 1197
characters long.

Replacing (point-min) by 0 appears to work (I assumed the 0th character
of the string has the wanted text property).

My first guess of an energy cmp function is:

--8<---------------cut here---------------start------------->8---
(defun org-energy-compare (a b)
  (let* (
		 (ma (or (get-text-property 0 'org-marker a)
				 (get-text-property 0 'org-hd-marker a)))
		 (mb (or (get-text-property 0 'org-marker b)
				 (get-text-property 0 'org-hd-marker b)))
		 (energy_a (org-entry-get ma "Energy"))
		 (energy_b (org-entry-get mb "Energy"))
		 )
	(cond
	 ((and
	   (not energy_a)
	   (not energy_b)
	   )
	  nil
	  )
	 ((and
	   energy_a
	   (not energy_b)
	   )
	  1
	  )
	 ((and
	   (not energy_a)
	   energy_b
	   )
	  -1
	  )
	 ((> energy_a energy_b)
	  1
	  )
	 ((< energy_a energy_b)
	  -1
	  )
	 (t
	  nil
	  )
	 )
	)
  )
--8<---------------cut here---------------end--------------->8---

Incidentally, I don't manage to have edebug triggered in a custom org
agenda cmp function. I load the function with C-u C-M-x. the message
"Edebug: org-energy-compare" appears as usual. When I launch the agenda
I can see the function has been called since the entries are correctly
sorted. But I was never given the input to debug it. Do you know why?

--
Konubinix
GPG Key    : 7439106A
Fingerprint: 5993 BE7A DA65 E2D9 06CE  5C36 75D2 3CED 7439 106A

[-- Attachment #2: Type: application/pgp-signature, Size: 472 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Is OrgMode really GTD compliant?
  2014-04-29 10:30       ` Samuel Loury
@ 2014-04-29 10:49         ` Alan Schmitt
  2014-04-29 13:26           ` Samuel Loury
  0 siblings, 1 reply; 10+ messages in thread
From: Alan Schmitt @ 2014-04-29 10:49 UTC (permalink / raw)
  To: Samuel Loury; +Cc: emacs-orgmode, Rene

Hi Samuel,

On 2014-04-29 12:30, Samuel Loury <konubinix@gmail.com> writes:

> Hi,
> Alan Schmitt <alan.schmitt@polytechnique.org> writes:
>
>> On 2014-04-28 19:18, Rene <jlr_0@yahoo.com> writes:
>> I have not defined an Energy property, but I recently played with date
>> properties (and a user defined sorting function). If it's helpful to
>> you, the code is there:
>> https://github.com/brabalan/org-review/blob/master/org-review.el#L156
> I looked at the code and I don't get what means the part of the code
> getting the org-marker text property of a:
> (get-text-property (point-min) 'org-marker a)
> In this part, the point-min returns the point-min of the current buffer
> (the agenda buffer in that case) while the function looks for the
> property into a.
>
> I tried launching this code into a custom agenda compare function and I
> get the error:
> Args out of range: 1197, 1197
> This makes sense since the agenda appears to be narrowed at that time so
> that (point-min) returns 1197 and the a string at this time is not 1197
> characters long.
>
> Replacing (point-min) by 0 appears to work (I assumed the 0th character
> of the string has the wanted text property).

I used to have `1' instead of `point-min', but I changed it following
a suggestion from Bastien
(http://thread.gmane.org/gmane.emacs.orgmode/85217/focus=85241).

> Incidentally, I don't manage to have edebug triggered in a custom org
> agenda cmp function. I load the function with C-u C-M-x. the message
> "Edebug: org-energy-compare" appears as usual. When I launch the agenda
> I can see the function has been called since the entries are correctly
> sorted. But I was never given the input to debug it. Do you know why?

I'm curious about this as well. I've had little luck in getting edebug
to launch when I'm creating agenda views.

Alan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Is OrgMode really GTD compliant?
  2014-04-29 10:49         ` Alan Schmitt
@ 2014-04-29 13:26           ` Samuel Loury
  2014-04-29 13:31             ` Bastien
  0 siblings, 1 reply; 10+ messages in thread
From: Samuel Loury @ 2014-04-29 13:26 UTC (permalink / raw)
  To: Alan Schmitt; +Cc: emacs-orgmode, Rene

[-- Attachment #1: Type: text/plain, Size: 2450 bytes --]

Alan Schmitt <alan.schmitt@polytechnique.org> writes:

> On 2014-04-29 12:30, Samuel Loury <konubinix@gmail.com> writes:
>> Alan Schmitt <alan.schmitt@polytechnique.org> writes:
>>> On 2014-04-28 19:18, Rene <jlr_0@yahoo.com> writes:
>>> I have not defined an Energy property, but I recently played with date
>>> properties (and a user defined sorting function). If it's helpful to
>>> you, the code is there:
>>> https://github.com/brabalan/org-review/blob/master/org-review.el#L156
>> I looked at the code and I don't get what means the part of the code
>> getting the org-marker text property of a:
>> (get-text-property (point-min) 'org-marker a)
>> In this part, the point-min returns the point-min of the current buffer
>> (the agenda buffer in that case) while the function looks for the
>> property into a.
>>
>> I tried launching this code into a custom agenda compare function and I
>> get the error:
>> Args out of range: 1197, 1197
>> This makes sense since the agenda appears to be narrowed at that time so
>> that (point-min) returns 1197 and the a string at this time is not 1197
>> characters long.
>>
>> Replacing (point-min) by 0 appears to work (I assumed the 0th character
>> of the string has the wanted text property).
>
> I used to have `1' instead of `point-min', but I changed it following
> a suggestion from Bastien
> (http://thread.gmane.org/gmane.emacs.orgmode/85217/focus=85241).
Thanks for the link.

I am not a good lisp hacker, so I cannot be sure of this, but I suppose
Bastien did not notice the last argument 'a'. Indeed, the function is
defined as:

--8<---------------cut here---------------start------------->8---
(get-text-property POSITION PROP &optional OBJECT)
Return the value of POSITION's property PROP, in OBJECT.
OBJECT should be a buffer or a string; if omitted or nil, it defaults
to the current buffer.
If POSITION is at the end of OBJECT, the value is nil.
--8<---------------cut here---------------end--------------->8---

Then, the POSITION argument is the position in OBJECT to look for the
property. Therefore, the use of a function related to the current buffer
(like point-min) seems to strongly assume that OBJECT is the current
buffer (or nil).

In that case, OBJECT is not the current buffer but a string called
'a'. Thus, IIUC, it makes no sense to use OBJECT=a and
POSITION=(point-min).

--
Konubinix
GPG Key    : 7439106A
Fingerprint: 5993 BE7A DA65 E2D9 06CE  5C36 75D2 3CED 7439 106A

[-- Attachment #2: Type: application/pgp-signature, Size: 472 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Is OrgMode really GTD compliant?
  2014-04-29 13:26           ` Samuel Loury
@ 2014-04-29 13:31             ` Bastien
  2014-04-29 13:37               ` Alan Schmitt
  0 siblings, 1 reply; 10+ messages in thread
From: Bastien @ 2014-04-29 13:31 UTC (permalink / raw)
  To: Samuel Loury; +Cc: Alan Schmitt, emacs-orgmode, Rene

Hi Samuel,

Samuel Loury <konubinix@gmail.com> writes:

> In that case, OBJECT is not the current buffer but a string called
> 'a'. Thus, IIUC, it makes no sense to use OBJECT=a and
> POSITION=(point-min).

Indeed.  It should be 0 in this case, thanks for spotting this,

-- 
 Bastien

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Is OrgMode really GTD compliant?
  2014-04-29 13:31             ` Bastien
@ 2014-04-29 13:37               ` Alan Schmitt
  2014-04-29 13:42                 ` Bastien
  0 siblings, 1 reply; 10+ messages in thread
From: Alan Schmitt @ 2014-04-29 13:37 UTC (permalink / raw)
  To: Bastien; +Cc: Rene, emacs-orgmode, Samuel Loury

On 2014-04-29 15:31, Bastien <bzg@gnu.org> writes:

> Hi Samuel,
>
> Samuel Loury <konubinix@gmail.com> writes:
>
>> In that case, OBJECT is not the current buffer but a string called
>> 'a'. Thus, IIUC, it makes no sense to use OBJECT=a and
>> POSITION=(point-min).
>
> Indeed.  It should be 0 in this case, thanks for spotting this,

Thanks a lot indeed. I'll fix this. I have no idea why it worked in my
case ...

Alan

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Is OrgMode really GTD compliant?
  2014-04-29 13:37               ` Alan Schmitt
@ 2014-04-29 13:42                 ` Bastien
  0 siblings, 0 replies; 10+ messages in thread
From: Bastien @ 2014-04-29 13:42 UTC (permalink / raw)
  To: Alan Schmitt; +Cc: Samuel Loury, emacs-orgmode, Rene

Alan Schmitt <alan.schmitt@polytechnique.org> writes:

> Thanks a lot indeed. I'll fix this. I have no idea why it worked in my
> case ...

It half-worked: in this case (point-min) value was 1, taken from the
buffer, but you really want to set POSITION at 0 -- try point-max and
you'll see it raises an error.

-- 
 Bastien

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2014-04-29 13:42 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-27 20:51 Is OrgMode really GTD compliant? Rene
2014-04-28  0:21 ` Richard Lawrence
2014-04-28 17:18   ` Rene
2014-04-29  6:51     ` Alan Schmitt
2014-04-29 10:30       ` Samuel Loury
2014-04-29 10:49         ` Alan Schmitt
2014-04-29 13:26           ` Samuel Loury
2014-04-29 13:31             ` Bastien
2014-04-29 13:37               ` Alan Schmitt
2014-04-29 13:42                 ` Bastien

Code repositories for project(s) associated with this 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).