{"action":"created","issue":{"url":"https://api.github.com/repos/js-platform/node-webrtc/issues/272","repository_url":"https://api.github.com/repos/js-platform/node-webrtc","labels_url":"https://api.github.com/repos/js-platform/node-webrtc/issues/272/labels{/name}","comments_url":"https://api.github.com/repos/js-platform/node-webrtc/issues/272/comments","events_url":"https://api.github.com/repos/js-platform/node-webrtc/issues/272/events","html_url":"https://github.com/js-platform/node-webrtc/pull/272","id":157350800,"number":272,"title":"Build WebRTC separately","user":{"login":"markandrus","id":359154,"avatar_url":"https://avatars.githubusercontent.com/u/359154?v=3","gravatar_id":"","url":"https://api.github.com/users/markandrus","html_url":"https://github.com/markandrus","followers_url":"https://api.github.com/users/markandrus/followers","following_url":"https://api.github.com/users/markandrus/following{/other_user}","gists_url":"https://api.github.com/users/markandrus/gists{/gist_id}","starred_url":"https://api.github.com/users/markandrus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/markandrus/subscriptions","organizations_url":"https://api.github.com/users/markandrus/orgs","repos_url":"https://api.github.com/users/markandrus/repos","events_url":"https://api.github.com/users/markandrus/events{/privacy}","received_events_url":"https://api.github.com/users/markandrus/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2016-05-28T18:19:05Z","updated_at":"2016-06-07T07:57:53Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/js-platform/node-webrtc/pulls/272","html_url":"https://github.com/js-platform/node-webrtc/pull/272","diff_url":"https://github.com/js-platform/node-webrtc/pull/272.diff","patch_url":"https://github.com/js-platform/node-webrtc/pull/272.patch"},"body":"@modeswitch this proof-of-concept separates out the task of building WebRTC from node-webrtc itself. I think this has a few benefits:\r\n\r\n1. **Separation of concerns:** Many issues in the issue tracker stem from difficulty building WebRTC; if we could redirect efforts building WebRTC and making binaries available to a separate project, it might refocus our issue tracker.\r\n2. **Easier to keep up-to-date with WebRTC:** AFAIK, [libwebrtc](https://github.com/js-platform/libwebrtc) was set up to simplify/speed up WebRTC builds, but I think it actually binds more than aids our project because we don't get new features, improved Windows support, etc.\r\n3. **Quicker CI build times (e.g. with Travis CI, Appveyor, etc.):** If we can get a separate project building and publishing WebRTC, downloads of WebRTC libraries and headers are just ~~\\~60 mb~~ (actually, I was building thin libs—will need to adjust this number!); this makes it much easier for us to test OS X, Linux, Windows, etc.\r\n  * It also means we could spin up VMs every once in a while to do the big task of building and publishing WebRTC binaries, and then Travis and Appveyor could be used to build and publish node-webrtc binaries much more easily.\r\n\r\nIn this particular PR, I've updated node-webrtc to use WebRTC 50, built by my [build-webrtc](https://github.com/markandrus/build-webrtc) project ~~(I've also experimented with a Jakefile, this is still very much WIP)~~.\r\n\r\nSome things I think need answered/addressed in this PR:\r\n\r\n1. [x] Should probably have a way to build WebRTC from source rather than download a binary (or as a fallback when binaries are unavailable). Concerned about fragility of build scripts. **Answer**: [webrtc-librares-and-headers](https://github.com/markandrus/webrtc-libraries-and-headers) provides a fallback option.\r\n2. [x] ~~Would like to be able to specify WebRTC as a dependency in the package.json, rather than use a script to download and extract it.~~ ~~**Answer:** After looking into this, I think it is not a great idea. The dependency would have to use a postinstall script to pull appropriate binaries for the platform/arch. If we just let node-webrtc pull the binaries, if available, we have one less dependency. May still need a dependency for building WebRTC.~~ Maybe a dependency like [webrtc-librares-and-headers](https://github.com/markandrus/webrtc-libraries-and-headers) does simplify things?\r\n3. [x] What should we do with libwebrtc? Should we combine the work from build-webrtc into libwebrtc? I kind of like the idea of publishing libwebrtc to NPM, e.g. with node-pre-gyp, and specifying it as a dependency of node-webrtc. **Answer:** Let libwebrtc go away and just start tracking WebRTC.\r\n4. [x] Just noticed: build-webrtc was producing thin libs; need to update."},"comment":{"url":"https://api.github.com/repos/js-platform/node-webrtc/issues/comments/224207485","html_url":"https://github.com/js-platform/node-webrtc/pull/272#issuecomment-224207485","issue_url":"https://api.github.com/repos/js-platform/node-webrtc/issues/272","id":224207485,"user":{"login":"Globik","id":8457017,"avatar_url":"https://avatars.githubusercontent.com/u/8457017?v=3","gravatar_id":"","url":"https://api.github.com/users/Globik","html_url":"https://github.com/Globik","followers_url":"https://api.github.com/users/Globik/followers","following_url":"https://api.github.com/users/Globik/following{/other_user}","gists_url":"https://api.github.com/users/Globik/gists{/gist_id}","starred_url":"https://api.github.com/users/Globik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Globik/subscriptions","organizations_url":"https://api.github.com/users/Globik/orgs","repos_url":"https://api.github.com/users/Globik/repos","events_url":"https://api.github.com/users/Globik/events{/privacy}","received_events_url":"https://api.github.com/users/Globik/received_events","type":"User","site_admin":false},"created_at":"2016-06-07T07:57:53Z","updated_at":"2016-06-07T07:57:53Z","body":"Nice job, @markandrus "}}
{"actor":{"display_login":"Globik"}}