With this post I aim to reach two categories of people. One is GTD app developers, who I wish to encourage to implement the types of features described here. The other is fellow users who might be able to point me in the direction of apps that already have all this.
The periodical review of your lists is a fundamental part of GTD. One of the main purposes of these reviews is to go through and verify that you have everything that needs to be done listed, that nothing is missing, that everything is properly categorized, and that old entries are removed or modified. Another important purpose if the review is to genuinely understand and adjust, and build an intuitive feel for, what the totality is all about, what is important, and how the various parts fit in with your overall goals.
Projects are important in GTD, because even the simplest little task with more than one action step in it is called a project. And projects can also be very large and contain lots of actions. Often some tasks need to be completed before others can be started. And in real life, projects are often not entirely independent of each other, but rather a bit inter-dependent both in terms of certain actions being fundamental for multiple projects and in terms of having certain overall goals or purposes.
Some simple but significant features to the fundamental project structure offerd in most apps would be immensely useful, making reviews much simpler and accurate, and making the work in between reviews, and ongoing task selection on a daily basis, so very much simpler.
Feature: Hierarchies (subprojects)
Being able to arrange projects and tasks hierarchically brings overview. The list of projects (usually on the left) can be kept as short and overviewable as you like it. Each project, at any of its levels, can be kept as short and overviewable as you want it. You can specify your projects down to the tiniest little action without thereby creating a big daunting mess. And you can consistently filter tasks by tags (i.e. contexts, labels etc).
There is nothing novel or strange about this, nor is it complicated for the user. This is how we all normally organize stuff in Windows etc. You make your hierarchies as deep or as flat as you want them - whatever serves your purposes and your personality and the particular project best.
Feature: Multiple parents
Much of what we need to do serves more purposes than just one. If we plan to buy a good scanner, this may be part of an overall refurbishing plan for the office, but the scanner may also be needed for a particular photo/advertising project we are about to start, and for a litigation project where we need to capture in electronic format some heavy legal documents that we expect to get in the mail next week.
By being able to list "Procure scanning equipment" (which itself is a task or subproject) in all those projects for which the scanner is essential, we make our review work so much simpler and less worrisome. We need not make notes about these interrelationships. We need not feel anxious that something is overlooked. We need not switch back and forth between different projects to make sure all is covered. We can see, wherever we need to see it, that buying the scanner is necessary for the project to succeed.
The very same multi-parent capability is a powerful solution to another extremely common situation. GTD (and most other methodologies) suggest that we batch things up and do more than one thing when in a given context. Sometimes these contexts need to be deliberately planned and set up; they do not just "happen". The multi-parent capability allows us to create little "batch" (or "agenda") type projects such as "Meeting with CFO" - about all kinds of things that belong to different projects, or "Trip to outlet center X" - to buy things for many different projects. And then we can also add little "context setup" actions to that little project, such as book a van, book a conference room etc.
Feature: Semi-dependent task flow within projects
Some apps have separate project types, parallel ("shotgun") and sequential ("bead of pearls"), but it is simpler and better to have just one universal project type and make it realistic enough to serve both purposes. What we need is to see all our true Next actions on the Next list (and true Waiting actions on the Waiting list), while keeping the rest (the not-yet-relevant actions) well hidden within their project until it is their turn. And we want the automatic progression sometimes offered as a strictly sequential project type.
The solution is simple: Make the "sequential" container a built-in part of an overall "parallel" project. Let the sequential container feed tasks one by one into the parallel main container when this gets empty. All actions in the parallel container would be visible on the Next and Waiting For lists, but all actions in the sequential (subsequent) container would be hidden. Allow the user to manually move actions between the parallel and the sequential container as required. Default placement for new tasks should be the parallel (active) section (to avoid being overlooked if you forget to place it in its correct position.)
This gives us all existing capabilities of both project types, and adds the flexibility to manually adjust what tasks are currently active (in parallel; often more than just one) and which ones are subsequent and in what sequential order. It is not only more powerful, it is also easier for new users to understand (no need to select a project type).
In addition, this very simple task flow mechanism is actually all we really ever need even for more complex pre-sequencing of the task flow, because subprojects can be made use of for creating sub-suites of tasks that fit into the simple overall structure of its parent project.
All this might sound a bit abstract to some, but things are easier to see and understand in real life than it is to understand a theoretical description of them. These features typically can be implemented with virtually no impact at all on the existing UI for the novice user, but increases the app's power tremendously for those users who have reached the limit of what they can use the app for. Basically, for the UI, the subtle difference with these enhancements is that you can drag and drop (move) things a bit more freely - but that almost invisible difference makes a world of difference in power and usefulness.