{"action":"created","issue":{"url":"https://api.github.com/repos/libp2p/go-libp2p-daemon/issues/1","repository_url":"https://api.github.com/repos/libp2p/go-libp2p-daemon","labels_url":"https://api.github.com/repos/libp2p/go-libp2p-daemon/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/libp2p/go-libp2p-daemon/issues/1/comments","events_url":"https://api.github.com/repos/libp2p/go-libp2p-daemon/issues/1/events","html_url":"https://github.com/libp2p/go-libp2p-daemon/issues/1","id":358807276,"node_id":"MDU6SXNzdWUzNTg4MDcyNzY=","number":1,"title":"Design discussion","user":{"login":"bigs","id":213338,"node_id":"MDQ6VXNlcjIxMzMzOA==","avatar_url":"https://avatars0.githubusercontent.com/u/213338?v=4","gravatar_id":"","url":"https://api.github.com/users/bigs","html_url":"https://github.com/bigs","followers_url":"https://api.github.com/users/bigs/followers","following_url":"https://api.github.com/users/bigs/following{/other_user}","gists_url":"https://api.github.com/users/bigs/gists{/gist_id}","starred_url":"https://api.github.com/users/bigs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bigs/subscriptions","organizations_url":"https://api.github.com/users/bigs/orgs","repos_url":"https://api.github.com/users/bigs/repos","events_url":"https://api.github.com/users/bigs/events{/privacy}","received_events_url":"https://api.github.com/users/bigs/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"vyzo","id":36426,"node_id":"MDQ6VXNlcjM2NDI2","avatar_url":"https://avatars0.githubusercontent.com/u/36426?v=4","gravatar_id":"","url":"https://api.github.com/users/vyzo","html_url":"https://github.com/vyzo","followers_url":"https://api.github.com/users/vyzo/followers","following_url":"https://api.github.com/users/vyzo/following{/other_user}","gists_url":"https://api.github.com/users/vyzo/gists{/gist_id}","starred_url":"https://api.github.com/users/vyzo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vyzo/subscriptions","organizations_url":"https://api.github.com/users/vyzo/orgs","repos_url":"https://api.github.com/users/vyzo/repos","events_url":"https://api.github.com/users/vyzo/events{/privacy}","received_events_url":"https://api.github.com/users/vyzo/received_events","type":"User","site_admin":false},"assignees":[{"login":"vyzo","id":36426,"node_id":"MDQ6VXNlcjM2NDI2","avatar_url":"https://avatars0.githubusercontent.com/u/36426?v=4","gravatar_id":"","url":"https://api.github.com/users/vyzo","html_url":"https://github.com/vyzo","followers_url":"https://api.github.com/users/vyzo/followers","following_url":"https://api.github.com/users/vyzo/following{/other_user}","gists_url":"https://api.github.com/users/vyzo/gists{/gist_id}","starred_url":"https://api.github.com/users/vyzo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vyzo/subscriptions","organizations_url":"https://api.github.com/users/vyzo/orgs","repos_url":"https://api.github.com/users/vyzo/repos","events_url":"https://api.github.com/users/vyzo/events{/privacy}","received_events_url":"https://api.github.com/users/vyzo/received_events","type":"User","site_admin":false},{"login":"bigs","id":213338,"node_id":"MDQ6VXNlcjIxMzMzOA==","avatar_url":"https://avatars0.githubusercontent.com/u/213338?v=4","gravatar_id":"","url":"https://api.github.com/users/bigs","html_url":"https://github.com/bigs","followers_url":"https://api.github.com/users/bigs/followers","following_url":"https://api.github.com/users/bigs/following{/other_user}","gists_url":"https://api.github.com/users/bigs/gists{/gist_id}","starred_url":"https://api.github.com/users/bigs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bigs/subscriptions","organizations_url":"https://api.github.com/users/bigs/orgs","repos_url":"https://api.github.com/users/bigs/repos","events_url":"https://api.github.com/users/bigs/events{/privacy}","received_events_url":"https://api.github.com/users/bigs/received_events","type":"User","site_admin":false},{"login":"Stebalien","id":310393,"node_id":"MDQ6VXNlcjMxMDM5Mw==","avatar_url":"https://avatars2.githubusercontent.com/u/310393?v=4","gravatar_id":"","url":"https://api.github.com/users/Stebalien","html_url":"https://github.com/Stebalien","followers_url":"https://api.github.com/users/Stebalien/followers","following_url":"https://api.github.com/users/Stebalien/following{/other_user}","gists_url":"https://api.github.com/users/Stebalien/gists{/gist_id}","starred_url":"https://api.github.com/users/Stebalien/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Stebalien/subscriptions","organizations_url":"https://api.github.com/users/Stebalien/orgs","repos_url":"https://api.github.com/users/Stebalien/repos","events_url":"https://api.github.com/users/Stebalien/events{/privacy}","received_events_url":"https://api.github.com/users/Stebalien/received_events","type":"User","site_admin":false},{"login":"raulk","id":1101242,"node_id":"MDQ6VXNlcjExMDEyNDI=","avatar_url":"https://avatars0.githubusercontent.com/u/1101242?v=4","gravatar_id":"","url":"https://api.github.com/users/raulk","html_url":"https://github.com/raulk","followers_url":"https://api.github.com/users/raulk/followers","following_url":"https://api.github.com/users/raulk/following{/other_user}","gists_url":"https://api.github.com/users/raulk/gists{/gist_id}","starred_url":"https://api.github.com/users/raulk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/raulk/subscriptions","organizations_url":"https://api.github.com/users/raulk/orgs","repos_url":"https://api.github.com/users/raulk/repos","events_url":"https://api.github.com/users/raulk/events{/privacy}","received_events_url":"https://api.github.com/users/raulk/received_events","type":"User","site_admin":false},{"login":"vasco-santos","id":7295071,"node_id":"MDQ6VXNlcjcyOTUwNzE=","avatar_url":"https://avatars2.githubusercontent.com/u/7295071?v=4","gravatar_id":"","url":"https://api.github.com/users/vasco-santos","html_url":"https://github.com/vasco-santos","followers_url":"https://api.github.com/users/vasco-santos/followers","following_url":"https://api.github.com/users/vasco-santos/following{/other_user}","gists_url":"https://api.github.com/users/vasco-santos/gists{/gist_id}","starred_url":"https://api.github.com/users/vasco-santos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vasco-santos/subscriptions","organizations_url":"https://api.github.com/users/vasco-santos/orgs","repos_url":"https://api.github.com/users/vasco-santos/repos","events_url":"https://api.github.com/users/vasco-santos/events{/privacy}","received_events_url":"https://api.github.com/users/vasco-santos/received_events","type":"User","site_admin":false}],"milestone":null,"comments":11,"created_at":"2018-09-10T21:48:12Z","updated_at":"2018-10-05T14:07:37Z","closed_at":null,"author_association":"COLLABORATOR","body":"Opening a thread for the discussion of the control API for our daemon. \r\n\r\n# Control API\r\n\r\n## Responsibilities\r\n\r\n- Peerstore management\r\n- Stream creation (connect if connection does not exist)\r\n- General information retrieval\r\n  - Open connections\r\n  - Open streams\r\n  - Peerstore size\r\n- Register protocol handlers\r\n\r\n## Implementation details\r\n\r\nTwo solid options:\r\n\r\n- HTTP/JSON\r\n  - Requires polling for incoming connections\r\n- JSON over TCP\r\n  - Bidirectional, so we can push incoming stream notices to users\r\n\r\n# Stream Proxy\r\n\r\n## Responsibilities\r\n\r\n- Proxy streams to end users, taking care of all security (secio, TLS) and multiplexing (yamux, etc)\r\n- Clients should be able to close streams (i.e. close a file handle)\r\n- Incoming streams on registered protocols should create new streams\r\n\r\n## Implementation details\r\n\r\n_Editor's note: I think we can get away by polling the filesystem/shared memory where our streams are created as opposed to polling the control API, which would make things simpler._\r\n\r\n- Unix sockets\r\n  - One socket per stream\r\n  - Organized on filesystem by connection id\r\n  - Seems Windows support has landed\r\n- shmem\r\n  - Likely fastest implementation\r\n  - Certainly most complex, least platform agnostic\r\n    - There exists a Windows alternative, but it has a separate API. Perhaps something to be dealt with in a golang library\r\n- Proxy Filesystems (FUSE, WinFSP)\r\n  - Heavier than unix sockets\r\n"},"comment":{"url":"https://api.github.com/repos/libp2p/go-libp2p-daemon/issues/comments/427378239","html_url":"https://github.com/libp2p/go-libp2p-daemon/issues/1#issuecomment-427378239","issue_url":"https://api.github.com/repos/libp2p/go-libp2p-daemon/issues/1","id":427378239,"node_id":"MDEyOklzc3VlQ29tbWVudDQyNzM3ODIzOQ==","user":{"login":"bigs","id":213338,"node_id":"MDQ6VXNlcjIxMzMzOA==","avatar_url":"https://avatars0.githubusercontent.com/u/213338?v=4","gravatar_id":"","url":"https://api.github.com/users/bigs","html_url":"https://github.com/bigs","followers_url":"https://api.github.com/users/bigs/followers","following_url":"https://api.github.com/users/bigs/following{/other_user}","gists_url":"https://api.github.com/users/bigs/gists{/gist_id}","starred_url":"https://api.github.com/users/bigs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bigs/subscriptions","organizations_url":"https://api.github.com/users/bigs/orgs","repos_url":"https://api.github.com/users/bigs/repos","events_url":"https://api.github.com/users/bigs/events{/privacy}","received_events_url":"https://api.github.com/users/bigs/received_events","type":"User","site_admin":false},"created_at":"2018-10-05T14:07:37Z","updated_at":"2018-10-05T14:07:37Z","author_association":"COLLABORATOR","body":"@cheatfate the spec has actually been formalized (in its current state) in `SPEC.md`. shm was thrown around as a more direct, efficient, method of IPC. we're not approaching it at the moment."}}
{"actor":{"display_login":"bigs"}}