OpenAI, LLMs, WebRTC, voice bots and Programmable Video
Learn about WebRTC LLM and its applications. Discover how this technology can improve real-time communication using conversational AI.
Read MoreMost developers should just use libwebrtc that Google supplies for their WebRTC mobile SDK. Which exact release to pick and at what pace to update is a more nuanced decision one needs to make.
* I'll be using SDK and library as well as mobile WebRTC SDK and mobile WebRTC library interchangably in this article, so bear with me 😀
In the release notes of WebRTC M80 (=the changes made to WebRTC in the upcoming Chrome 80), Google added an interesting deprecation announcement:
Deprecating binary mobile libraries
The webrtc.org open source repository contains platform implementations for Windows, Mac, iOS and Android. These are primarily utilized for automated testing. Browsers and other applications that embed WebRTC often have developed their own highly optimized platform code with custom capture/render components matching the applications architecture.
We have decided to discontinue the distribution of precompiled libraries for Android and iOS. The script for creating the AAR library can be found here, the build script for iOS is located here.
Lets try to decrypt this deprecation and explain it, and then see what developers should be doing (and are doing already).
To understand this announcement we first need to understand what’s this WebRTC precompiled mobile libraries is exactly.
From the start, it was possible to use WebRTC on mobile. Google introduced WebRTC in Android Chrome in July 2013, less than a year after Chrome 23 was released on desktop with WebRTC support. Since that moment and on the codebase for libwebrtc (Google’s implementation of WebRTC) included support for mobile.
Up until 2016, Google never did offer any compiled binaries. Developers had to figure out the build process and handle it on their own. Several github repositories held compiled WebRTC source code for mobile and were somewhat popular.
In November 2016, Google introduced the official WebRTC precompiled libraries for Android and iOS, which they have maintained up until today.
Most of the vendors out there who are building applications or even SDKs (think CPaaS vendors such as Twilio or Nexmo) make use of libwebrtc as well for their basis of the VoIP stack implementation they run for their own clients. This was true BEFORE Google announced official WebRTC precompiled mobile SDKs and it will continue to be the case even now after Google discontinues the distribution of these mobile SDKs.
How did we get here?
First off, it is important to state and understand: Google uses the same WebRTC codebase that goes into Chrome also in the Google Meet and Google Duo mobile applications running on Android and iOS.
There is no plan or incentive for Google to stop maintaining the libwebrtc codebase for mobile operating systems.
That being said, Google just stopped distribution of its WebRTC mobile libraries.
Why?
Because for all intents and purposes they were useless.
All vendors I know who run their products in production for mobile either use a third party SDK (open source or commercial) or have their own custom build of libwebrtc.
This is the case partially because the precompiled binaries from Google are somewhat useless. Here’s the official CocoaPod for Google’s WebRTC project:
The version mentioned here is 1.1.29400. What exactly does this relate to?
This made the binaries useless without giving them any real chance in life, which led to their discontinuation.
The Google WebRTC team had two alternatives here:
They chose discontinuation. Probably because of what I’ll be sharing with you next.
This is the real question. It is the one developers had to deal with before, during and now after the age of Google’s official precompiled mobile libraries for WebRTC.
There are two routes to take here for any developer who needs a WebRTC SDK (I am ignoring those using higher level abstractions such as SDKs provided by CPaaS vendors):
Between these two alternatives, the majority of the developers are choosing option (1). Why? Because let's face it - no other library today offers the same feature richness, quality and interoperability with what runs in the browser that everyone uses.
There are a multitude of alternatives to Google’s libwebrtc, but they are all lacking in at least one way (probably more):
I am sure I’ve left a few more gaps in that list.
Ask yourself why is Edge now based on Chromium and using Google’s WebRTC almost verbatim, or why Apple is relying on Google’s libwertc in a lot of its own implementation of WebRTC in Safari.
That said, there are very good reasons for using libraries other than Google’s libwebrtc:
For the majority of the developers out there, libwebrtc is the right SDK to use on mobile.
If you are going to use libwebrtc, what is it that you should be doing then?
Here are the best practices I’ve seen of companies using libwebrtc mobile SDK in production:
Use Google’s libwebrtc implementation. This is by far the most comprehensive and popular library for client-side WebRTC implementations. Other alternatives exist, but you need to understand what you sign up for when you opt for using them.
The best practice here is to pick something that is new but not too new. Pick on of the latest releases that is considered to be stable. Don’t upgrade immediately to the latest release as that is time consuming. Make it a point of upgrading your libwebrtc 2-4 times a year.
Yes there are. PION and GStreamer come to mind in the open source scene. I’d seriously consider the reasons for not using Google’s libwebrtc in favor of anything else though, mainly due to its feature richness and immediate interoperability with Chrome and all other browsers.
Looking to lower their risks and increase their time to market with that WebRTC project you’re working on?
I can help you with this; when it comes to WebRTC and communication technologies, I help my clients get the answers they need and make sure their project doesn’t get delayed.
Contact me if you are interested.
Learn about WebRTC LLM and its applications. Discover how this technology can improve real-time communication using conversational AI.
Read MoreGet your copy of my ebook on the top 7 video quality metrics and KPIs in WebRTC (below).
Read More