Consider the two broad approaches to v9 compatibility.
- A new package version that works in both v8 and v9
- A new package version specific to v9, with a separate version for v8
Now consider the two v9 scenarios
(A). A fresh site in v9, packages are then added
(B). A site updated to v9 from v8, packages are already installed in v8.
With (A), it doesn’t matter which of (1) or (2) is adopted for making a package compatible. Either approach will work with a fresh install to v9.
With (B), package approach (1) should always work.
But approach (2) can get into a chicken and egg problem. A v9 version of the package cannot be installed to a v8 site. Yet when the site is updated, the package remains v8 and is incompatible with v9. If the incompatibility is minor, then the next action is to go to the dashboard and update the package to the v9 compatible version and all will be OK. However, if the v8 version of the package breaks the site sufficiently that the dashboard/upgrade is inaccessible, the site is now broken unless the package can be upgraded to its v9 compatible version manually.
Hence achieving (1) is by far the preferred solution. As a backstop, if I can’t achieve (1) and need to resort to (2), I will at least create a new v8 version of a package that won’t break a v9 site too badly, so allowing an update to the v9 version of the package after the site is updated to v9.