Since the new version is mostly likely to have a superset of the old version's functionality and better decomposed to boot, you will usually want to provide a compat layer for the new one that exposes the old one's API. A few caveats:
- That API has to be perfect, including any bugs.
- You have to be willing to force people to switch if they're asking for a new feature that's already in the new version. Don't backport to the compat layer.
As always, be completely upfront. One important thing is to release a documentation update to the old version saying that this is obsolete and new development should target the new version. Then, point them to the compat layer and walk away.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?