On the teleconf today we talked about a definition for backwards compatibility that we are going to try to use moving forward. Note that this is slightly stronger than what Open MPI is using, if you are familiar with their definition. Certainly we can keep talking about this.
Full Backwards Compatibility [vX.Y.Z]
Z : Internal bug fixes that do not impact behavior seen outside of a single process
Y : No API changes (or required attributes), but behavior between processes changed (e.g., flock, dstore)
X : API changes and/or required attributes
The scenario we have to keep in mind is that if we have a statically linked PMIx server at, say, version v5.6.7. And we have a PMIx client dynamically linked. The client can be at v5.6.z and still work with the PMIx server.
If the PMIx client moves to v5.6.8 then the PMIx server does not need to change.
If the PMIx client moves to v5.7.0 then the PMIx server will need to update to a PMIx version in the v5.7.z series. It only needs to re-compile because it was statically linked. A dynamically linked PMIx process will just need to re-link.
If the PMIx client moves to v6.0.0 then the PMIx server will need to re-compile to a version in the v6.0.z series.
There is work ongoing to better interoperate between major version of PMIx. More details on that will follow once that work is complete.