Nabto Edge Version Compatibility

A system which uses Nabto Edge is a combination of several software components: The Nabto Edge Client SDK, Nabto Edge Embedded SDK, a Nabto Edge Client Wrapper Library and the application running on the embedded target using the Nabto Edge Embedded SDK and the applications running on client systems.

We do our best to keep the protocol between the Nabto Edge Embedded SDK and the Nabto Edge Client SDK backwards compatible, but sometimes we add requested features or options which can break the backwards compatibility.

Compatibility between Nabto Edge Client and Embedded SDKs

The Nabto Edge Embedded SDK is often used in resource constrained devices so it is typically important to optimize the size of the resulting binaries by removing unneeded functionality. This, however, also often leads to a situation where a Nabto Edge Embedded SDK can be configured in such a way that it is not backwards compatible with older Nabto Edge Client SDKs.

In general, the Nabto Edge Client SDK is backwards compatible with all older Nabto Edge Embedded SDKs. This is not necessarily true the other way around - an older client may not necessarily be able to connect to a newer embedded device: If a feature/option is not compatible with older client versions, it is explicitly mentioned in the documentation for that feature/option.

Below is a list of changes which have occurred in the Nabto Edge Embedded SDK and the Nabto Edge Client SDK which can be seen as breaking changes. This list can be used before an update is planned to see if something is at risk of breaking:

  • In the 5.2 Client and Embedded SDKs mDNS usage had a breaking change.
  • In the 5.2 Client and Embedded SDKs Local candidate connections had a breaking change.
  • In the 5.11 Client SDK we added support for a GCM based crypto suite. This is breaking change if a device is upgraded to using the GCM based crypto suite but clients older than v5.11 is used to access the device.
  • In 5.11 we added support for devices which acts as DTLS client only. This is a breaking change if a device is upgraded to use this feature but older than 5.11 clients is used to access the device.

These breaking changes are also enumerated in the changelogs:

General Considerations

When deploying a new software release into the market it should be tested thoroughly to ensure that it works with the other components/versions already deployed.

It should not be assumed that the software will be indefinite backwards compatible. For instance, security issues could make it necessary to deprecate certain versions. That means it is highly recommended to always design solutions with the ability to perform software updates in deployed systems.