Versioning

SAMSON has two version numbering systems: a public version and an internal version of SAMSON and its SDK.

Internal versioning of SAMSON

Because SAMSON and its Software Development Kit (SDK) evolve through successive releases, and SAMSON Elements 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 2020 R1 which is internally based on SAMSON and its SDK version 0.10.0.

Compatibility of SAMSON Elements

When starting up, for each SAMSON Element, SAMSON compares its own version number with the version number of the SDK that was used to build the SAMSON Element, 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.75 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 Element 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 Elements

SAMSON automatically updates SAMSON Elements 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 Element is 1.5.2. SAMSON is able to load this SAMSON Element 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 Element keeps functioning and can be loaded at startup.

If a new version of the SAMSON Element, built with SDK version 1.6.4, is published on SAMSON Connect (and an Internet connection is available), then SAMSON updates the SAMSON Element 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 Element 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 Element, and will keep its version 1.6.4.

Version numbers of SAMSON Elements

Independent of the SDK version which was used to build it, each SAMSON Element has its own version number major.minor.patch. This version number may be used to inform users of updates made to a SAMSON Element. 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 Element is taken into account by SAMSON to determine whether the SAMSON Element is compatible and can be loaded at startup.