{ "id": "173034", "key": "TIMOB-26842", "fields": { "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": null, "resolutiondate": null, "created": "2019-02-21T14:41:50.000+0000", "priority": { "name": "None", "id": "6" }, "labels": [ "Q2", "cb-tooling", "engArch", "roadmap2019", "titaniumlib" ], "versions": [], "issuelinks": [ { "id": "57840", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "174117", "key": "MOD-2537", "fields": { "summary": "ti.facebook: crash on iOS 13", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "None", "id": "6" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "58221", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "171283", "key": "DAEMON-243", "fields": { "summary": "Create titaniumlib with tiapp.xml parsing, sdk and module detection logic", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "Critical", "id": "1" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } } ], "assignee": { "name": "eharris", "key": "eharris", "displayName": "Ewan Harris", "active": true, "timeZone": "Europe/Dublin" }, "updated": "2020-03-06T21:34:29.000+0000", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "components": [ { "id": "13103", "name": "CLI", "description": "Node-based command line interface" }, { "id": "10207", "name": "Tooling" } ], "description": "h5.Description\r\n\r\nCurrently 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).\r\n\r\nThis 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)\r\n\r\nI propose that we do the following:\r\n\r\n* Deprecate support for no version specified in a module tag, with a view to erroring completely in 9\r\n* Allow support for semver ranges in a version tag\r\n** (flag) Do we disallow ranges like \"*\" and \"latest\" to prevent users opting into this?\r\n\r\nDoing this would allow us to ship updates to modules that are breaking changes without requiring an semver major SDK version bump.\r\n", "attachment": [], "flagged": false, "summary": "CLI: Deprecate allowing no version to be set on a module in the tiapp", "creator": { "name": "eharris", "key": "eharris", "displayName": "Ewan Harris", "active": true, "timeZone": "Europe/Dublin" }, "subtasks": [], "reporter": { "name": "eharris", "key": "eharris", "displayName": "Ewan Harris", "active": true, "timeZone": "Europe/Dublin" }, "environment": null, "comment": { "comments": [ { "id": "446225", "author": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "body": "+1 for this!\r\n\r\nI don't think we should disallow any semver ranges. If we make the version field required and users decide to opt in for {{*}} or {{latest}} then they should know what they are doing. A note what this means and that it can possibly pull in breaking changes when updating the SDK should be in our docs, though.", "updateAuthor": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-02-21T14:52:24.000+0000", "updated": "2019-02-21T14:53:11.000+0000" }, { "id": "446226", "author": { "name": "eharris", "key": "eharris", "displayName": "Ewan Harris", "active": true, "timeZone": "Europe/Dublin" }, "body": "Yeah maybe we should just log a warning if someone is using a range like that to make it super explicit ", "updateAuthor": { "name": "eharris", "key": "eharris", "displayName": "Ewan Harris", "active": true, "timeZone": "Europe/Dublin" }, "created": "2019-02-21T14:56:15.000+0000", "updated": "2019-02-21T14:56:15.000+0000" }, { "id": "446227", "author": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "body": "Yup, i'm fine with that", "updateAuthor": { "name": "jvennemann", "key": "jvennemann", "displayName": "Jan Vennemann", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-02-21T14:57:51.000+0000", "updated": "2019-02-21T14:57:51.000+0000" }, { "id": "451436", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "Sometimes we're forced by third parties to ship breaking module updates. We should actively discourage default of \"latest\" for modules and encourage use of exact version numbers.", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2019-09-17T14:21:58.000+0000", "updated": "2019-09-17T14:21:58.000+0000" } ], "maxResults": 4, "total": 4, "startAt": 0 } } }