Browser plugins are a nasty business. A WebRTC Plugin is doubly-complicated.
UPDATE: There’s no real need for a plugin any longer. All modern browsers support WebRTC, and people are using Electron with WebRTC where they want a native app or when they don’t want to support all browsers.
Here’s the thing. We thought a few months back that there’s a solution out there – not one, but TWO plugins available. One from Temasys and the other from Priologic. That was 3 months ago. A lifetime.
When you go today to the Priologic github project for the WebRTC Plugin this is the message you see in the readme:
This code will only work with an antiquidated version of the Google WebRTC code base and was only at a demo-able state, not production quality. We have stopped work on this project because Temasys has a free IE plugin and Doubango has an open source one (see https://github.com/sarandogou/webrtc-everywhere). If you want to develop your own plugin, we suggest starting from the Doubango code base.
To say the truth, there were no changes to the code since the press release about this one. It was dead before it even started. On the bright side, Priologic were sensible enough to discontinue it instead of pushing forward with something that made little sense for their current business.
Your options today?
- The Temasys plugin, a closed binary for better or worse
- Doubango’s webrtc4all plugin, under the ugly and unusable GPLv3 license. This one has too many “legacy” codecs supported while lacking Opus
- Then there’s webrtc-everywhere which uses a mix of BSD and GPLv3 licenses that actually make some sense
That third plugin option? It was hard to understand if it is a brand new one or the continuation/fork of the Doubango offering. This only goes to show the abysmal nature we are at with it (=not enough documentation to begin with).
To these options, we can add all of the WebRTC API Platform vendors who have their own plugins that either wrap WebRTC or implement a variant of it on their own.
This brings us to a headache…
I’d like to give a few more attributes to check when selecting such a plugin for your own WebRTC service – things that might not be apparent at first glance, but should be taken into consideration.
1. Plugin size
Not all plugins are created equal. They differ in their size, and while this may seem petty – just remember where we started with WebRTC: the need to reduce end user friction.
The larger the plugin, the more time it will take to download and install it, and the more frustrations it will end up causing to users.
I once took a trip to China and had to update my company’s video calling app. It wasn’t too big, but it took 10 minutes… not the best of experiences I had.
The size of the plugins I’ve seen for WebRTC begin at around 4 Mb of a download and top 10 Mb.
Ask for the size before you select.
2. Browser versions supported
Plugins are tough. With multiple versions of Safari and Internet Explorer, spanning multiple versions of operating systems; it isn’t always obvious which ones get supported by a plugin.
Some will focus on IE 9 and above. Others will try to bring IE 8 to the fold. At times, even IE6 will be considered.
Safari might ignored altogether.
Don’t assume that a plugin that supports IE will run on all of its versions. Check. And then also check if Windows XP is supported.
Make sure you know where your customers come from so you’ll know which compromises to make: a plugin that supports more browsers takes more time and investment to develop and maintain – something you might not want to rely on if you prefer a lean and mean operation from the plugin supplier.
3. What API?
So they say it has WebRTC inside. Great.
What API do you end up using there? Is it a WebRTC API or something else?
Which “version” of the WebRTC API does it contain? The latest one off webrtc.org? Something stale from yesteryear?
How do you embed the plugin into an existing WebRTC service? How much work is required for that?
Check these things to make sure they fit your expectations.
4. What’s not included?
Now that you do know it is WebRTC, time to check what features aren’t supported.
Screencasting will usually be left out, and if it is there, start asking how permissions and security are going to be handled (not trivial).
Make sure the features you need are there to begin with.
5. What’s included that “shouldn’t” be there?
Did the plugin include a bonus of sorts? Something not available in WebRTC itself, but the plugin supplier decided should be?
An additional codec or 10 codecs maybe? These add up to the size of the plugin and might even complicate licensing and royalty issues with the plugin.
My suggestion – pick a plugin that is as neutral and as close to the vinyl WebRTC implementation as possible.
6. Upgrade procedures
Google releases a Chrome version every 6 weeks or so. This means new features as well as bug fixes in WebRTC every 6 weeks. Just check their roadmap for WebRTC.
How often do the plugin supplier update his own plugin? What are the upgrade procedures that should be taken by someone who already installed the plugin on his machine? Do you have any control over the upgrade procedure? Can you stall it for a couple of weeks to get your own service in order and supportive of any changes made?
7. Open source, free or paid?
Which model does this plugin come with?
Open source? Great. Is it GPL or something a bit more permissive and accommodating?
Is it free, but closed source? Is that good or bad for you?
Do you need to pay for it? Might not be such a bad idea to have an SLA in place…
Who is going to host the plugin?
Is it up to you, or is that something the supplier offers? Does this hosting include a CDN? Does it cover your target audience?
Why is this important?
Until Microsoft and Apple decide to join the party, we are going to either ignore their browsers, use Flash (yuck) or have a plugin in place. None of these options is great, but we make do with what is available to us.
The plugin angle is becoming more interesting, but the vendors who offer them have their own vested interest. It is best to align with what you need and not go for the first plugin you find.
Need to know where WebRTC is available? Download this free WebRTC Device Cheat Sheet.