Acknowledged

Given that a newer SDK is required to build for CIQ 5.x devices, what does this mean for existing apps on devices that were upgraded from CIQ 4 to CIQ 5 (e.g. FR955, Fenix 7, etc)? Do these apps just break?

Background:

- it has always by my understanding that if you build an app for a device with a given SDK, then that app should continue to work regardless of future firmware updates (in general). This ofc excludes situations where:

  - the new firmware update has a bug or breaking change

  - the existing app has a dormant bug which is exposed by a legit change in new firmware. e.g. newer firmware has a change where Weather.CurrentConditions.observationLocationName is null, and this caused several existing watchfaces to crash because they assume that field will never be null. But that's an application error, since that field has always been typed to be possibly null

- CIQ 5.* devices require various 7.X (or 8.X) SDKs to run properly

- Compilers have a check to ensure you don't try to build a a too-new device with a too-old device

- Due to a bug in this check, where older compilers (pre 7.2.0) seem to incorrectly believe that SDK version X can build any device with CIQ version X (or lower), it's possible for an SDK 6.X compiler to build an app for CIQ 5 devices. However, it's very possible that such an app will crash when it's run in the simulator or the device (we've already seen "bug reports" about this

- The existing crop of devices that came out with CIQ 4 (e.g. fr955, fr965, fenix7) have all been updated to CIQ 5. As far as I know, this is the first time that existing devices have received a major CIQ update since the move from CIQ 1 to CIQ 2.

- Someone in the CIQ team already clarified that CIQ 5 devices require apps to be built with newer SDKs.

So here's what I don't understand.

The two following statements seem to be mutually exclusive:

- If an app is built for a device with an existing SDK (e.g. SDK 6.4.0) it will continue (in general) to work on the device for all future firmware updates

- Devices with CIQ 5.* require a 7.X or 8.X SDK

The problem is that it was entirely possible to build an app for an fr955 (for example) with SDK 6.4.0 in the past, when fr955 was only on CIQ 4. If I installed such an app on my fr955 when it had CIQ 4, it would expect it to continue to work now that my device is on CIQ 5.

So how can it be possible that going forward, a 7.X or 8.X SDK is required to build for my fr955?

What am I missing? Has something also changed with the device files that's relevant here?

Parents
  • Regarding your last question :"are new firmware versions backwards compatible with old CIQ apps or not?"

    I think in general no, and that is because some things can be deprecated in the future firmware. Ideally Garmin should never deprecate anything "too fast", meaning that they should announce that something is going to be deprecated in a way that any developer not aware before the announcement could release an app available on all devices and not having to check each and every method with runtime has check.

    However is it required from every developer that every time they upload a new version to change their code (and use runtime has checks where they use has checks) according to the newest SDK's deprecation announcements?

    In the past someone could write an app and use the now deprecated properties. At some point in time they might "just fix a bug from ERA", (and not even adding the latest devices) and not even using the then latest SDK, so totally unaware that the way they save properties is deprecated (though still working on all devices they support at the time)

    But is it possible that some devices (that their app supports) have been upgraded to a firmware that stopped supporting properties and now only work with storage?

    I haven't checked the past timeline, and hopefully Garmin does think about these cases, but maybe sometimes they miss something.

    After all there have been firmware bugs that required devs to release a quick workaround so the users don't have to wait 3 month (at least) for Garmin to fix the firmware, if they ever fix it...

Comment
  • Regarding your last question :"are new firmware versions backwards compatible with old CIQ apps or not?"

    I think in general no, and that is because some things can be deprecated in the future firmware. Ideally Garmin should never deprecate anything "too fast", meaning that they should announce that something is going to be deprecated in a way that any developer not aware before the announcement could release an app available on all devices and not having to check each and every method with runtime has check.

    However is it required from every developer that every time they upload a new version to change their code (and use runtime has checks where they use has checks) according to the newest SDK's deprecation announcements?

    In the past someone could write an app and use the now deprecated properties. At some point in time they might "just fix a bug from ERA", (and not even adding the latest devices) and not even using the then latest SDK, so totally unaware that the way they save properties is deprecated (though still working on all devices they support at the time)

    But is it possible that some devices (that their app supports) have been upgraded to a firmware that stopped supporting properties and now only work with storage?

    I haven't checked the past timeline, and hopefully Garmin does think about these cases, but maybe sometimes they miss something.

    After all there have been firmware bugs that required devs to release a quick workaround so the users don't have to wait 3 month (at least) for Garmin to fix the firmware, if they ever fix it...

Children
No Data