Version Numbers

The Java components of Shibboleth and OpenSAML uses a standard triplet version format: MAJOR.MINOR.PATCH. Each component is an integer and is separated by a "." (period). When discussing a release we use the terms "patch release" to indicate a release where the PATCH component has been incremented, "minor release" to indicate a release where the MINOR component has been incremented, and a "major release" to indicate a release where the MAJOR component has been incremented.

Version Compatibility

Compatibility is defined as follows. A backwards compatible release is a release that may be used in place of an older release without modification of the software or configuration (i.e. it is possible to upgrade without changing anything). A forwards compatible release is a release that may be used in place of a newer release without modification of the software or configuration (i.e. it is possible to downgrade without changing anything).

Compatibility is tracked across three sections:

  • APIs: programs methods, classes, etc.
  • Configuration files
  • Protocol or on-the-wire messages

Versioning Strategy

This section details the requirements for each release type.

  • Patch Release
    A patch release maintains perfect API, configuration, and protocol configuration compatibility. In other words, the release is both forwards and backwards compatible. Effectively, these releases are pure bug fix releases.
  • Minor Release
    A minor version may introduce new features and APIs and may deprecate, but *not* remove, old APIs. Minor versions are backwards and forward compatible with respect to the protocol. With respect to APIs and configuration they are backward but not necessarily forward compatible. This is because new features/configuration options may be added in a minor release and older versions of the software may not properly deal with these changes if a downgrade were attempted. Effectively, these are feature addition releases.
  • Major Release
    A major version may make any type of change to protocols, APIs, and configurations. As such neither backwards nor forwards compatibility is guaranteed. Effectively, these release may be treated as if they were a new piece of software.

Examples
Original VersionNew VersionCompatible?
2.2.3 2.2.4 Yes
Compatibility across patch versions is guaranteed.
2.2.3 2.2.1 Yes
Compatibility across patch versions is guaranteed.
2.2.3 2.3.1 Yes
Compatibility with later minor versions is guaranteed.
2.2.3 2.1.7 No
Compatibility with prior minor versions is not guaranteed.
2.2.3 3.0.0 No
Compatibility with prior major versions is not guaranteed.
2.2.3 1.4.7 No
Compatibility with prior major versions is not guaranteed.
Internet2 Home Membership Network Communities Services R&D Tools Events Newsroom About
Privacy | Site Map | Terms of Use | Contact Us     Copyright 2012 Internet 2