{ "id": "172628", "key": "TIMOB-26570", "fields": { "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "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": "2018-11-16T15:24:04.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "2019-cl" ], "versions": [], "issuelinks": [ { "id": "57019", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "160269", "key": "TIMOB-23381", "fields": { "summary": "Parity: Titanium CommonJS modules require'd differently than NodeJS require spec", "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": "Critical", "id": "1" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "57018", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "160270", "key": "TIMOB-23382", "fields": { "summary": "Parity: Cannot require directory as done in NodeJS", "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": "Critical", "id": "1" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "57021", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "124137", "key": "TIMOB-16078", "fields": { "summary": "Implement full NodeJS require specs so we can use NPM for modules", "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": "Critical", "id": "1" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "57020", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "155148", "key": "TIMOB-20472", "fields": { "summary": "Allow require to find modules in node_modules, etc", "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": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "57016", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "171739", "key": "TIMOB-26093", "fields": { "summary": "Integrate Karma unit test runner into SDK", "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": "Medium", "id": "3" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } } ], "assignee": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "updated": "2021-02-08T18:58: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": [ { "id": "10202", "name": "Android", "description": "Android Platform" }, { "id": "10206", "name": "iOS", "description": "iOS Platform" }, { "id": "10224", "name": "TiAPI", "description": "This component is used for cross-platform API work. Specifications are most likely to use this component." }, { "id": "10207", "name": "Tooling" }, { "id": "12642", "name": "Windows", "description": "Windows authoring support" } ], "description": "It's pretty clear that Node.js is the dominant JavaScript engine/experience for developers, and there's a huge ecosystem of npm packages to use.\r\n\r\nWe should allow our developers to leverage all that code, as well as the package management and tooling.", "attachment": [], "flagged": false, "summary": "Node compatibility and developer experience", "creator": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "subtasks": [], "reporter": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "environment": null, "comment": { "comments": [ { "id": "443699", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "People have tried to hack around this for years, and here's the most popular means of doing so: https://github.com/smclab/titaniumifier", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2018-11-16T16:18:00.000+0000", "updated": "2018-11-16T16:18:00.000+0000" }, { "id": "444942", "author": { "name": "yuchi", "key": "yuchi", "displayName": "Pier Paolo Ramon", "active": true, "timeZone": "Europe/Berlin" }, "body": "Creator and (once upon a time) maintainer of titaniumifier here.\r\n\r\nWe at SMC are still very willing to share details on expected developer experience and integration implementation.\r\n\r\nJust small food for thoughts: *Node.js compatibility is a lower priority than access to npm/Yarn distribution process and ecosystem.* Technically Titanium SDK should support just the bare minimum… the problem is that you accumulated a little bit of delay and alternative platforms have a strong story on this already.\r\n\r\nAlso you should also get rid of all inconsistencies in “almost, but not quite, entirely unlike”-Web APIs (I’m looking at you {{Ti.Network.HTTPClient}}) or provide new entry points that either act correctly (such as {{XMLHTTPRequest}}) or are implemented through Node.js APIs ({{require('http')}}).\r\n\r\nAnother crucial thing would be to contribute implementation to _de facto_ standard libraries, such as [socket.io|https://socket.io/]. See the [corresponding issue on the socket.io repo|https://github.com/socketio/socket.io/issues/1590], dating back to 2014, with *41 comments* and thus making it the *third issue by comments number* in the repo. At the time the maintainer of {{superagent}} was [willing to accept|https://github.com/visionmedia/superagent/issues/529#issuecomment-75417508] an extension for Titanium SDK but I personally never got to the stage to make a PR because I found too many problems on offering a reliable API to developers.\r\n\r\n_*Please note:* I’ve not been part of the Titanium community for a long time, the aforementioned issues could have been solved in the meanwhile. Sorry if that’s the case._", "updateAuthor": { "name": "yuchi", "key": "yuchi", "displayName": "Pier Paolo Ramon", "active": true, "timeZone": "Europe/Berlin" }, "created": "2019-01-02T22:06:11.000+0000", "updated": "2019-01-02T22:06:11.000+0000" } ], "maxResults": 2, "total": 2, "startAt": 0 } } }