> After starting, we decided that changing the MCA base revision number
> to 2.0.0 also meant changing *ALL* the framework version numbers.
> This is because the same components from framework <foo> compiled with
> MCA base version 1.x.x would not be binary compatible when compiled
> with MCA base version 2.0.0 (the mca_base_component_t struct is a
> different size, for example). So it seemed like we needed to make a
> large change: we changed both the MCA base and every framework
> interface version to v2.0.0, which entails touching every framework
> base and every component.
I guess I don't understand. I thought there were three versions in every
component -- the MCA version, the framework version, and the component
version. The first two should determine if the component can safely be
loaded and the third is to identify the component. I agree that for this
change (an MCA-level change), the MCA version *should* change. However,
the framework interface didn't change (well, not as a result of this
change), meaning that the framework version *should not* change. The MCA
load infrastructure should see that the MCA versions don't match, and not
load the component.
Or am I missing something here?