Ignition sdk changelog and back-compatability

I am developing with the Igntion sdk and want to make sure I’m following the best practices for versioning. Have a few questions:

  1. Does Ignition guarantee back-compatibility with the sdk when releasing new versions? For instance if my sdk module is written using sdk version for ignition 8.1.x or 8.3.x will the sdk module necessarily work for Ignition versions 8.1.(x+1) and 8.3.(x+1) respectively?
  2. Where can I find the changelog for the sdk with each new Ignition version release?
  3. Are there any best-practices for sdk versioning that you reccomend?
  1. No.

  2. There is none.

  3. Make branches in source control for every major platform version you intend to support. There may be breaking changes within a major version, too.

IA explicitly declines to make compatibility guarantees for the SDK.

I'll amend Phil a little:

  1. No, there is no guarantee, but we do try our best to avoid breaking compilation unnecessarily.
  2. There is none, but generally the SDK does not change significantly (in any way that impacts you as an SDK consumer) between minor Ignition versions.

Generally speaking as a module developer you should pick a particular patch release as your support floor and pin your build system to the SDK artifacts from that version. As in, declare "8.3.4" as your minimum supported 8.3 version (and enforced via the required platform version module.xml attribute). Then you're free to support 8.3.4 and higher versions (assuming no breaking platform API changes are necessary).

As an example, midstream in 8.1 we swapped the platform from Java 11 to Java 17. If you wanted to take advantage of the new language features in your module, you could pin your minimum version to 8.1.33, but an older module would still work on the newer platform.

However, in 8.1.forty-something, we had to bump the platform's webserver Jetty to a new major release to ensure continued support. This changed provided classpaths, so basically any module with a gateway hook would be forced to provide a new version with the new classpaths, breaking the compatibility matrix in half.

2 Likes