A friend pointed me to this great article about MVC: http://c2.com/cgi/wiki?WhatsaControllerAnyway
The central claim is that MVC had a very clear definition in SmallTalk, which was changed by either NextSTEP or Ivar Jacobsen depending whom you talk to. In trying to describe M/V/VM I’ve focused on the SmallTalk definition, which has confused some people using Cocoa. The discussion has been good though, because it is clarified to me what is different about M/V/VM from either on them.
It is common in MVC to use the Observer pattern so the View does not corrupt the Model with unnecessary view concepts. The Controller and View however talk to each other “directly” and generally have two way knowledge. M/V/VM uses data-binding to implement the Observer pattern not only between Model and View, but between Model and ViewModel (and optionally between ViewModel and Model).
Yes, I know I have to write an example….stay tuned.