Versioning

SAMSON has two version numbering systems: a public version (e.g. 2022 R2) and an internal version of SAMSON and its SDK (e.g. 4.0.0).

Internal versioning of SAMSON

Because SAMSON and its Software Development Kit (SDK) evolve through successive releases, and SAMSON Extensions depend on specific versions of the SAMSON SDK to compile and run in SAMSON, we follow a strict semantic versioning convention:

  • Internally, SAMSON and its SDK have a version number major.minor.patch composed of three non-negative integers: a major version number (major), a minor version number (minor), and a patch version number (patch). These numbers evolve according to the following rules:
  • When a non-backwards-compatible update of SAMSON is released, the major version number major is incremented
  • When a backwards-compatible update of SAMSON that adds functionality is released, the minor version number minor is incremented
  • When a backwards-compatible bug fix of SAMSON is released, the patch version number patch is incremented

During the beta period, corresponding to a major version number equal to zero, the beta minor version number plays the role of the major version number, and the beta patch version number plays the role of the minor version number and the patch version number:

  • As long as the beta period lasts, the major version number major is zero
  • When a non-backwards-compatible update of SAMSON is released, the minor version number minor is incremented
  • When a backwards-compatible update of SAMSON that adds functionality is released, or when a backwards-compatible bug fix of SAMSON is released, the patch version number patch is incremented

Current version of SAMSON

The current public version of SAMSON is 2022 R2 which is internally based on SAMSON and its SDK version 4.0.0.

Compatibility of SAMSON Extensions

When starting up, for each SAMSON Extension, SAMSON compares its own version number with the version number of the SDK that was used to build the SAMSON Extension, and loads it only if the SDK version is compatible with the SAMSON version.

As a consequence of the semantic versioning policy, a version majorSDK.minorSDK.patchSDK of the SAMSON SDK is compatible with a version majorSAMSON.minorSAMSON.patchSAMSON if and only if:

  • Both major version numbers majorSDK and majorSAMSON are identical
  • The minor version number minorSDK of the SDK is smaller than the minor version number minorSAMSON of SAMSON

For example, SDK versions 1.3.5 and 1.7.7 are compatible with SAMSON version 1.7.8, while SDK version 1.8.5 is not compatible with SAMSON version 1.7.8. In the latter case, indeed, a SAMSON Extension developed with SDK version 1.8.5 might use a function that is not yet present in SAMSON 1.7.8.

Users are encouraged to update SAMSON as often as possible (in particular through the automatic update functionality).

Automatic updates of SAMSON Extensions

SAMSON automatically updates SAMSON Extensions when new compatible versions appear on SAMSON Connect (and an Internet connection is available).

Assume for example that the version of SAMSON installed by the user is 1.7.8, and the version of the SDK used to build the SAMSON Extension is 1.5.2. SAMSON is able to load this SAMSON Extension at startup since SAMSON version 1.7.8 is backwards-compatible with SDK version 1.5.2 (the major version numbers are identical). As long as the user does not install a version of SAMSON with a different major version number, the SAMSON Extension keeps functioning and can be loaded at startup.

If a new version of the SAMSON Extension, built with SDK version 1.6.4, is published on SAMSON Connect (and an Internet connection is available), then SAMSON updates the SAMSON Extension during startup, since SAMSON version 1.7.8 is compatible with SDK version of 1.6.4.

Assume, however, that a version 2.0.0 of SAMSON and its SDK are released, and the developer adds a new version of his or her SAMSON Extension to SAMSON Connect built with this new version. If the user does not update SAMSON and keeps version 1.7.8, then SAMSON will not update the SAMSON Extension, and will keep its version 1.6.4.

Version numbers of SAMSON Extensions

Independent of the SDK version which was used to build it, each SAMSON Extension has its own version number major.minor.patch. This version number may be used to inform users of updates made to a SAMSON Extension. However, no versioning policy is enforced by SAMSON (besides the major.minor.patch format), and only the version of the SDK which was used to build the SAMSON Extension is taken into account by SAMSON to determine whether the SAMSON Extension is compatible and can be loaded at startup.