{"action":"created","issue":{"url":"https://api.github.com/repos/nodejs/node/issues/5046","repository_url":"https://api.github.com/repos/nodejs/node","labels_url":"https://api.github.com/repos/nodejs/node/issues/5046/labels{/name}","comments_url":"https://api.github.com/repos/nodejs/node/issues/5046/comments","events_url":"https://api.github.com/repos/nodejs/node/issues/5046/events","html_url":"https://github.com/nodejs/node/issues/5046","id":130863832,"number":5046,"title":"Evolving core APIs with versioned modules","user":{"login":"phpnode","id":363611,"avatar_url":"https://avatars.githubusercontent.com/u/363611?v=3","gravatar_id":"","url":"https://api.github.com/users/phpnode","html_url":"https://github.com/phpnode","followers_url":"https://api.github.com/users/phpnode/followers","following_url":"https://api.github.com/users/phpnode/following{/other_user}","gists_url":"https://api.github.com/users/phpnode/gists{/gist_id}","starred_url":"https://api.github.com/users/phpnode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phpnode/subscriptions","organizations_url":"https://api.github.com/users/phpnode/orgs","repos_url":"https://api.github.com/users/phpnode/repos","events_url":"https://api.github.com/users/phpnode/events{/privacy}","received_events_url":"https://api.github.com/users/phpnode/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/nodejs/node/labels/discuss","name":"discuss","color":"02d7e1"},{"url":"https://api.github.com/repos/nodejs/node/labels/meta","name":"meta","color":"fef2c0"},{"url":"https://api.github.com/repos/nodejs/node/labels/module","name":"module","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2016-02-03T00:19:49Z","updated_at":"2016-02-03T00:41:05Z","closed_at":null,"body":"The promises PR (#5020) is generating a lot of discussion around how best to support new language features on top of core APIs, without breaking backwards compatibility. One of the proposals (originally by @domenic I think) was to package this new functionality in explicitly versioned core modules.\r\n\r\nFor example, users could continue to use the existing callback based fs API using `require('fs')`, or they could opt into the new promise based API with `require('fs/2')`. Neither would compromise API legibility, backwards compatibility or performance.\r\n\r\nTaking this approach would allow node to respond to future changes in the core language without hurting the existing ecosystem.\r\n\r\n@chrisdickinson wanted to keep this discussion out of the promises PR, but I'd argue that shipping promises support would be a lot easier and cleaner if we could do this. Opening this issue here to gauge reactions."},"comment":{"url":"https://api.github.com/repos/nodejs/node/issues/comments/178918129","html_url":"https://github.com/nodejs/node/issues/5046#issuecomment-178918129","issue_url":"https://api.github.com/repos/nodejs/node/issues/5046","id":178918129,"user":{"login":"Qard","id":205482,"avatar_url":"https://avatars.githubusercontent.com/u/205482?v=3","gravatar_id":"","url":"https://api.github.com/users/Qard","html_url":"https://github.com/Qard","followers_url":"https://api.github.com/users/Qard/followers","following_url":"https://api.github.com/users/Qard/following{/other_user}","gists_url":"https://api.github.com/users/Qard/gists{/gist_id}","starred_url":"https://api.github.com/users/Qard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Qard/subscriptions","organizations_url":"https://api.github.com/users/Qard/orgs","repos_url":"https://api.github.com/users/Qard/repos","events_url":"https://api.github.com/users/Qard/events{/privacy}","received_events_url":"https://api.github.com/users/Qard/received_events","type":"User","site_admin":false},"created_at":"2016-02-03T00:41:05Z","updated_at":"2016-02-03T00:41:05Z","body":"If we put the version number *before* the name, we could support deeper paths. Might be nice to have stuff like `require('2/net/tcp')` in the future, namespacing related bits together."}}