I have a simple and (I believe) good idea for how Contexts and Tags can be combined in such a way that you can BOTH have the neat Context-based grouping of the lists AND can have quick and simple filtering without too much work.

Very often, the Tags actually also represent contexts or other requirements, but perhaps of a secondary nature, so this is why there would be a certain benefit in harmonizing them a bit.

For example, among my contexts I have one context called @Person (requiring someone to do the task together with me; i.e. not a solo task) and one context called @Out (requiring me to be somewhere other than Home or Office. This level of detail is just nice for list grouping. If a task requires both (both going out and a person to go with me) I typically categorize it as @Person, but the fact remains that it requires me (us) to go out. So I would like to be able to see all tasks that require me to go out, even if they are not classified by the @Out context, but by, perhaps, an Out Tag in addition to the @Person context.

A similar example is if something needs doing at a @Computer, but not just any computer anywhere. You must sit in @Office2 because you need access to something there. Then you might perhaps classify it as an @Office2 task, but the fact remains that you need to use a computer and would like to tag it accordingly.

It needs to be simple to use (and simple to implement). Here are some ideas:

Alternative 1: Associating Contexts and Tags with the same name.
Show Contexts on the filter bar, just like Tags. If a Tag has the same name as a Context, show it only once on the filter bar. If we filter by it we will see all tasks that have either a Context or a Tag with that name (e.g. Out).

Alternative 2: Implicit (automatic) tagging of tasks
a) Allow "tagging" of Contexts, and let all tasks with that Context auto-inherit the Context's Tag(s). Or perhaps even better, b) have an option in Preferences to "automatically apply the task's Context also as a Tag with the same name (for filtering purposes)". Or perhaps c) Simply apply contexts as tags as a standard feature.

Alternative 3: Preset for which Tags are to be exclusive "list grouping tags"
In Preferences (Tag Management) allow users to mark some tasks as "list grouping tags" (i.e. Contexts). Or when yoy create a new Context it will also be visible here and already marked as a "list grouping tag". Later, when tagging a task, if a user tries to select two such "list grouping tags" (contexts) for a task then he/she will be forced to designate only one of these as the active "list grouping tag" and the other one one will behave just like any other additional tag.

I have a feeling that alternative 2 might be the simplest.