As I talked to customers (internally and externally) it is clear that our story around compatibility and side-by-side is not well understood. Here is a very brief description to help us get on the same page:
Compatibility: We are working very hard to make sure that V1.x apps just run on V2.0. We have a full appcompat lab, with many real world applications and a full compat test suite. I think we are pretty good for the Beta2 drop we are working hard on now and will get better with RTM as we get more compat feedback from you.
However, perfect compatibility is essentially impossible. Sometimes apps make invalid assumptions about what the platform will do in certain situations. And there are also cases where, in order to secure the platform, we must make breaking changes. So we know we needed a backup plan.
Side-by-side: We have also done all the work to make sure V1.0, V1.1 and V2.0 can all be installed on and run on the same machine at the same time. This means if an app happens to be in one of the corner cases that is broken on V2.0, the fix in almost all cases is to simply install V1.x on the machine. Our policy is that if an app was developed with V1.x and run on a machine with only v2.0 on it, the app will be run on V2.0. If V1.x and V2.0 are on the machine the app will be run on V1.x in order to give the highest guarantee of compatibility as possible.
Clear as mud? Does this seem like the right track?