ExportXMLWordPrintable

    • 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!

            Assignee:
            Unassigned
            Reporter:
            Alessandro
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: