Similar to standard protocols such as SIP, WebRTC is also a standard. As such, there can be several implementations of the standard. Even though the known implementation is the open source coming from Google, it is not the only implementation. This interview is with Stefan Alund from Ericsson; Stefan is a Research Manager at Ericsson Research in Stockholm, heading the team behind OpenWebRTC.
What is OpenWebRTC?
OpenWebRTC is a new ambitious Open Source project released by Ericsson Research a couple of months ago. It is an alternative WebRTC client framework to support the widely used WebRTC standard.
Our team has been working with the WebRTC standard and implementations of the standard since the beginning. Early on we understood that WebRTC would not be confined to the browser only, but would rather run also as native apps on mobile devices. With this realization we set out to build a cross-platform client framework so that we could build WebRTC apps for every environment. Native apps are especially important for mobile devices where the primary way to distribute your app is through an app store.
The framework was developed and used internally at Ericsson over a number of years before we decided to release it as a free and open source project.
The code is available on GitHub at https://github.com/EricssonResearch/openwebrtc under the BSD-2 license. This permissive license allows you to do pretty much whatever you like with the code, with no obligations to redistribute modifications. The official website for the project is http://www.openwebrtc.io where you will find a blog and more background information. There is also a Twitter account at https://twitter.com/OpenWebRTC.
Why do we need another implementation of WebRTC we already have the one from Google?
Having only one implementation of a standard is ultimately not good for the industry. For example, both W3C and IETF requires there to be at least two independent, interoperable implementations of the standard before it is fully ratified. The availability of different browser rendering engines; such as WebKit, Mozilla’s Gecko, IE etc, has been very important for the evolution of the web. WebRTC on the other hand, has been lacking that kind of healthy competition. In fact, for many the distinction between what is the WebRTC standard and what is an implementation of the standard has become blurry. I guess it doesn’t help that Google decided to name their implementation WebRTC 🙂
Google has done a great job with their implementation, but its primary intent is to be used in browsers and therefore presents some challenges for developers looking to build native mobile applications.
What makes OpenWebRTC special?
OpenWebRTC has been designed from the start to be a flexible framework that is easy to extend for different needs. It has great support for building native apps for iOS, Android and other desktop platforms.
One such example is the recently landed support for doing video coding in hardware on iOS. This means that you can achieve video quality similar to FaceTime in your native WebRTC apps (we reach up to 720P @ 60FPS) with low CPU and battery utilization, while still maintaining WebRTC compatibility with browsers that implement the H.264 video codec, such as Firefox, but also compatibility with most existing video conferencing solutions (currently access to HW acceleration in iOS8 is for H.264 only). We think the quality improvement and battery life savings you get is somewhat of a game changer on mobile.
What have you used to build OpenWebRTC?
As one of the reasons for releasing this project is to be independent from the Google WebRTC implementation, we have not used any of their code in OpenWebRTC.
Instead, one of its main ingredients is that OpenWebRTC is built on top of the widely used and super powerful multimedia framework GStreamer. This means that we get a lot of the tricky low-level real-time components for free, and we have more time to focus on building WebRTC specifics and SDK’s for multiple platforms.
Our engineers have done a fantastic job on the software architecture. The bulk of the API layer has been written in JavaScript, making it super simple to modify and extend as the WebRTC standard continues to evolve. We haven’t started working on it yet, but we believe that implementing support for ORTC will therefore be quite simple.
Is OpenWebRTC going to create fragmentation, how will interoperability with the Google WebRTC implementation be verified?
Apps built on top of OpenWebRTC are already interoperable with Chrome and Firefox, see for example this blog post from Mozilla
Interoperability has the highest priority for us and the ambition with OpenWebRTC is that it should follow the WebRTC standard. As long as others also implement the same specifications we should be fine in the end. Of course there are always minor things to sort out, but we have good contacts with most of the players in the WebRTC standardization community. Since we are involved in the standard committees and constantly test for interoperability we can identify areas where interoperability challenges may occur and handle them early in the process.
As part of releasing OpenWebRTC we also released our WebRTC browser for iOS, called Bowser. Bowser is a thin UI layer on top of OpenWebRTC and since it is available on the Apple App Store it’s easy for developers to test their web apps on OpenWebRTC. Some developers are finding that they need to make smaller adjustments to their existing web apps to run in Bowser, especially those who where built in the early days of WebRTC. But web developers are unfortunately rather used to browsers implementing JavaScript APIs slightly differently and know how to handle these incompatibilities in their applications, as long as you don’t need to make changes lower down in the media stack, this is not a big issue.
Anything you can mention about your roadmap?
One of the most requested features has been the support for the WebRTC DataChannel. There seems to be a strong demand especially from iOS developers. I’m happy to announce that we plan to land this already during January.
Making OpenWebRTC an open source is a fairly new change we have done and we have not spent enough time yet on tools required to help developers get an easy start with the code. Adding more documentation and sample apps for different platforms is crucial and high on our priority list. We already have examples of how to build hybrid native apps, where you mix native code with a WebView, on both iOS and Android. Fully native example apps are coming very soon.
During 2015 we also plan on bringing WebRTC support to WebKit using OpenWebRTC, starting with the Linux WebKit GTK+ port. We also plan to add support for the HEVC/H.265 video codec on some platforms. Implementing the WebRTC stats API is on the shortlist. ORTC support is also on the list but depends a little bit on Microsoft’s roadmap.
Another interesting thing is that we have started discussing with the team behind Matrix.org to build native WebRTC apps for their federated real-time messaging infrastructure. This is very early but I think it’s quite exciting.
As you can see there are a lot of interesting things in the pipe, I think 2015 will be a great year for OpenWebRTC and WebRTC in general.
Leave a Reply