When we want to improve metadata, it would be great to not break off chain tools which depend on some previous version.
Holding multiple version while letting the time for third parties to update is preferred.
Maybe this issue is as simple as adding a new method to sp_api::Metadata each time we bump the metadata, (like metadata_v2 and then metadata_v3) and deprecate old version by returning an empty one when after some time.
But this is a bit annoying for runtime declaration, another solution could be to have Metadata being a vec of (version, Metadata), allowing the runtime to return multiple version in the same api call.
Not sure what is best. and there can be better ideas.