{"action":"created","issue":{"url":"https://api.github.com/repos/jbenet/random-ideas/issues/13","labels_url":"https://api.github.com/repos/jbenet/random-ideas/issues/13/labels{/name}","comments_url":"https://api.github.com/repos/jbenet/random-ideas/issues/13/comments","events_url":"https://api.github.com/repos/jbenet/random-ideas/issues/13/events","html_url":"https://github.com/jbenet/random-ideas/issues/13","id":35252216,"number":13,"title":"WebRTC DataChannel Everywhere","user":{"login":"jbenet","id":138401,"avatar_url":"https://avatars.githubusercontent.com/u/138401?v=3","gravatar_id":"","url":"https://api.github.com/users/jbenet","html_url":"https://github.com/jbenet","followers_url":"https://api.github.com/users/jbenet/followers","following_url":"https://api.github.com/users/jbenet/following{/other_user}","gists_url":"https://api.github.com/users/jbenet/gists{/gist_id}","starred_url":"https://api.github.com/users/jbenet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbenet/subscriptions","organizations_url":"https://api.github.com/users/jbenet/orgs","repos_url":"https://api.github.com/users/jbenet/repos","events_url":"https://api.github.com/users/jbenet/events{/privacy}","received_events_url":"https://api.github.com/users/jbenet/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":27,"created_at":"2014-06-09T00:38:22Z","updated_at":"2015-03-11T09:49:19Z","closed_at":null,"body":"#  WebRTC DataChannel Everywhere\r\n\r\n(I realized this many months ago, documenting it here for discussion)\r\n\r\nWebRTC is becoming the de-facto way to connect two peers in the web (thanks to @petar for pointing this out to me). While protocols like LEDBAT (uTP) work for most applications, those who would seek to interact with peers _running in browsers_ must use webrtc for the foreseeable future.\r\n\r\nWe can get everyone (servers + browsers) talking over WebRTC. But to do that we need servers to speak WebRTC. AFAIK, only browsers have implementations. And this is because `libwebrtc` (https://code.google.com/p/webrtc/) is a behemoth. It has libjingle + DataChannel + lots of A/V magic + much more in it.\r\n\r\n## We need\r\n1. a clean `libwebrtc` + language bindings. \r\n2. a `libwebdc` - only the datachannel part.\r\n\r\n(2.) is because many application use cases don't care at all about the A/V stuff, and only want to exchange data with peers. We only need WebRTC DataChannels (libjingle + datachannel implementation, SCTP, etc).\r\n\r\n## I propose\r\n- we rip out datachannel and make a standalone c lib, `libwebdc`\r\n- we build standard language bindings to it (node, Go, python, etc)\r\n- we experiment with (+ perhaps commit to) WebRTC DataChannel implementations in various languages.\r\n\r\nEventually, native language implementations may emerge, but frankly, rewriting libjingle, sctp, and whatever else on top of rewriting the DataChannel protocol, seems _much_ harder than ripping out the code we need from `libwebrtc` into `libwebdc`. (Would love to be proved wrong).\r\n\r\nI know many people are interested in this, so let's do it."},"comment":{"url":"https://api.github.com/repos/jbenet/random-ideas/issues/comments/78232887","html_url":"https://github.com/jbenet/random-ideas/issues/13#issuecomment-78232887","issue_url":"https://api.github.com/repos/jbenet/random-ideas/issues/13","id":78232887,"user":{"login":"jbenet","id":138401,"avatar_url":"https://avatars.githubusercontent.com/u/138401?v=3","gravatar_id":"","url":"https://api.github.com/users/jbenet","html_url":"https://github.com/jbenet","followers_url":"https://api.github.com/users/jbenet/followers","following_url":"https://api.github.com/users/jbenet/following{/other_user}","gists_url":"https://api.github.com/users/jbenet/gists{/gist_id}","starred_url":"https://api.github.com/users/jbenet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbenet/subscriptions","organizations_url":"https://api.github.com/users/jbenet/orgs","repos_url":"https://api.github.com/users/jbenet/repos","events_url":"https://api.github.com/users/jbenet/events{/privacy}","received_events_url":"https://api.github.com/users/jbenet/received_events","type":"User","site_admin":false},"created_at":"2015-03-11T09:49:19Z","updated_at":"2015-03-11T09:49:19Z","body":"DataChannel support merged 8 days ago into openwebrtc. EricssonResearch/openwebrtc#3"}}