EZ> For example, it sounds to me that by having an "add project" and
EZ> "remove project" commands, we can give the user the ability to tell

JY> Such a model is inherently stateful, hence problematic.  It makes 
JY> multiplexing work on multiple projects difficult and error-prone.

EZ> Stateful, yes.  Working on a certain project or a set of projects is
EZ> indeed inherently stateful.
EZ>
EZ> I don't see the problematic part in that, though.  Could you elaborate
EZ> on what practical problems you see with this?

Eli,

To me your proposed model of "add project" / "remove project" seemed
just too reminiscent of etag's paradigm for managing tag tables.  Of late
I have been using git-new-workspace.  In that setting find-tag forever
seems to open the _wrong_ file.  More perniciously it often opens one
that looks right though in a different workspace, thereby slowing me down
and making me paranoid.

/john