Recently, Ericsson announced successful interoperation of its OpenWebRTC client with Firefox. This is very exciting for us; it marks several important milestones, both for Firefox and for the WebRTC specification itself.
Ericsson’s Bowser, which is based on their OpenWebRTC implementation, represents not just a third interoperable browser in the WebRTC space, but the first totally independent implementation. While most of the code in Firefox and Chrome’s WebRTC stack comes from completely different teams, some of the media handling is shared between the two. This common heritage, however small, has led to doubts around whether the IETF and W3C specifications are sufficiently detailed to achieve interoperability. Ericsson’s work in this space serves the incredibly valuable role of proving out that WebRTC interoperability can be achieved independently, simply by following the standards as they are specified.
The timing is fortuitous: both the IETF and the W3C are now approaching the home stretch in their WebRTC-related work, and the final steps to publish the relevant specifications will begin in earnest in the next few months. Multiple independent codebases allow us to discover where the specifications are ambiguous, incomplete, or inaccurate: if two different teams believe that they have implemented a standard but still don’t work together, it’s probable that the specifications themselves need to be adjusted. These kinds of problems are orders of magnitude easier to fix before they’ve been published.
In addition to the basic WebRTC interoperability story, Ericsson’s work also represents a completely independent H.264 implementation that works with Cisco’s real-time OpenH264 stack, which is incorporated in Firefox’s WebRTC codebase. Although H.264 is a mature, well-tested technology, its incorporation in Firefox is done in a novel way – through the use of the new Gecko Media Plugin (GMP) architecture – that had previously been tested only with itself. Further, Firefox’s implementation of other aspects of its H.264 handling, such as RTP packetization, parameter negotiation, and packet loss handling, had similarly been only self-tested. Ericsson’s success in interoperating H.264 video demonstrates the viability of the OpenH264 codec, our associated media handling and signaling, and the GMP architecture.
Finally, the simple existence of a second general-purpose, interoperable WebRTC toolkit (in addition to the WebRTC.org library) serves the critical role of growing diversity in library implementations, which helps avoid the rise of the kind of software monoculture that is so harmful to interoperable standards. In single-implementation ecosystems, having the same bug on two systems may result in a flaw being masked. Importantly, this makes it much harder for newcomers to the game to write software that works with the incumbent implementations. Additionally, the mere existence of more than one library keeps implementors “honest”: the temptation to implement proprietary or out-of-specification behavior is tempered by the knowledge that doing so will break their interoperability with many other implementations.
Mozilla would like to thank Ericsson for their important work in helping advance the WebRTC standard and in expanding the implementation ecosystem. We are proud that they chose Firefox as the reference implementation to use to test their interoperability, and look forward to seeing additional open-sourced projects based on their OpenWebRTC library.
Adam Roach, Principal Platform Engineer