At the moment, code in src/plugin-manager.cpp choses the first plugin it finds for a given protocol/connectionmanager combination. It would be better if it chose the plugin with the closest supported parameters list to the connection manager installed in cases where there are two or more plugins which provide UI for the same protocol/cm combination.
Is this a situation that is ever going to happen?
probably not. let's not bother with this unless it does happen and becomes a problem.
Acutally this is a problem, since connection managers/protocols seem to change parameters and/or their names. Changed names could be handled easily by altering handleParamter/registerSupportedParameter. But there are still new/deleted parameters. This actually happens here for haze/icq: my libpurple is too old and parameternames don't match.
What you say is true, but it is a different issue. We are only going to officially develop one UI plugin per protocol/cm tuple, so if different cm version change parameters, these differences should be handled gracefully by that single plugin (and would have been under the old architecture of the kcm - I assume this is still true after the latest rewrite).