Today we don't have a clear migration strategy for a project between two major zOS versions. If there is a change in a zos-lib contract (such as ImplementationProvider, Directory, App, Release, Package, etc), the user must manually migrate to the new set of contracts.
Instead, we should leverage zOS upgradeability, and make the very zOS contracts upgradeable themselves. We could also have a set of contracts already deployed, so users only need to create proxies to the App or Package contracts, using zOS itself as a stdlib.
This would allow for projects to easily migrate from a zOS version to a newer one.