I am hearing too much crap about WebRTC and it is pissing me off.
I have been in a couple of events lately and read my share of posts about WebRTC.
What has been obvious is how much misinformation there is out there about WebRTC. And I am not talking about those that don’t believe in it, but rather by those that are domain experts in WebRTC and try to explain it to others. I am sure I make my share of mistakes as well, and if I do – please comment about it – I am learning this field myself as I go along and the assistance of the smart people that stumble into this blog and have scars to show from WebRTC is important to me.
I thought about the reasons this is happening. The best I can come up with is that as much as WebRTC seems simple and elegant, the technology itself is quite hard to grok – it just requires a lot of disciplines to get properly.
- Voice codecs – you need to know your way with voice codecs. There’s Opus and G.711. There are other voice codecs in existing VoIP deployments. Sometimes you wish to connect them. Other times not at all. There’s this nagging bottleneck of having Opus in various devices and server side media engines, and the need to understand narrowband and wideband
- Video codecs – there’s video as well. And it is VP8 and not H.264. With or without SVC. Patent disputes around it. Then there’s processing power, hardware acceleration, availability on chipsets, resolutions and frame rates
- Media processing – real time processing of media means a lot more than just codecs. It requires understanding of echo cancellation and other characteristics of voice. Similar things for video. Lip synchronization for voice and video. Nasty stuff based a lot on heuristics and “best practices”
- Network management – dealing with networks and providing low latency experience isn’t easy. It takes understanding of network behavior. The differences between LAN, ADSL, 3G, LTE – each one with its own quirks
- Signaling – there is no signaling in WebRTC, which is a good thing, but it doesn’t mean that the developer’s life is easier due to that – it just says he can select the most suitable tool for the job
- Security – no way to get around security with WebRTC – another good thing. But again, dealing with that and connecting it to other VoIP domains can make it a challenge. Top that with the fact that signaling security is ignored here and is left to the developer and you’ve got a good recipe for a future PR disaster
- NAT traversal – another one of these challenges. Especially for those not coming from the VoIP domain but rather from the web
- Infrastructure – WebRTC is just a client side implementation and a spec. How to build the whole backend is left wide open, making it a challenge and an opportunity
- Server side components – Node.js? Java web server? A FreeSWITCH/Asterisk server? What about your own? Too many options out there that can fit
- Java Script – not something VoIP developers are used to or understand that well. And now it is their interface to communication
- Chipsets – if that’s not enough, then if and how chipsets support and assist with WebRTC is also something that many don’t understand
- Native development – heading to mobile? Should it be a browser deployment for your service? A webview embedded in a native app or just pure coding on top of a low level WebRTC implementation? How does these impact what you are doing?
- Virtualized, Dedicated, Cloud or Data Center – how exactly should it be deployed? Can it fit all of them or some? Maybe a hybrid approach? Do you really know the differences and how they affect WebRTC?
- SoCoMo – The Social/Mobile/Cloud acronym that I’ve seen lately has its place in WebRTC as well. This combination isn’t easy – not on the business side and not on the technology side
I can’t say I have the answers to it all – it is a lot of area to cover. I am not sure it is even possible. Please – stop BSing people about WebRTC – focus on what you do know in that domain and say you don’t know when you really don’t. People will value your opinion more that way and others will find it hard to say WebRTC is overhyped.