diff --git a/doc/developers.dox b/doc/developers.dox index 6307f0761..c261d1f3d 100644 --- a/doc/developers.dox +++ b/doc/developers.dox @@ -244,6 +244,23 @@ in inverse --- but usually @ref developers-deprecation "deprecate first". In order to remove a plugin interface, be sure to touch all places mentioned above, only in inverse --- but usually @ref developers-deprecation "deprecate first". +@section developers-plugin-interface-updating Checklist for updating a plugin interface + +When updating a plugin interface, the interface string (and thus also the +interface string in all plugin implementations) should be updated if any of the +following cases apply: + +- Bump major version if the plugin usage changes significantly (and thus most + user code changes as well), for example when renaming a "open file" method +- Bump only the minor version if signature of some methods change, + potentially requiring changes in user code, for example when porting from + @ref std::string to @ref Containers::StringView +- Bump only the patch version if the change doesn't affect existing user code + but breaks ABI, for example when adding a new virtual function --- this is + mainly to prevent crashes when loading of plugins built against an older + interface. A rather exhaustive list of ABI-affecting changes is in the KDE + Community Wiki: https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B + @section developers-tool Checklist for adding / removing a tool @todoc write