SDK Versioning
Overview
OpenJAUS SDK releases are versioned as a collection using the year of the release and a release number. Release numbers start at 0 and are incremented for each release within the given year.
Examples:
- 2021.0 -- the first release in 2021
- 2023.0 -- the first release in 2023
- 2023.1 -- the second release in 2023
Individual packages within an SDK release (see Overview) are versioned using Semantic Versioning v2.0.0.
Compatibility between SDK releases is not guaranteed and should be evaluated based on the versions of the individual packages within the SDK release.
What happens if I upgrade?
Assuming:
- You are using
SDK YYYY.0
, which consists of:org.openjaus.cpp v1.0.0
org.openjaus.core-v1.1.cpp v1.0.0
org.openjaus.mobility-v1.0.cpp v1.0.0
- We release
SDK YYYY.1
. What happens if you upgrade to this version?
Example 1: Full Compatibility
If SDK YYYY.1
contains:
org.openjaus.cpp v1.0.1
org.openjaus.core-v1.1.cpp v1.1.0
org.openjaus.mobility-v1.0.cpp v1.0.0
Then SDK YYYY.1
is fully backwards compatible with SDK YYYY.0
and is a drop in replacement. There should be no changes required to your final application.
Upgrading to SDK YYYY.1
will:
- Fix a bug in the base libraries
- Give you access to some new capability in the
core v1.1 service set
. - Have no impact on code that depends on the
mobility v1.0 service set
.
Example 2: Partial Compatibility
If SDK YYYY.1
contains:
org.openjaus.cpp v1.0.1
org.openjaus.core-v1.1.cpp v1.1.0
org.openjaus.mobility-v1.0.cpp v2.0.0
Then SDK YYYY.1
is partially backwards compatible with SDK YYYY.0
. If you use any of the services in the mobility v1.0 service set
, then upgrading may cause your final application to not compile, or change its behavior may change. However, if you don't use any services in the mobility v1.0 service set
, your final application will not be impacted. You will need to review the associated CHANGELOG.md
file to understand the potential impacts on your application.
Upgrading to SDK YYYY.1
will:
- Fix a bug in the base libraries
- Give you access to some new capability in the
core v1.1 service set
. - Potentially break code that depends on the
mobility v1.0 service set
.
Example 3: Potentially Incompatible
If SDK YYYY.1
contains:
org.openjaus.cpp v2.0.0
org.openjaus.core-v1.1.cpp v2.0.0
org.openjaus.mobility-v1.0.cpp v2.0.0
Then SDK YYYY.1
is potentially incompatible with SDK YYYY.0
such that upgrading may cause your final application to not compile, or its behavior may change. You will need to review the associated CHANGELOG.md
file to understand the potential impacts on your application.
Upgrading to SDK YYYY.1
will:
- Potentially break code that depends on the base libraries
- Potentially break code that depends on the
core v1.1 service set
. - Potentially break code that depends on the
mobility v1.0 service set
.
Example 4: Backwards Compatible Service Set Version Change
If SDK YYYY.1
contains:
org.openjaus.cpp v1.0.1
org.openjaus.core-v1.1.cpp v1.1.0
org.openjaus.mobility-v1.1.cpp v1.0.0
- The
mobility service set
is updated fromv1.0
tov1.1
- The
Then SDK YYYY.1
is at least partially backwards compatible with SDK YYYY.0
. If you use any of the services in the mobility v1.0 service set
, then upgrading may cause your final application to not compile, or change its behavior. However, if you don't use any services in the mobility v1.0 service set
, your final application will not be impacted.
Info
Although all services in mobility v1.0
and mobility v1.1
are backwards compatible at the service level, the C++ code that implement the service sets may or may not be. The JSIDL service definitions could produce code that is similar or completely different, making it almost impossible to guarantee compatibility or incompatibility at the code level. Similarly, identifying the changes that occurred are very difficult such they cannot be provided in the associated CHANGELOG.md
.
Upgrading to SDK YYYY.1
will:
- Fix a bug in the base libraries
- Give you access to some new capability in the
core v1.1 service set
- Potentially break code that depends on the
mobility v1.0 service set
- Produce an application that is service-level compatible with the previous version
Example 5: Incompatible Service Set Version Change
If SDK YYYY.1
contains:
org.openjaus.cpp v1.0.1
org.openjaus.core-v1.1.cpp v1.1.0
org.openjaus.mobility-v1.1.cpp v2.0.0
- The
mobility service set
is updated fromv1.0
tov2.0
- The
Then SDK YYYY.1
is at least partially backwards compatible with SDK YYYY.0
. If you use any of the services in the mobility v1.0 service set
, then upgrading may cause your final application to not compile, but will change its behavior. However, if you don't use any services in the mobility v1.0 service set
, your final application will not be impacted.
Info
Although, not all services in mobility v1.0
and mobility v2.0
are backwards compatible at the service level, the C++ code that implement the service sets may or may not be. The JSIDL service definitions could produce code that is similar or completely different, making it almost impossible to guarantee compatibility or incompatibility at the code level. Similarly, identifying the changes that occurred are very difficult such they cannot be provided in the associated CHANGELOG.md
.
However, even if the code is compatible, the behavior of services that have changed from v1.0
to v2.0
, will have changed.
Upgrading to SDK YYYY.1
will:
- Fix a bug in the base libraries
- Give you access to some new capability in the
core v1.1 service set
- Potentially break code that depends on the
mobility v1.0 service set
- Potentially produce an application that is not service-level compatible with the previous version