Currently today, the "version" property of a module tag in the tiapp.xml does not require a value to be set. This means that during a build, the latest version of a module will be pulled in (as long as the minsdk in the manifest is satisfied).
This means that if we wish to make changes to a module that are breaking changes, but do not require a minsdk change (for example the recent changes to ti.facebook
TIMOB-26823) we cannot do so unless it's a semver major release of the SDK, and aligning any breaking changes across (at an eyeball) 10 modules distributed via the SDK is nigh on impossible in my opinion. It is important to enable ourselves to do this because it's possible that a breaking change might be needed by a user to adapt to a 3rd party change (for example a breaking change in a ti.facebook that is required to be in place by facebook by a certain date)
I propose that we do the following:
- Deprecate support for no version specified in a module tag, with a view to erroring completely in 9
- Allow support for semver ranges in a version tag
- Do we disallow ranges like "*" and "latest" to prevent users opting into this?
Doing this would allow us to ship updates to modules that are breaking changes without requiring an semver major SDK version bump.