{"action":"created","issue":{"url":"https://api.github.com/repos/senecajs/seneca/issues/399","repository_url":"https://api.github.com/repos/senecajs/seneca","labels_url":"https://api.github.com/repos/senecajs/seneca/issues/399/labels{/name}","comments_url":"https://api.github.com/repos/senecajs/seneca/issues/399/comments","events_url":"https://api.github.com/repos/senecajs/seneca/issues/399/events","html_url":"https://github.com/senecajs/seneca/issues/399","id":149496703,"number":399,"title":"Transport V3 Roundtable","user":{"login":"mcdonnelldean","id":3625961,"avatar_url":"https://avatars.githubusercontent.com/u/3625961?v=3","gravatar_id":"","url":"https://api.github.com/users/mcdonnelldean","html_url":"https://github.com/mcdonnelldean","followers_url":"https://api.github.com/users/mcdonnelldean/followers","following_url":"https://api.github.com/users/mcdonnelldean/following{/other_user}","gists_url":"https://api.github.com/users/mcdonnelldean/gists{/gist_id}","starred_url":"https://api.github.com/users/mcdonnelldean/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcdonnelldean/subscriptions","organizations_url":"https://api.github.com/users/mcdonnelldean/orgs","repos_url":"https://api.github.com/users/mcdonnelldean/repos","events_url":"https://api.github.com/users/mcdonnelldean/events{/privacy}","received_events_url":"https://api.github.com/users/mcdonnelldean/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/senecajs/seneca/labels/discussion","name":"discussion","color":"d4c5f9"},{"url":"https://api.github.com/repos/senecajs/seneca/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":25,"created_at":"2016-04-19T15:31:15Z","updated_at":"2016-04-20T11:10:16Z","closed_at":null,"body":"This issue is a place to hash out the message spec and other salient details of transport.\r\n\r\nThe proposed spec is here: https://github.com/senecajs/seneca/blob/master/doc/transport.md\r\n\r\n## Current Version Samples\r\n\r\n### Inbound messages\r\n\r\n#### `role:github,cmd:get`\r\n```json\r\n{\r\n  \"role\": \"npm\",\r\n  \"cmd\": \"get\",\r\n  \"name\": \"hapi\",\r\n  \"transport$\": {\r\n    \"track\": [],\r\n    \"origin\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36\",\r\n    \"time\": {\r\n      \"client_sent\": 1461086855637\r\n    }\r\n  },\r\n  \"ungate$\": true,\r\n  \"tx$\": \"72t2ysuc8rae\",\r\n  \"meta$\": {\r\n    \"id\": \"mk05ddwzcqex/72t2ysuc8rae\",\r\n    \"tx\": \"72t2ysuc8rae\",\r\n    \"start\": 1461086855638,\r\n    \"pattern\": \"cmd:get,role:npm\",\r\n    \"action\": \"(s5iy3du8vb40)\",\r\n    \"entry\": true,\r\n    \"chain\": [],\r\n    \"sync\": true,\r\n    \"sub\": \"role:npm\"\r\n  },\r\n  \"in$\": true\r\n}\r\n```"},"comment":{"url":"https://api.github.com/repos/senecajs/seneca/issues/comments/212383643","html_url":"https://github.com/senecajs/seneca/issues/399#issuecomment-212383643","issue_url":"https://api.github.com/repos/senecajs/seneca/issues/399","id":212383643,"user":{"login":"mcdonnelldean","id":3625961,"avatar_url":"https://avatars.githubusercontent.com/u/3625961?v=3","gravatar_id":"","url":"https://api.github.com/users/mcdonnelldean","html_url":"https://github.com/mcdonnelldean","followers_url":"https://api.github.com/users/mcdonnelldean/followers","following_url":"https://api.github.com/users/mcdonnelldean/following{/other_user}","gists_url":"https://api.github.com/users/mcdonnelldean/gists{/gist_id}","starred_url":"https://api.github.com/users/mcdonnelldean/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcdonnelldean/subscriptions","organizations_url":"https://api.github.com/users/mcdonnelldean/orgs","repos_url":"https://api.github.com/users/mcdonnelldean/repos","events_url":"https://api.github.com/users/mcdonnelldean/events{/privacy}","received_events_url":"https://api.github.com/users/mcdonnelldean/received_events","type":"User","site_admin":false},"created_at":"2016-04-20T11:10:16Z","updated_at":"2016-04-20T11:10:16Z","body":"@mcollina V3 and V4 need to talk, as do V4 and V5 but not V5 and V3. Single major backwards is the deal. This may mean we have to build in some negotiation logic or you may need to add a plugin to support negotiation. What we did with Entities was to just wrap it all in a plugin and pull it out, if you need back compat you load the plugin. I'm fine with this as a 'code change' as it's a compositional concern.\r\n\r\nFrom a customer point of view there is no way the community will stand for us rewriting transports over a single version with no back compat. This would draw the fires for fury and is a red line.\r\n\r\nHaving said that, let's not fret too much on this. It's an implementation concern like any other and doesn't change the work that can be done, just the order in which it's done.\r\n\r\nRealistically Transport is supposed to be fully pluggable (which it's not) this might be the first item of work. Unhook transport internally and it all the issues go away since we can offer it as a transport swap.\r\n\r\nWe must support: http://senecajs.org/contribute/principles.html\r\n\r\nAgreed on all your other comments."}}