I think OmniFocus handles context hierarchies backwards.
As you know, OmniFocus contexts can have child contexts. For example, I might have a context called
computer with a child context called
computer:online. Currently, if I select
computer, I can see actions that belong to both the
computer (parent) context and the
computer:online (child) context.
This behavior -- showing the actions of child contexts along with those of the parent when a parent context is selected -- is actually backwards, since anytime I am in the
computer:online (child) context I am also in the
computer (parent) context -- but not vice versa. The child context is a subset of the parent context, so any action that belongs to the parent context can be performed in the child. Right? Yet OmniFocus shows the children's actions when a parent is selected, which is backwards. Instead, it ought to show the parent's actions when any of its children is selected.
I think OmniFocus' context display needs to work opposite how it currently works: selecting a child context should show both the child and its parent's actions, and selecting a parent context should show just the parent's actions.
Here is some ASCII art of context mode, to explain what I mean.
Current OmniFocus behavior (nonsensical, because it shows online tasks when I am not online but merely at the computer):
Code:
Contexts | Puter
-> Puter | calculate pi
Online |
| Puter:Online
| do web research
Code:
Contexts | Puter:Online
Puter | do web research
-> Online |
|
|
The way I think OmniFocus should work (sensible, because anytime I am online, I am also at the computer):
Code:
Contexts | Puter
-> Puter | calculate pi
Online |
|
|
Code:
Contexts | Puter
Puter | calculate pi
-> Online |
| Puter:Online
| do web research
What do you think? Will somebody have to re-write a bunch of outliner code?