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):
The way I think OmniFocus should work (sensible, because anytime I am online, I am also at the computer):
What do you think? Will somebody have to re-write a bunch of outliner code?
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 | | |
Code:
Contexts | Puter -> Puter | calculate pi Online | | |
Code:
Contexts | Puter Puter | calculate pi -> Online | | Puter:Online | do web research