{ "id": "153016", "key": "ALOY-1329", "fields": { "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false }, "project": { "id": "11113", "key": "ALOY", "name": "Alloy", "projectCategory": { "id": "10400", "description": "Tools for developing applications", "name": "Tooling" } }, "fixVersions": [], "resolution": null, "resolutiondate": null, "created": "2015-11-12T09:22:38.000+0000", "priority": { "name": "None", "id": "6" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "updated": "2015-11-12T09:22:38.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": [], "description": "We try to keep Alloy up to date with the Titanium SDK changes. Sometimes this means we break Alloy when used with older SDKs.\r\n\r\n*Example*\r\n\r\n* Since [Alloy 1.7.19|https://github.com/appcelerator/alloy/releases/tag/1.7.19] we now map {{}} to {{Ti.UI.iOS}} instead of {{Ti.UI.iPad}}.\r\n* This means that if I use Alloy 1.7.19 and Titanium 3.5.1.GA I will get an exception when I use {{}} because [Ti.UI.iOS.SplitWindow|http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.iOS.SplitWindow] was added in Titanium 4.0.0.GA\r\n\r\n*Solution*\r\n\r\nLike Titanium, Alloy should list {{vendorDependencies}} in [package.json|https://github.com/appcelerator/titanium_mobile/blob/master/package.json#L59] to specify the minimum Titanium SDK version it can be used with. This should be validated before it compiles so that the user can be informed.\r\n\r\nThe alternative would be to keep Alloy backwards compatible with older Titanium SDKs. So in the case of the example, the namespace should be mapped based on the SDK version used.\r\n\r\nBoth have pros and cons.\r\n\r\nTo add to the complexity, the dependency chains with OSS and the Platform are different:\r\n\r\n_Before the Unified CLI / with OSS_\r\n\r\n* Titanium CLI version is determined by {{npm i -g titanium}}\r\n* Titanium SDK version is determined by {{tiapp.xml}}\r\n* Alloy version is determined by {{npm i -g alloy}}\r\n\r\n_With the Unified CLI_\r\n\r\n* Appcelerator CLI Core Package is determined by {{appc use}}\r\n* Titanium CLI version is determined by Core Package\r\n* Alloy version is determined by Core Package", "attachment": [], "flagged": false, "summary": "Either keep Alloy backwards compatible with older Titanium SDKs or specify and validate minimum version", "creator": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "subtasks": [], "reporter": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "environment": null, "comment": { "comments": [], "maxResults": 0, "total": 0, "startAt": 0 } } }