In my experience, there is a non-trivial amount of confusion in explaining the concept of TVs... heck I even had to beat it into Raymond's head before he "got it"...

Once you understand them, though, they are incredibly powerful. However, I think our implementation can loose this confusion by a few simple changes:
Lose the distinction between [*content*] and [*TVs*]
There is no reason a TV can't be just another type of content. In fact, I propose changing the syntax from TV to "custom field" or some other such name. This could also serve to simplify the API a bit I think, keeping in sync with my philosopy for this stage of the project of
less is more. There would be only one set of API calls dealing with getting data, children, etc.
Stop binding TVs to Templates
This initially made sense, but is kludgy in practical application.
Custom Fields should behave exactly like [*content*], and be available to all pages by default, and by extension, to all Templates. Templates should not have TVs bound to them. If you add a new template that needs access to, say, 15 variables, it's an inconvenience to go back and enable them for the new template.
Bind Custom Fields to Chunks (or to Content Templates, if you prefer...)
The concept of limiting the presentation or use of
Custom Fields to certain pages or content types is a VERY good thing, though. We could therefore introduce a new type of template, which is a
Content Template (to which
Custom Fields could be bound). A Content Template in this context is really nothing more than a Chunk with bound Custom Fields. It might be better to stick with that which people are already familiar, and just expand the concept of a Chunk. I'm leaning this way right now...
What do you all think about this?