-
Type:
New Feature Request
-
Resolution: Unresolved
-
Priority:
Trivial
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
Hello! I'm currently updating my custom Zabbix Agent 2 plugins to support Zabbix 8.0.
While skimming through official plugin repos (like PostgreSQL) I noticed a breaking change in how the Go SDK is imported and used, specifically around flag handling in main.go.
In release/7.4, flag handling looked like this:
err := flag.HandleFlags( plugin.Name, os.Args[0], COPYRIGHT_MESSAGE, PLUGIN_VERSION_RC, PLUGIN_VERSION_MAJOR, PLUGIN_VERSION_MINOR, PLUGIN_VERSION_PATCH, )
In 8.0.0rc1, the signature was changed in-place to:
args, err := flag.HandleFlags()
Since Go doesn't have preprocessors like #ifdef, breaking function signatures like this forces 3rd-party devs to maintain separate production branches just to support both 7.x and 8.0 instances. Managing distinct builds, packaging, and CI/CD matrixes for what's essentially the same plugin is a significant maintenance burden, especially for small dev teams.
Could a deprecation path be introduced for the SDK so that new functionality is added in a backwards-compatible way? Keeping that level of backwards compatibility in the Go SDK would let external devs build single-binary releases across different Zabbix versions without a significant maintenance burden.
If maintaining backwards compatibility in the SDK isn't feasible, could you please suggest a recommended upgrade path or best practice for 3rd-party developers to handle this transition cleanly?
Thanks!