IMO, we should modify our sdk to allow any plugin compiled with a lower version sdk to be run. My idea is-
SDK_Version = {Release}.{Major}.{Minor}
E.g.,
Release | | | Value |
10.05 | | | 1 |
11.05 | | | 2 |
Similarly {Major} and {Minor} will be assigned depending on the maturity of the release.
Rules for {Major} value change -
a) Deletion of any sdk class / function.
b) Interface change (can be parameter type, function return type change)
Rules for {Minor} value change-
a) Addition of new class / function.
b) Interface change (can be parameter type, function return type change) but old interface is still intact.
Now when C::B sees any sdk version change-
a) If {Minor} has changed, load & run plugin without warning.
b) If {Major} has changed, load & run plugin with warning. Warning should inform users that the plugin could be unstable with new sdk version; so use it with a grain of salt.
c) If {Release} has changed, inform users to source for a newer version of that plugin.
My point is even a small change in sdk should not force a plugin to be recompiled, especially when the plugin under question is not affected by the change.
Anyway this is just a draft idea. Feel free to update/comment.
I'm also not in favour of the idea to add plugins to the repo to ensure that they stay updated when we change sdk version. We do have couple of almost unmaintained plugins and I don't want to see their numbers increase any further. We should add plugins to our repo only when someone is there to maintain it.