News from Industry

Accelerated Computer Vision inside a WebRTC Media Server with Intel OWT

webrtchacks - Fri, 04/03/2020 - 14:18

WebRTC has made getting and sending real time video streams (mostly) easy. The next step is doing something with them, and machine learning lets us have some fun with those streams. Last month I showed how to run Computer Vision (CV) locally in the browser. As I mentioned there, local is nice, but sometimes more performance […]

The post Accelerated Computer Vision inside a WebRTC Media Server with Intel OWT appeared first on webrtcHacks.

Does your video call have End-to-End Encryption? Probably not..

webrtchacks - Thu, 04/02/2020 - 02:05

Time for another opinionated post. This time on… end-to-end encryption (e2ee). Zoom apparently claims it supports e2ee while it can not satisfy that promise. Is WebRTC any better? Zoom does not have End to End Encryption Let’s get to the bottom of things fast: Boo Zoom! I reviewed how Zoom’s implements their web client last […]

The post Does your video call have End-to-End Encryption? Probably not.. appeared first on webrtcHacks.

A new WebRTC codelab training

bloggeek - Mon, 03/30/2020 - 12:00

I am launching a new WebRTC codelab course, created together with Philipp Hancke. This goes into the intricacies of WebRTC signaling and best practices.

The State of online WebRTC resources

Where should you start with WebRTC? There’s not enough information about it and at the same time too much information about it. Most of it is old and outdated. Needle in a haystack.

Up to date WebRTC code is hard to come by

Sift through discuss-webrtc, stackoverflow and the W3C WebRTC mailing list? All great. But there’s no explanation besides pieces of code. It lacks context.

Read the spec and work your way from there? If you don’t fall asleep, you might just find that browsers aren’t exactly spec compliant yet anyways.

Books? None from 2020. None from 2019. Less than 10 in total. A handful.

How about online courses? There are a few on udemy and pluralsight, but they are also old and broken by now.

My own Advanced WebRTC Architecture course? While great, I purposefully haven’t gone through the APIs of WebRTC, understanding they change so frequently.

A codelab then? Sure. find one that works and explains signaling properly.

The way I see it, there are 3 types of WebRTC codelabs today:

  1. The outdated ones
  2. The broken ones
  3. The ones that sell you a managed streaming service
Enter Philipp Hancke

I’ve been working with Philipp here and there in the last couple of years. He is fun to work with and knows everything there is to know about WebRTC and the intricacies of its APIs along with the status of browsers.

Here’s a bit about him:

I don’t quite recall how, but we got to the point a couple of months back that it would make sense to create a solid WebRTC codelab that covers the signaling aspects of WebRTC. Simply because there is nothing out there that does the trick properly.

WebRTC: The missing codelab

Fast forward to today, we have a codelab course for you:

The codelab has 4 parts to it:

  1. Github repo and course introduction module, both publicly available
  2. Codelab walkthrough. Over 2 hours of recorded lessons covering the source code and explaining all you need to know to grok it
  3. Exercises. We’ve started creating useful exercises on the codelab. These include the challenge, the solution and the explanation. Along with the additional code for the solution and best practices
  4. Resources library. If you are new to WebRTC, this will come handy in closing some gaps for you. They are lessons from my other courses that fit nicely here

We’ve made sure the lessons aren’t boring by making them interactive. I’ll be there with Philipp, taking the part of the student asking questions. The intent is to try and get into his head, understand his thought processes. What do you gain out of it? You will understand why things are implemented that way and not only how.

Interested?

Head to the WebRTC developer courses – there’s a 20% discount until the end of April.

If you are uncertain, then you are invited to join this week’s WebRTC Live webinar where I’ll be talking with Arin Sime about the codelab. Alternatively, just go through the introduction module and make a decision.

If you know that this is for you, then there’s a 50% discount if you enroll in March (that’s in the next 2 days) by using FASTMOVER as your coupon code on checkout (for any of the WebRTC course bundles).

If you’ve enrolled in my All Included course in 2020, then you are already automatically enrolled to the codelab. If you enrolled throughout 2019, then you are eligible for a 50% discount during April.

The post A new WebRTC codelab training appeared first on BlogGeek.me.

Stop touching your face using a browser and TensorFlow.js

webrtchacks - Thu, 03/19/2020 - 12:55

Don’t touch your face! To prevent the spread of disease, health bodies recommend not touching your face with unwashed hands. This is easier said than done if you are sitting in front of a computer for hours.  I wondered, is this a problem that can be solved with a browser? We have a number of […]

The post Stop touching your face using a browser and TensorFlow.js appeared first on webrtcHacks.

Who are the WebRTC Market Global Key Players?

bloggeek - Mon, 03/02/2020 - 12:00

The WebRTC market global key players may be different than you think. They include the browser vendors, a few CPaaS vendors, dominant “creators” of WebRTC sessions and… open source projects.

The title for this post came from one of the many lead generating headlines I see for reports that mention companies that no longer exist in our market. It is sad in a way: The same market report released every year, with the main difference between the last one being X+1 where X denotes a year mentioned in the report.

(if you are about to purchase a market report on WebRTC – make sure the companies mentioned there actually do something meaningful in WebRTC – check against the companies listed here – or just ask me)

My intent here is to actually ask the question – Who are the WebRTC Market Global Key Players? – and then also answer it.

I’d like to segment the key players in WebRTC into 4 main groups:

  1. Browser vendors
  2. CPaaS vendors
  3. Customer facing services
  4. Open source projects
1. Browser vendors

There are exactly 4 browser vendors that are interesting. The rest? Less so.

I will list them here in the order of their importance to WebRTC.

Google Chrome

This one is obvious. Google is the main driving force behind WebRTC. They aren’t alone in being there, but they are the dominant browser player in market share AND they host the most popular implementation of WebRTC (that would be libwebrtc).

In many ways, Google decides where WebRTC is headed. It does that in 3 different angles:

1. libwebrtc and Chromium

Maintaining the most popular WebRTC implementation (did I say that already?).

So much so that all browser vendors use this implementation in one way or another (either directly or indirectly by copying the pieces of it that they want/need).

I’ve added here also Chromium. This is the open source components of the Chrome browser and it is used in MANY important projects:

  • Microsoft now operates Edge (its new browser) on top of Chromium
  • Electron, which is quite popular in packaging web apps as installable apps is built on top of Chromium
  • Many of the “other” browsers out there are implemented on top of Chromium
2. Chrome

THE market leader in browsers.

Taken from StatCounter (and yes. It also includes mobile)

Need I say more on how that influences WebRTC adoption and implementation?

3. Google Apps

We used to have only Hangouts using WebRTC at Google.

Now we’ve got a lot more.

The shortlist I am aware of include:

  • Google Hangouts / Google Meet
  • Google Duo
  • Google Stadia
  • Chrome Remote Desktop
  • YouTube Live

For these, Google has their own agenda with their own WebRTC roadmap. This means that the requirements that fall into any of these services end up either directly as part of the open source WebRTC implementation distributed by Google – or Chrome alone.

Apple Safari

Apple has been quiet about WebRTC. That’s true about Apple and a lot of other technologies as well.

That said, Safari now supports WebRTC in Mac and iOS for a couple of years now (there are those who missed that fact).

While Apple has no other direct involvement around WebRTC, all developers and entrepreneurs are affected by their decisions about WebRTC. A lot more than in any other case.

Point in case is WebRTC iPhone support:

  • You can build your own native app with WebRTC on an iPhone. This was always true
  • You can run a web app using WebRTC on an iPhone inside Safari
  • You can’t run a web app using WebRTC on an iPhone in any other iOS browsers – just because WebKit on iOS still doesn’t support WebRTC properly
Microsoft Edge

While Edge didn’t enjoy any growth or market share, this may soon change.

Microsoft decided a bit over a year ago to stop investing its resources and focus on building a browser engine, and instead took Chromium “as is”, building their Edge browser on top of it.

Somehow, I am assuming (hopefully) that this change also means that more Microsoft engineers are involved in the inner workings of Chromium itself, optimizing it to run on Windows and elsewhere for their own scenarios.

Apple is more important than Microsoft when it comes to WebRTC simply due to the current state of market share of their browsers.

Mozilla Firefox

Firefox is the 4th important browser and decision maker in the table of WebRTC.

It isn’t as important as the rest since its only “contribution” to the game is Firefox itself whereas the other browser vendors here come with operating systems and applications of their own as well.

Nevertheless, it is way more important than all other browsers not mentioned here combined.

2. CPaaS vendors CPaaS vendors offer the tools for others to embed WebRTC communications

CPaaS vendors enable others to build their applications without delving into the communication technology stack too much. In many cases, that includes support for WebRTC as well.

To me, they are key players within this industry, and I want to mention those that are the most important when it comes to WebRTC adoption.

Twilio

Twilio is the leader in CPaaS. It is also one of the dominant players when it comes to WebRTC in CPaaS.

When it comes to voice calls via WebRTC done through CPaaS, Twilio are probably the largest player. Twilio has a lot of visibility to issues and requirements related to voice use cases, especially ones related to call centers.

Twilio is also growing in their video use of WebRTC.

Vonage

Vonage is the owner of TokBox, now part of its API platform.

As one of the leading video API platforms using WebRTC, TokBox is important. As with Twilio, this stems from their visibility to issues and requirements, but in this case, related to video use cases.

Others?

There are other interesting CPaaS vendors in the WebRTC space, but none of them are dominant enough. 

The ones worth mentioning in this context?

3. Customer facing services

Customer facing services are the end products. What users interact with when it comes to WebRTC. This title won’t get a vendor to be a global key player unless there’s a real reason…

Facebook

Facebook is huge. Doesn’t matter if you look at Messenger, WhatsApp or Instagram.

Messenger uses WebRTC.

Instagram uses WebRTC for its live chat.

WhatsApp doesn’t use WebRTC directly, but there’s ongoing effort to consolidate the infrastructure of all these messaging platforms at Facebook. Will we be seeing 2 billion WhatsApp users able to conduct voice and video calls by way WebRTC in 2020?

Then there’s the Portal device.

Anyways, the sheer size of Facebook, along with their work with WebRTC places them as a market leader in WebRTC use. And due to their size, they are also largely alone here.

No one else

There are vendors that contribute large WebRTC traffic. But other than Facebook, I am not sure who else to include here.

Maybe Discord.

Probably Amazon. Due to multiple products and that minor thing called AWS.

I decided not to put any of the enterprise vendors. I think they should matter more, but got a feeling that they don’t at the moment.

4. Open source projects Open source projects are at the heart of the WebRTC ecosystem

These are sometimes neglected when discussing market leaders, which is rather sad. A lot of the development and WebRTC traffic out there ends up going through some of these open source projects, which is why I’ve added them here.

It is apparent that some projects should have a seat at the table. When Kurento got acquired by Twilio, there was a year when many of the discussions I had was about finding a suitable replacement for them.

If WebRTC open source projects fail to make progress, upgrade or just die, they affect those using them. The popular open source projects matter. A lot. They are at the heart of the WebRTC ecosystem.

Janus

I’ve decided to put Janus first because:

  1. Wherever it is used, there is use of WebRTC
  2. It is very versatile and flexible. I see it in a lot of different use cases
  3. It is quite popular
Jitsi

Jitsi is now owned by 8×8 after switching hands.

It is still run as an independent open source project and is widely deployed.

FreeSWITCH

FreeSWITCH comes from the telephony world.

Not in all of the deployments of FreeSWITCH out there WebRTC is used, but when companies need to connect telephony to WebRTC, they often go with FreeSWITCH for that.

Since FreeSWITCH is so common in so many of these instances, they are important for the WebRTC ecosystem

Kurento (to some extent)

To some extent, Kurento still matters.

Kurento is a shadow of its former glory prior to the acquisition. It isn’t part of Twilio – Twilio acqui-hired the developers, but not the name. Kurento lives on, but different.

It is being developed alongside OpenVidu, but the progress made to both seems somehow slower than the other open source projects mentioned here.

I am not sure they are a key player anymore.

Others?

There are other important projects that can/should make the title of key players in WebRTC. The 3 that immediately come to mind are mediasoup, PION and Asterisk.

Why haven’t I added them? Because their popularity is lower than the others.

For mediasoup and PION it is just that they are newer. They are growing, so I believe they will become key players if they continue in the current adaption trajectory.

For Asterisk, it is because they are used in a similar fashion to FreeSWITCH. I just don’t see them as much in the conversations around WebRTC that I have.

What does it mean to be a “WebRTC Market Global Key Player”?

This is where I started the article, and I think it bears thinking about.

When one coins a company as a “WebRTC Market Global Key Player” what does that mean exactly?

For me that means that they have the ability and potential to affect what happens with WebRTC moving forward.

While the standardization work is done in the W3C, a lot of the work happens elsewhere. In what Google places into Chrome as experiments and later as features. In what Apple decides to implement or not implement in Apple. In what CPaaS vendors deliver to their many customers and the feedback they get. In the companies that build large scale products and in the open source projects that make up a large portion of these products.

There are steps one can take to become a more dominant player. To be able to join the conversation and affect where WebRTC is headed. While I’ve conversed with many who want to become dominant players, only a few have the courage and the willingness to invest the time and resources needed.

Want to know who the global key players are? Don’t read it in a copy+paste research paper that is poorly updated…

The post Who are the WebRTC Market Global Key Players? appeared first on BlogGeek.me.

Private Home Surveillance with the WebRTC DataChannel (Ivelin Ivanov)

webrtchacks - Tue, 02/25/2020 - 13:35

When most people think of WebRTC they think of video communications. Similarly, home surveillance is usually associated with video streaming. That’s why I was surprised to hear about a home security project that leverages WebRTC not for video streaming, but for the DataChannel. WebRTC’s DataChannel might not demo as well as a video call, but […]

The post Private Home Surveillance with the WebRTC DataChannel (Ivelin Ivanov) appeared first on webrtcHacks.

How can your WebRTC application keep pace with browser releases?

bloggeek - Mon, 02/17/2020 - 13:00

If you are developing with WebRTC, then there is special care you need to take to browser releases, as these can break your app. Here’s how I’d go about dealing with this problem.

Twice in the past week I’ve been asked about backward compatibility with WebRTC. It is a loaded topic – one that lends itself to this kind of a metaphor about developing with WebRTC:

When you’re developing with WebRTC (and I daresay when you’re a developer in the Google WebRTC team), it feels like replacing a wheel while driving the car on a highway.

Browsers release cycle

Browser release cycles are… short. And complicated.

  • Chrome and Firefox get updated roughly every 6 weeks or so
  • Safari twice a year at the moment
  • And Edge just got on Chromium, and we need time to see on what release cadence will Microsoft select for it – at the speed of Google Chrome, faster or slower?

And that’s the simple part of the whole story – it comprises only the right column of this diagram from 2017:

Hand drawn guide about different versions of Browsers.

Because no one told me Canary is not about an actual bird. pic.twitter.com/amerBhf8tp

— Mariko Kosaka (@kosamari) January 10, 2017

Browsers auto-update. They do that at fast release cycles that are shorter than 2 months between large releases (unless they are Safari), and they often ship and push security or stability releases in-between these main releases when needed.

Browser update cadence will either stay the same in 2020 or become even shorter.

WebRTC’s pace of change

When I think about the experience with WebRTC in the past few years, it boils down to something like this:

For end users it is a real joy. Most don’t even know they are using WebRTC, but they just do.

Developers, on the other hand, are on a rollercoaster ride that they’d rather not be on. Constant changes are making the experience challenging.

To be fair – this is a lot better that previous alternatives we had

There are 3 different ways in which WebRTC is constantly changing:

  1. WebRTC browser implementation vs WebRTC specification. We are dealing with a protocol specification that is still not complete. And browsers are making changes to close the gap between what they’ve got implemented to what the specification says. These changes are sometimes not backward compatible
  2. Introduction of new capabilities. mDNS is a good recent example. Deprecation of DTLS 1.0 is another. Then there’s the playout delay addition for Google Stadia (and others). Somehow, there’s something that just must be added that might break interoperability and is introduced to improve security or connectivity
  3. Optimizations. Constant changes in the implementation to improve performance. Here you can place rewriting the echo canceller, revamping the whole threading model for audio and switching from receiver-side bandwidth estimation to sender-side one

These aren’t just introduction of new features and capabilities. They almost always include changes in the behavior of WebRTC itself.

Don’t expect the pace of change of WebRTC to slow in 2020.

WebRTC server-side challenges

If your app runs in the cloud and in front of browsers then your life is relatively simple. Using tools such as adapter.js along with some good sense of using the beta and even dev channels of the various browsers you will be fine for the most part.

Things get complicated once you start using media servers.

Most media servers today are open source. The teams maintaining them are rather small and they have a lot on their plate. The commercial ones don’t fare much better here either.

Now imagine. The Google WebRTC team cranks out features, bug fixes and optimizations. Their main focus is their own needs, along with what goes in the spec and interoperability with other browsers. They wouldn’t be able to slow down or explain everything that goes on to everyone out there even if they wanted to.

Take this small example – DTLS 1.0 deprecation:

  • DTLS is used by WebRTC to negotiate the shared secret of the SRTP media channel
  • DTLS 1.0 is considered insecure
  • DTLS 1.2 was already implemented as the default mechanism in WebRTC, but the Chrome implementation of WebRTC allowed a downgrade to DTLS 1.0 during the negotiation of a session
  • In February 2019, Google announced it will remove DTLS 1.0 support in Chrome M74
  • In April 2019, another announcement was issued. This time about the deprecation taking place in Chrome 81. Why? “based on the feedback it is clear that some in the community need more time to update their systems, and so we have reverted this change from Chrome 74”
  • Fast forward to February 2019, and now it seems that Chrome M80 will show a deprecation notice and removal will take place in Chrome M82

Why all these changes? Vendors not fixing their media servers. For a span of a full year.

Here’s what will happen when Chrome M82 rolls out: some services will break.

Google is in the right here.

Server vendors need to keep up with the pace.

And this is an “easy” one. That gets announced and noticed.

Other changes like bandwidth estimation algorithms, different support mechanisms for simulcast, and many others need to be taken care of. These are important for the media quality of the sessions.

WebRTC media servers have their hands full in keeping up with the pace. Pick one that is lively and well maintained

Beyond pace of change, you will need to deal with scaling. If that’s what you’re after, then my ebook on Best Practices in Scaling WebRTC Applications is the thing you need.

Purchase WebRTC Scaling Best Practices Mobile applications and IOT devices

Up next – applications.

With browsers, we’re both at the mercy of browser vendors but we’re also “saved” by their effort and work. This causes us to sweat when it comes to developing media servers that work well with browsers. But what about mobile applications then?

Since they are acting just like WebRTC clients in browsers would, we need to update them to keep them functioning and working in front of the browsers. Why? Because some of the changes browser vendors introduce are breaking changes while others are about important optimizations.

If you are using Google’s libwebrtc then check out my best practices of using it. You’ll find I suggest upgrading multiple times a year but not at Google’s pace. The reasoning behind this approach is to balance your sanity versus how far away you are from the latest release. A kind of risk management effort.

On mobile, a WebRTC application must be updated a couple of times a year just to keep working in front of web browsers

On-premise deployments and WebRTC

On-premise brings with it its own challenges, especially today. It used to be that on-premise was easy and cloud was challenging but the wheel has turned.

WebRTC is just another headache here.

If you run an on-premise operation that relies on web browsers for access, then you’re in for a treat with WebRTC. You’ll need to be able to frequently update your software. A lot more frequent than the “never” alternative that is so common in this space.

With on-premise you’ll need to rethink your strategy for updates and upgrades. Automate it somehow. Have it done without “human intervention”. Not only because of WebRTC mind you – it will be more about security patches. But WebRTC requires it as well.

With on-premise, WebRTC will force you to adopt cloud-development paradigms

Figure out (plan and execute) your own pace with WebRTC

How are you going to keep the pace of change of browsers and WebRTC?

This is something you need to ask yourself and answer.

A few suggestions if I may:

  • Have mechanisms for automatic updates of your clients and servers
  • Put versioning information and decisions into your client applications (to know when to force an update and when to just suggest one)
  • Subscribe and read the messages and PSAa on discuss-webrtc
  • Have your developers work also on beta and dev channels of the browsers they use

Obviously, there are more things you can and should do. I am here to help with it – just contact me.

The post How can your WebRTC application keep pace with browser releases? appeared first on BlogGeek.me.

Not a Guide to SDP Munging

webrtchacks - Tue, 02/11/2020 - 13:33

SDP has been a frequent topic, both here on webrtcHacks as well as in the discussion about the standard itself. Modifying the SDP in arcane ways is referred to as SDP munging. This post gives an introduction into what SDP munging is, why its done and why it should not be done. This is not […]

The post Not a Guide to SDP Munging appeared first on webrtcHacks.

6 questions to ask about your WebRTC training 🙋

bloggeek - Mon, 02/10/2020 - 13:00

Finding a good WebRTC course is tricky. Finding a training program that teaches you more than the basics about WebRTC isn’t simple. Here are a few questions to guide you in finding that course you want.

First off – I am biased. I have created a WebRTC training and have been running it successfully for a couple of years now, teaching IT workers about WebRTC. I’ll try to be as objective as possible in this article. The main thing I ask of you? Do your own research, and feel free to use my questions below as a guide to your quest after the best WebRTC training course.

Without much ado, here are the 6 questions you need to ask yourself about the WebRTC training you are planning to enroll to:

1. What was the last date the WebRTC course was updated?

This is probably the most important question to ask.

WebRTC is a moving target. Ever changing.

There are 3 separate axes that need to be tackled when learning WebRTC:

  1. Standard
  2. Browsers
  3. Ecosystem

The standard is still changing. WebRTC 1.0 will hopefully be completed this year. The changes are minor, but they still occur. And once they are over, we will start talking about WebRTC NV – the Next Version of WebRTC. Which will inject new learnings around WebRTC.

Browsers are changing. Especially Chrome. But not only. They have their own implementations of WebRTC, slightly different than the standard. And they are crawling ever so slowly towards being spec-compliant. On top of that, they have their own features, nuances and experiments going on; of things that might or might not end up as part of WebRTC.

The Ecosystem around WebRTC is what you should really be interested in. Not many developers use WebRTC directly. Most use third party open source or commercial frameworks so they see less of the WebRTC API surface itself. Selecting which framework to use, and how they are going to affect your architecture and future growth is the hard part.

All this boils down to this:

If the WebRTC training you are going to enroll in is more than 6-12 months old, it isn’t going to help you that much.

2. Does it cover more than the WebRTC API surface?

WebRTC is multidisciplinary. It spans across different concepts, and is a lot more than just the APIs the browser publishes.

How is the course you’re planning to take tackling that?

While many of the WebRTC courses focus on the API surface, they fail to understand the reality of WebRTC: Most WebRTC developers don’t interact directly with WebRTC APIs, but rather use third parties – either in the form of open source or commercial frameworks for signaling and media servers; or in the form of full managed services (think TokBox or Twilio). In such cases, it is critical for the students to understand and grok WebRTC from a perspective of the whole architecture and less so in what each and every API in WebRTC does (something that may change from one Chrome release to another).

Things you’ll need covered in order to write a decent application that is production ready:

  • WebRTC APIs
  • NAT traversal (STUN, TURN, ICE)
  • Signaling and transport
  • Codecs – both voice and video, and not only spelling them out
  • Media processing – things like echo cancellation, noise suppression, packet loss, simulcast, etc.
  • Media architectures – mesh, routing and mixing

Then there’s the part of how you boil it down to an actual solution. What components to use and why.

WebRTC has a set of building blocks, but you need to know which ones to use to fit the specific model you want to operate.

An interesting tidbit to check – does the training include aspects of group sessions or broadcasting? These require a look beyond the basics of WebRTC API calls.

Make sure the WebRTC course you take isn’t too focused on the APIs and isn’t too focused on the standard specification.

3. Is the instructor who created that WebRTC training available for questions?

Assume that WebRTC is going to be challenging to grok.

And with an online course you are mostly on your own. Unless there’s a bigger framework at play.

Here are a few things that can help you out:

  • Someone to ask. Does he course offer someone you can ask questions?
  • Do you ask them over an online form? An esoteric email address?
  • Is there a chat widget you can use to reach out to the instructor whenever you need?
  • What about office hours? Can you join live to a session and ask questions in person, and with your own voice?
  • Does the course offer a place for students to share their experience? Like a forum. Or a place where updates about WebRTC are published? (and we know things get updated pretty regularly there)

And one last thing – do you even know who the instructor is?

An important part in learning WebRTC is the ability to ask questions interactively. Make sure that is part of the training you enroll in.

4. How long is the course?

An hour? Two hours? Four hours?

More doesn’t always mean better, but with WebRTC here’s the thing – there’s quite a lot of ground to cover. And there are three ways to do that:

  1. Run fast, skimming over the material; the student will fill out the rest by searching the internet later
  2. Focus on the basics, leave a lot of the meaty, important parts out of the course; the student can figure it out on his own
  3. Put the time into it, making sure to cover as much as possible in the course itself

That third option means that a WebRTC course, at least a decent one, should take more than a full day of training – well above 10 hours of information.

If you want to really learn WebRTC, make sure the course you take has enough hours in it to give you the knowledge you need.

5. What are students saying about the course?

Do people like the course? Do they feel it got them what they needed?

Look at the testimonials of the WebRTC courses: you will immediately notice the frustration of students with the freshness of the courses – most of them are 3-5 years old. This makes them useless. Interestingly, students are less worried about the price (these are cheap courses) – they are a lot more worried about the time they wasted.

Check what companies are sending their employees to take that course. Are they just sampling it out, or sending multiple employees? What do these employees have to say about the course after taking it?

You will be able to find many answers to the other questions here just by reading the reviews of students.

If you are going to invest your time on an online WebRTC training, make sure to read testimonials and reviews about that training.

6. Is the course suitable for your purpose?

Just need to understand in broad strokes what WebRTC is and what it does? Are you after a deep understanding of WebRTC and how to develop or test it properly? What about offering support or ops for a WebRTC application?

Each of these has a different set of needs. Each needs a view of WebRTC from a different angle.

Which angle do you need and how well does it align with the angle of that course you are looking at?

Make sure the WebRTC course is aligned (as much as possible) with the type of work you’re expected to do.

Looking for a WebRTC course? Ask yourself: What should a good online WebRTC training include?

A good WebRTC training should include information about WebRTC APIs, STUN/TURN servers, media servers (SFU, MCU), signaling servers and the state of the ecosystem and browser support.
A course focusing only on the WebRTC API or showing how a specific simple “hello world” application works won’t suffice.

How do I know if a WebRTC course is good?

Ask yourself the following questions about the course to understand if it is for you:
* What was the last date the WebRTC course was updated?
* Does it cover more than the WebRTC API surface?
* Is the instructor who created that WebRTC training available for questions?
* How long is the course?
* What are students saying about the course?
* Is the course suitable for your purpose?

Are there different WebRTC courses?

Yes. Some courses are targeted more towards developers while others focus on ops and support.
If you are looking for a WebRTC course, be sure to check that the course is aligned with your job description.

Pick the right WebRTC training for you

There are several WebRTC training courses out there. Be sure to sift through them and find the one that is most suitable for you.

Interested? check out my own WebRTC courses:

  • WebRTC basics – a free beginners course for those needing a bird’s eye view of WebRTC
  • Advanced WebRTC – for those who deal with development – engineers, testers, architects and product managers
  • Supporting WebRTC – a course focused on those in support positions


The post 6 questions to ask about your WebRTC training 🙋 appeared first on BlogGeek.me.

Remote Work in 2020

webrtc.is - Wed, 01/29/2020 - 01:37
The state of remote work and distributed workforce strategies The reality of commercial office space in 2020

Most business owners will agree that it’s become much harder to justify paying the increasingly exorbitant lease rates for office space in most major cities in North America. Even Canada isn’t exempt.

Once a haven for US companies looking to hire cheaper Canadian labor, Vancouver now has the lowest commercial vacancy rate. To add insult to injury, it also has the highest price of gasoline in North America.

CBRE’s Canada Q2 Quarterly Statistics Report said that downtown Vancouver’s office vacancy rate was 2.6 percent in 2019’s second quarter, down from 4.7 percent one year previously, making it the hottest commercial office space market in North America on par with Toronto, beating out 3rd place San Francisco, where the vacancy rate is 3.6 percent.

Coworking Growth

Growth in commercial office space worldwide is also being spurred by coworking. We now see coworking facilities in a large number of major cities across the globe, although the number of new coworking space openings does appear to be slowing down when compared to the previous year.

Our projections show that in 2019 growth will be slower than the previous year, although the industry continues to grow at a strong pace. While most of the industry growth can be attributed to new spaces, a large portion is owed to existing spaces diversifying their services or acquiring businesses, and expanding into smaller, niche markets that generally have stronger, more close-knit communities. — Coworking resources

Coworking is obviously not free. It does reduce the overhead and headache of having to manage your own office (lease, insurance, maintenance, etc) but if and organization made use of coworking facilities full-time, it could likely be more expensive than a comparable stand-alone office space, per square foot.

It doesn’t take a genius to see that not only are office spaces getting harder to find, but they are also the most expensive they ever have been. For staff, who are interested in raising a family, getting them to this expensive office is also costly. This sounds like a lose-lose proposition, why are we doing this again?

Coworking + remote work | FTW!

Unsurprisingly, IT organizations and software organizations that have no real need for dedicated physical locations appear to be shuttering offices and opting for coworking + remote work models.

Automattic, Gitlab, Shopify (just to name a few) have successfully made this transition, in fact, some of these companies were purposefully built as distributed companies from the get-go.

Various reports and studies have been done which seem to indicate that everyone wants to work from home. In a recent study, Buffer published the State of Remote Work where 2,500 remote workers surfaced some interesting statistics:

  • 99% of all respondents said they wanted to work remotely, in some capacity.
  • Younger generations are 28% more likely to utilize remote work than older generations. — Upwork, 2019
  • 73% of all teams will have remote employees by 2028, because of the influx of Gen Zers in the coming years. — Upwork, 2019

Zapier has also published a report(*) on the subject and the findings are quite similar in that it points to knowledge workers’ desire to work remotely:

  • 95 percent of U.S. knowledge workers want to work remotely, and 74 percent would be willing to quit a job to do so.
  • 26 percent of knowledge workers have quit a job because the company did not offer the option to work remotely/flexible work schedule
  • Remote work is a highly desired perk. Nearly 3 in 5 knowledge workers (57 percent) say the option to work remotely is one of the perks they’d most prefer to be offered by an employer.
    (That’s more than free daily lunch (42 percent) and unlimited vacation time (39 percent). Only one quarter (25 percent) cited recreational activities, like ping pong or foosball.)
  • Almost a third of Millennial knowledge workers (31 percent), and more than a quarter of Gen X work (27 percent) remotely full-time. Only 11 percent of Baby Boomers do.

Microsoft (Japan) is also researching work routines and recently published findings on a 4 day work week experiment, which increased productivity by up to 39.9%. This could very well increase even more if they adopted a virtual coworking model for the other 4 days.

Concerns

Now that we have set the stage for what looks to be an unstoppable trend, let’s take a look at why this is not a no-brainer.

I interviewed a few companies (ranging from small to large) and asked them what their position was with remote work in mind. Some business owners and team members expressed concerns.

  • Security & Legacy Tech —If a company has previously built out systems it could be quite expensive and time-consuming to move to a secure cloud model. This move might require a large investment to get to a similar level of security that they already have, especially if the desire is to not use VPNs or IP tunnels. Even if the company is ok with VPNs, now IT has to manage that new asset, which doesn’t come for free.
  • FOMO — The fear of missing out, is a big one for team members. Many employees that have not worked remotely before quickly develop a sense of FOMO (fear of missing out). If conversations were missed, it causes a feeling of exclusion and can impact productivity and morale.
  • Comradeship — Developing a positive team spirit is hard to do if team members never spend face time with each other. Humans are social animals, if we remove this face-to-face time, culture tends to be rather flaccid.
  • Distractions — Some professionals have not enjoyed very much success when working from home. Some remote workers state there are too many distractions and they do not have a quiet place they can go to escape these distractions in their home. Speaking from experience, this is especially true for working parents.
  • Time Zones — Spanning timezones where workers are on the opposite side of the continent or planet requires good planning and diligent project management, especially if the teams are larger. This can be a daunting task for a shop that has never done it before. Teamwork may take a hit if those in the remote time zones are few and far between, as they might not be communicating with each other or with domestic teams as regularly as you would like.
https://buffer.com/state-of-remote-work-2019

Some of these concerns are legitimate and it could be they will not be overcome with even the best remote work processes.

Case in point — In 2012, Marissa Mayer was hired as CEO of Yahoo! and was charged to return the former powerhouse to its glory days. Among the many things she had to fix were company culture and productivity. According to sources closer to Yahoo!, it was made clear that many of those working at the company were not getting their jobs done when working from home. A review of VPN logins and source repository access logs surfaced a gap in the lack of work being accomplished while Yahoo! staff were working from home.

In 2013, an internal letter was issued, the company mandated that remote work was to be all but banned. Here is an excerpt from that letter…

To become the absolute best place to work, communication and collaboration will be important, so we need to be working side-by-side. That is why it is critical that we are all present in our offices. Some of the best decisions and insights come from hallway and cafeteria discussions, meeting new people, and impromptu team meetings. Speed and quality are often sacrificed when we work from home. We need to be one Yahoo!, and that starts with physically being together.

Some of Mayer’s staff, the press, and many other groups let her have it, no one seemed to be impressed. It could be said that Mayer had little choice. She had to do whatever she could to turn the company around and for her, that meant taking some drastic measures. In a Forbes post, Yahoo! commented further…

“This isn’t a broad industry view on working from home — this is about what’s right for Yahoo, right now.”

At first blush, it would seem this was more about timing and the position Yahoo! found themselves in at the time. They did what they thought needed to be done to influence behavior.

This seems like an extreme case, but the same sentiment can be found in other IT and SaaS organizations worldwide. In fact, some of these companies are the creators of communications software and services we use for remote work every day. In fact, they openly promote the “work from anywhere” mantra in their own product marketing. It might seem a little hypocritical, but it is happening for many of the same reasons we have shown.

Remote Work — Benefits

Now that we have heard the concerns, let’s talk about the potential upside. Here are some high-level benefits:

  • Reduction in Overhead — This one is rather obvious, but it goes further than just nixing the lease cost for the office space. If there is no office, there is now no longer a requirement for furniture, desks, lunchrooms, bike rooms, office snacks, bought lunches, office insurance and much more. Depending on the size of your business, savings could be significant.
  • Sans Commute — Most staffers love the idea of working from home, especially if they have been successful in doing it at previous jobs. This means spending less time on the road, more time working and less time away from their family. It also means cash savings as they no longer have to pay for transit passes, gas, insurance or parking for their vehicles.

One in four knowledge workers find their commute to be among the most stressful parts of their job.*

  • Choose your Location — Since location matters less in a delocated organization, team members are generally encouraged to live wherever they want, as long as they can get good Internet, power and work effectively with their peers. They are no longer tied to living in expensive larger cities where the cost of living precludes them from buying a home. This should also contribute to happier team members in general.

Obviously, these benefits can contribute to a more attractive and economical approach to building a business, as long as you can overcome the concerns.

Taking the plunge

If you are still with me and undeterred, you are not alone. Personally, I have been working remotely 100% for several years in various roles with teams all over the world. I have learned a few things along the way. Here are the cliff notes.

Remote Work Guide: A good place to start is by creating a “remote work guide” document that embodies some or all of the elements listed here along with your own spin on things. Your teams may not have experienced working remotely before, they will need some guidance and direction, this is also where we set expectations eg. working hours, always-on video, etc. It could be an addendum to your existing company handbook or a completely new document, keep in mind it will grow with your company. (Note: Many miss this step and it’s likely the single most important contributing factor to a successful remote work strategy for your company or organization.)

Small Teams: You are going to need some time to plan your rollout and decide which processes and tools are going to work best for your various teams. When your teams are first getting started, parcel off smaller project teams that are tech-savvy and preferably have experience using online collaboration tools. Their experience will pave the way for everyone else. Once you have a good process that seems to be working, you can roll it out in stages for everyone else.

Always-on Video Conferencing: This may sound a bit creepy but it can actually be quite effective in preserving team spirit, fending off FOMO and helping with the isolation that some feel when working remotely. It can be done in pairs, teams or even using a water cooler approach where team members drop in and out during the day. You can even use it to bridge branch offices, like a window into each remote office. Let’s be honest, organizations are going to see a bit more opposition when introducing this concept, it will need to be actively managed. As the business leader, you will need to actively work with team members to encourage participation (eg. by leading a weekly all-hands meeting or asking them to join or lead regular video calls, etc). If managed properly this idea can be a great communications centerpiece.

Weekly all-hands Video Conference: This is less about remote work and just good business practice. I have seen this work well in traditional and remote businesses, but few business leaders do it. Weekly highlights are shared by the CEO with support from other leaders in the organization. A master slide deck is prepared in Google Slides, with input from various departments. Friday afternoons are a good time as it ends the week on a high note (and serious note if things need attention) and helps start the next week off with a positive sentiment.

Coworking Passes: In addition to virtual coworking, it’s a good idea to include at least one or two days a week of onsite coworking for those that feel they need to get out of the house and be around other professionals. This has been widely adopted by some of the larger distributed organizations. Going completely virtual can be a bit of a shock to the system, this helps ease the transition and keeps everyone feeling like they are still human.

Offsite Team Events: With the reduction or elimination of in-person face time, team-building exercises now become more important. Organize quarterly or semi-annual gatherings at your favorite coworking establishment or pick a fun recreational location. If your company is large enough, you can divide these meets into geographical pods. Schedule at least one all-hands meeting per year with some fun events to ensure everyone feels like they are part of the organization. Do yourself a favor and don’t leave this to the last minute, you will have a poor turnout, piss people off and defeat the purpose.

Collaboration, Productivity & Automation Tools

There are literally dozens of team collaboration tools you can use to empower your remote workers. Try as many as you can. Select tools that are intuitive and self-explanatory, this will cut down on the learning curve. Make sure the vendors you select provide mobile support so your teams can be connected via phone or tablet.

Here are some that I have used and have found work well for remote teams, in no particular order:

  • Cloud business phone system with SMS:
    Google Voice, Dialpad or roll your own by using CPaaS & WebRTC eg. SignalWire — (btw, I work here).
  • Cloud storage, word processing, spreadsheets, slide decks:
    Google G-suite, Microsoft Office 365
  • Text-based team collaboration
    Slack
  • Software source repo and issue tracker
    Jira & Github
  • Task Management
    Trello, Wrike
  • Video & Web conferencing
    Zoom, Hangouts
  • Support
    Zendesk
  • Sales CRM
    Salesforce
  • Product Management
    Product Board, Trello
  • CRM and Marketing Management
    Hubspot
  • Automation
    Zapier
Virtual Coworking

As this remote work thing matures, we will see more purpose-built applications that aim to bring our teams closer together, virtually.

We are already seeing some activity in this space with the recent capital raise by Tandem, which has a sidecar collaboration application that works pretty well with Slack.

Tandem — virtual coworking app

Another is Sococo, which looks more like a virtual workspace with web conferencing. They take an interesting approach to how they visualize the virtual office and how team members work together. I actually think this is an intuitive idea, although it does feel a wee bit recreational. To be fair, I have not used the service.

Sococo — virtual workspace

It is expected these solutions that personalize and aid remote teams in working better together will certainly evolve. It is still unclear if customers would opt-in for purpose-built applications or just use several disparate applications to do the same job, time will tell.

The next post will speak to the future of remote work. We will be touching on AI & bots, VR & AR in the remote work realm, some of which are being used today and some are not far off at all.

If you work in a distributed company, I’d like to hear from you. What tools do you use today and how are they working for you? How often do you use video/web conferencing as part of your daily routine? If you prefer sharing your comments or questions privately, feel free to shoot me a text message or call anytime: (877) 897–1952 (Note: All calls will be recorded).

None of the ideas expressed in this post are shared, supported, or endorsed in any manner by my employer.

How to pick the right WebRTC mobile SDK build for your application

bloggeek - Mon, 01/27/2020 - 13:00

Most 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).

Official WebRTC precompiled libraries for Android and iOS

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?

Discontinuing to distribute the WebRTC mobile libraries

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?

  • The WebRTC implementation just got an internal milestone at Google for supporting 1.0 of the specification (at around the same time of the last release of this CocoaPod)
  • WebRTC releases are versioned based on the Chrome release they belong to, and we’re now at 79, readying ourselves for 80
  • Nowhere on this page or elsewhere is an indication when are these binaries created or from which branch of the code. There seems to be no easy way (or no way at all) to align them with the browser releases of the same codebase
  • There is no explanation or release notes for any of these libraries. How do you know what was fixed, modified, deprecated or added?

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:

  1. Fix the broken part of these releases, mainly by synchronizing them with real releases of WebRTC and maintaining clear release notes for them
  2. Discontinuing this effort as it causes more headaches than it was worth at its current state

They chose discontinuation. Probably because of what I’ll be sharing with you next.

What WebRTC mobile SDK should you use now?

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):

  1. Use Google’s libwebrtc project, compile and maintain it on your own
  2. Go with another third party library

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):

  • Commercial and cost $$$ to use
  • Don’t implement any codecs. You are expected to “bring your own”
  • Lack proper support for effective bandwidth estimation
  • Don’t offer acoustic echo cancellation
  • Not implementing peripherals support for media acquisition and/or playback (microphone, speakers, camera and display)
  • Interoperability with Chrome’s WebRTC. All the time. Including support for the latest features being added to it

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:

  • Not needing a lot of what libwebrtc offers (if you need just the data channel for example)
  • Requiring specialized features, such as playback from file or other sources into a WebRTC session
  • Needing to run on “exotic” devices or operating systems (i.e – not classic iOS or Android mobile devices)

For the majority of the developers out there, libwebrtc is the right SDK to use on mobile.

Best practices in using Google’s libwebrtc mobile SDK

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:

  1. Have your own codebase for libwebrtc that you compile and integrate into your application
  2. Don’t automatically upgrade to the latest libwebrtc release when that gets pushed out to a Chrome release. Doing that means releasing your application every 6-8 weeks, which is a brutal release cycle for most vendors
  3. Plan and aim for 2-4 upgrades of your libwebrtc SDK in your mobile application. Any less and you’re in danger of breaking interoperability with Chrome or at the very least missing out on optimizations, improvements and new features
  4. Think of libwebrtc as a starting point. You will have your own minor fixes and optimizations to it. Make sure they are well documented so that a future upgrade of the library doesn’t become too complex and risky a task
  5. Revisit these fixes and optimizations you are making once a year. Some of them might not be needed any longer, and carrying them further might take too much effort or hurt performance
  6. Try to contribute fixes you’ve made back to libwebrtc. This will be a long and frustrating process, but I suggest going through with it
  7. Roll out slowly. Have it tested internally, then with a small % of your audience and then with everyone
  8. Make sure you can rollback…
FAQ about WebRTC mobile SDK library Which library SDK should I use for WebRTC on iOS and Android?

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.

What version of Google’s WebRTC should I use for my mobile application?

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.

Are there client-side WebRTC libraries other than the one Google publishes?

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.

Reduce your risks with WebRTC

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.

The post How to pick the right WebRTC mobile SDK build for your application appeared first on BlogGeek.me.

Supporting WebRTC: Two webinars coming your way (with Talkdesk & Poly)

bloggeek - Mon, 01/13/2020 - 13:00

Register to the two free webinars I am hosting this month in areas around supporting WebRTC with Talkdesk and Poly.

I am shifting gears this year. Looking back at last year, what I’ve noticed is that there’s been a shift in what clients are asking of me. Many of them are more interested in issues that are support related rather than architecture or development. While a lot of the work I do revolves around assisting with defining architectures and dealing with roadmaps of products, there’s been an ongoing increase in the questions related to supporting WebRTC.

This led to a few changes in the things that I have on offer:

  1. At testRTC, where I am a co-founder and apparently also the CEO, we’ve launched a new product for network testing. This is focused on helping people who support clients with network related issues around WebRTC applications. We’re now working on another product specific to this domain
  2. At BlogGeek.me, I am now offering a new course called Supporting WebRTC. With 40 people who were there in the prelaunch and the feedback I’ve been getting, this seems like the topic is really relevant to many

Somehow, I found myself scheduling two separate free webinars for this month with partners that are around WebRTC support.

Talkdesk and how to support WebRTC-based call centers

At testRTC, we’ve created a product in 2019 to assist support teams analyze network issues for their users. Our first client for this product were Talkdesk who were kind enough to share their experience with us in a nice testimonial.

On Tuesday next week, João Gaspar from Talkdesk will join me in a webinar titled How to analyze WebRTC network issues in minutes and not hours (or days). In this webinar, I’ll explain a bit about the challenges WebRTC poses when it comes to connectivity from a support perspective, and João will share with us what Talkdesk are doing today to assist their users.

I’ve learned a lot from working with João and his team last year, and I am sure this will be interesting to you as well.

How to analyze WebRTC network issues in minutes and not hours (or days)

Tuesday, January 21, 2020

14:00-14:45 EST; 11:00-11:45 PST

Register here Poly and picking the right headset to improve WebRTC session quality

In the last year I’ve had a lot of conversations with support engineers. The people who end up needing to troubleshoot, figure out and explain issues to their users. Many of these issues end up being related to network connectivity. This made me create the new Supporting WebRTC course (now open for all to enroll). One thing I wanted to add there but had no clue about is headsets.

Headsets are this thing that I have at home and use for most of my conference calls. But I never really gave them a second thought. The last pair I purchased at the local computer equipment store, not even making an informed decision about what I needed.

That lead me to reach out to Poly, to get a briefing about headsets and how they affect quality in WebRTC, which lead to me understanding that this boring topic known as headsets is quite fascinating. Obviously, I used what I learned in that briefing to create that lesson I needed in my course.

The great thing though, is that Richard Kenny from Poly (who briefed me), was kind enough to accept joining a webinar about this topic.

Picking the best headset for your next WebRTC session

Tuesday, January 28, 2020

14:00-14:45 EST; 11:00-11:45 PST

Register here How are you handling your support efforts with WebRTC?

The people who usually follow me here are developers or product managers. Seldom are they support-oriented. I know that based on the comments and conversations I have on and off this website.

My suggestion to you is to go check what your support team is challenged with. What is keeping them up at night. What is it they need assistance with. What knowledge are they missing.

And then once you do, see if these webinars might be useful to them so you can share this with them. Let’s make 2020 the year we start solving more of the connectivity issues for our customers.

The post Supporting WebRTC: Two webinars coming your way (with Talkdesk & Poly) appeared first on BlogGeek.me.

Google’s WebRTC goals – a problem of expectations

bloggeek - Thu, 01/09/2020 - 13:00

WebRTC isn’t like Node.js or TensorFlow. Its purpose isn’t adoption in general, but rather adoption in browsers. If you believe otherwise, then there’s a problem of expectations you need to deal with.

As we are starting 2020, with what is hopefully going to be an official spec for WebRTC 1.0, it is time for a bit of reflections. I started this off when writing about Google’s WebRTC roadmap and I’d like to continue it here about WebRTC goals and expectations.

When I explain what WebRTC is, I start off with the fact that it is two things at the same time:

  1. A standard specification
  2. An open source project

The open source project angle is interesting.

Is WebRTC an open source project?

The main codebase we have for WebRTC today is the one maintained by Google at webrtc.org. There are other open source projects that implement the spec, but none to this level of completeness and quality.

By the ecosystem and use of WebRTC, one may think that this is just another popular open source project, like Node.js or TensorFlow.

It isn’t.

If I had to depict Node.js, it would be something like this:

TensorFlow?

How would I draw a diagram of WebRTC? Probably something like this:

From an administrative point of view, WebRTC is part of Blink, Chromium’s rendering engine. Blink is part of Chromium, the open source part of Chrome. And Chromium is what Chrome uses as its browser engine.

WebRTC isn’t exactly an independent project, sitting on its own, living the life.

Need an example why? WebRTC’s version releases follow the version releases of Chrome in terms of numbering and release dates. But mobile doesn’t follow the exact same set of rules. Olivier wrote it quite eloquently just recently:

“For web developers, release notes are very good and detailed. But for IOS and Android developers… I expect the same level of information.”

There’s an expectation problem here…

WebRTC isn’t like other open source projects that stand on their own, independent from what is around them. WebRTC is a component inside Chrome. A single module.

The WebRTC team at Google are assisting developers using the codebase elsewhere. It took a few years, but we now have build scripts that can build WebRTC separately and independently from Chromium. We have official pre-compiled mobile libraries for WebRTC from Google, albeit not a 1:1 match to the official WebRTC/Chromium releases.

At the end of the day, the WebRTC team at Google are probably being measured internally at Google by how they contributed to Chrome, Google’s WebRTC-based services AND to the web as a whole. Less so to the ecosystem around their codebase. If and how WebRTC gets adopted and used in mobile first applications or inside devices and sensors is harder to count and measure – and probably interests Google management somewhat less.

Who contributes to WebRTC?

I took the liberty of checking the commit history of the WebRTC git project over the years, creating the graph below:

There were various different emails associated with the committers, but they fell into these broad categories:

  1. People with a webrtc.org email address. These are Google employees working directly in the WebRTC project (at least I don’t know of a non-Googler with a webrtc.org email address)
  2. People with a google.com email address
  3. Commits done with a “chromium-webrtc-autoroll@” or similar “email” address in them. I’ve categorized these as bots
  4. All the others

It is safe to say that the majority of committers throughout the years are Googlers, and that the ones who aren’t Googlers aren’t contributing all that much.

Is that because Google is protective about the codebase, as it goes right into Chrome which servers over a billion users? Or is it because people just don’t want to commit? Maybe the ecosystem around WebRTC is too small to support more contributors? Might there be other reasons?

One wonders how such a popular project has so little external contributors while there are many developers who enjoy it.

Is webrtc.org Google’s RTC or ours?

A few years back, Google introduced a new programming language – Go (or Golang). It is getting quite a following (and its own WebRTC implementation, though unrelated to this article).

In May 2019, quite a stir was raised due to a post published by Chris Siebenmann titled Go is Google’s language, not ours. Interestingly enough, if you replace the word “Go” with “WebRTC” in this article – it rings true in many ways.

Golang has over 2,000 lines in its CONTRIBUTORS file versus WebRTC’s 100+ AUTHORS. While Golang identify individual contributors, WebRTC uses wildcard “corporate” contributions (I wouldn’t count too many contributors in these corporates though). WebRTC is smaller, and I dare say more centralized.

The simple answer to those who complain is going to be the same – “this is an open source project, feel free to fork it”.

For WebRTC, I’d add to this that what goes into the API layer is what the W3C and IETF decide. So Google isn’t in direct control over the future of WebRTC – just of its main implementation, which needs to adhere to the specification.

Then there’s the Node.js community forks that took place over the years (latest one from 2017). These disputes, technical and political, always seem to get resolved and merged back into the main project. In hindsight, this just seems like attempts to influence the direction of the project.

Can this be done for WebRTC?

It already occurred with the introduction (and slow death) of ORTC. ORTC (Object-RTC) started and was actively pushed by Microsoft, ending with most of what they wanted to do wrapped up into WebRTC (and probably causing a lot of the delays we’ve had with reaching WebRTC 1.0).

What does that mean to you?

Should you complain about Google? Maybe, but it won’t help

For Google, it makes sense to push WebRTC into Chrome as that is its main objective. Google is improving in tooling and capabilities of using WebRTC outside of Chrome, but this objective will always be second to prioritization of Chrome’s needs and Google’s services.

As an open source project, you are free to use or not use it. You’re not paying for it, so what would you be complaining about?

Google have invested and is still investing heavily in WebRTC. It is their prerogative to do so, especially as they are the only ones doing it today.

You should make an educated decision, weighing your requirements, risks and challenges, when developing a service that makes use of WebRTC.

The post Google’s WebRTC goals – a problem of expectations appeared first on BlogGeek.me.

Google’s private WebRTC roadmap for 2020 = AI

bloggeek - Mon, 01/06/2020 - 13:00

Google’s plans for WebRTC have either changed or finally got revealed. Where? In its internal WebRTC roadmap.

WebRTC is many things.

On one hand, it is a standard specification at the W3C (and is reaching 1.0 milestone).

On the other hand, it is an open source project. While there are a few such projects today, the most important one is Google’s webrtc.org. This is the code that gets into Chrome itself and the one being adopted by many (simply because it is already highly optimized for the main scenarios. And… it is free).

Google made it super simple for companies to adopt its WebRTC implementation – it uses a BSD open source license, making it quite permissive.

In the last 8 years, we’ve been treated like royalty, having access to a world-class media engine implementation for free.

The WebRTC roadmap we’ve seen so far from Google had 3 types of features in it:

  1. Making sure the implementation fits the spec
  2. Improve the architecture to perform better
  3. Add features specific to Google’s needs in other projects (not necessarily abiding to the spec)

At all times, these were available to everyone.

Google’s intent in open sourcing WebRTC

When WebRTC was first introduced it was about who has the balls to take something that up until that point was considered a core competency and make it freely available. This was a piece of technology that video conferencing companies protected fiercely, battling about through their sales and marketing pitches, each claiming to have superior media quality. At the time, media quality wasn’t in the “good enough” position that it is today:

Google made the calculated risk at the time:

  • Media quality was improving. So were bandwidth available and compute. It made sense that it would get to a point of “good enough” within a few years time
  • A migration to the cloud for video conferencing wasn’t at most companies agenda yet, but as cloud migration started picking up everywhere, it made sense to occur here as well. These cloud migrations took place hand in hand with the use of browsers
  • Dominance in browsers and lack of a real operating system footprint meant needing to have a media engine as part of the browser
  • Google had no leading service in video conferencing. Google Hangouts was available, but wasn’t any real competition to the leading platforms at the time, so they didn’t have much to lose by the decision

Other vendors just following along in the ride, making minor contributions here and there. Today, the leading (and only) media engine out there for WebRTC is still the Google one. At least in any meaningful way. So much so that Google’s “competitors” are using Google’s WebRTC stack directly in their products.

Where has this lead Google?

WebRTC is a huge success. All modern browsers now support it. They interoperate (to a good extent). Today, in every industry and market where live or real time media is needed, WebRTC is playing an important role.

But what about Google and WebRTC? What success did Google exert from WebRTC?

Not a lot. Or at least not enough.

Google uses WebRTC in the following services it offers:

  • Hangouts / Google Meet
  • Duo
  • Stadia
  • Chrome Remote Desktop
  • YouTube Live

Lets see how well did Google fare in each.

Hangouts / Google Meet

I use these two services almost on a daily basis. My calendar meetings default to them simply because they are so each to schedule with the Google Calendar. They offer what I need without any of the complexity.

But.

When you read or hear discussions about the video conferencing market, the vendors mentioned are usually Zoom and Cisco. Maybe Microsoft Teams or Skype for Business. Also Bluejeans and Pexip. A few others. Google isn’t one of the top vendors that come to mind here. Even though their service is rather good.

Did I mention that almost all their competitors are using WebRTC as well?

Duo

Duo. Google’s answer to Apple’s FaceTime.

It is a standalone video calling app available on Android and iOS. It isn’t installed by default on most smartphones and users need to actively find it, install it and make a decision on using it. Not an easy feat.

Why hasn’t Google nailed and bolted it smack into Android? Probably due to carriers and not wanting to hurt their feelings (and Google’s relationship with them). Otherwise, it makes no sense for Google to try and compete with the likes of FaceTime with one hand tied behind their backs.

Anyways… Duo is quite popular. Even on iPhone. It is ranked #7 in the social apps in the Apple App Store. This is higher than Houseparty (positioned somewhere at #17-20), which is rather interesting considering the high engagement Houseparty sees for its users.

Google doesn’t share any stats on usage of Duo. The only thing we know is downloads and the number of people who ranked it – two stat points that are useless for social networks. This is quite telling to the real usage numbers – not publishing them means they aren’t on par with the competition.

Curious myself, I’ve put out a quick poll on Twitter:

This is most definitely NOT the way to know or understand usage, but it is interesting.

My audience is probably tech savvy. Those answering the poll are highly likely to know about WebRTC. And still. We have over 50% who never tried it and 13% who use it. I’d consider 13% quite a lot and surprising. But it isn’t scratching the surface of where it should be given that Google owns and controls Android.

Stadia

Google Stadia is something totally different. It is cloud gaming. The game is being processed and rendered in “the cloud” and gets streamed in real time to your device using WebRTC. Google even made modifications to its WebRTC implementation to make it a better fit for gaming.

The concept is great. The technology is solid. The experience is said to be good (if you’re close enough to the data center and have a good network connection).

From the media, it seems like there are hurdles and challenges to the Stadia launch – this type of an article titled “Stadia’s biggest problem? Google” or this one titled “Google Duo is the best video calling service you’re not using” are rather common. Especially when put in comparison to the Apple Arcade launch.

Looking at Google Play store numbers for the Stadia app, things look rather disappointing: below 1M installs so far:

I have this feeling Google expected more.

Cloud gaming is still new and nascent. It will take time to happen and mature.

Take this into an adjacent industry, Netflix introduced streaming in 2007. It took them 3-4 years for the stock to take notice and the service to mature enough to make a dent in the industry. Whereas today, every other production studio is launching their own streaming service.

Will Google have the patience with Stadia to get there or will it end up shutting it down like many other “experiments” it has been running throughout the years? The thought itself is making it hard for Google to entice game developers to jump on its platform.

Chrome Remote Desktop

Google apparently has a remote desktop service. It makes use of WebRTC’s screen sharing capability and is called Chrome Remote Desktop.

While I haven’t used it myself, this does seem to have quite a following. 10M+ installs on Android, The Chrome extension shows ~4.8M users.

There is no apparent business model as the service is offered freely, and while the market has similar paid services, it doesn’t seem to be big enough to attract a company like Google. This isn’t interesting enough to value an investment in WebRTC itself by Google.

YouTube Live

YouTube has the ability to host live events. And it does that with the help of WebRTC.

That said, its use of WebRTC isn’t an impressive one – it is just a window into the service if you want to broadcast from your browser. It isn’t used for live streaming to the users themselves. There’s more on the technical side of it on webrcHacks, where they analyze what goes on the wire with YouTube Live.

Here’s the thing – just like Chrome Remote Desktop, this is Google exploiting a technology that is there. It isn’t about leading the industry or the market with it. And as with Chrome Remote Desktop, it isn’t of enough value to make it worth their while to invest in making WebRTC itself better.

WebRTC is now part of HTML5 and part of what browsers need to do, so Google needs to invest in having it in Chrome. How much to invest is the real challenge.

To WebRTC or not to WebRTC?

Meet, Duo and Stadia seem to be the leading factors in whatever Google is doing in WebRTC, other than dealing with complaints and feedback from the community.

Google Meet

Google Meet is using VP9. It is one of the only group calling services running in production at scale that have made that shift.

By harnessing WebRTC and owning its roadmap, Google is able to experiment and build their service faster than others can on WebRTC.

Two interesting examples we’ve had in the past year –

1. At Kranky Geek 2018, Google showed an experiment of using WebAssembly with WebRTC to improve video switching in a conference by distinguishing noise and speech:

Did it find its way into Google Meet? Maybe.

Then there’s the new captioning feature in Google Meet, which Gustavo nicely explains. It uses the data channel in WebRTC to send back the results. Assuming anything in WebRTC was needed to change to make this work better, Google could do that as it owns the WebRTC roadmap.

Google Meet, being predominantly a browser based experience, will need to rely on changes made directly into WebRTC or things that can be bolted on top using WebAssembly.

Google Duo

Google Duo is a mobile first service. It has browser support via Duo for Web, but for the most part, it is meant to be used on your smartphone.

Last month, Google announced some new features in Pixel phones, but also 3 machine learning based improvements for Duo:

Auto-framing:

“Auto-framing keeps your face centered during your Duo video calls, even as you move around, thanks to Pixel 4’s wide-angle lens. And if another person joins you in the shot, the camera automatically adjusts to keep both of you in the frame.”

We’ve seen Facebook do that in Portal and a few video conferencing vendors adding that to their room systems.

Packet loss concealment:

“When a bad connection leads to spotty audio, a machine learning model on your Pixel 4 predicts the likely next sound and helps you to keep the conversation going with minimum disruptions.”

Packet loss concealment using machine learning is something not many are doing (or publishing that their are doing).

Background blur:

“you can now apply a portrait filter as well. You’ll look sharper against the gentle blur of your background, while the busy office or messy bedroom behind you goes out of focus.”

Another nice feature, which is available in other services such as Zoom.

From the looks of it, auto-framing and background blur rely on hardware based capabilities of the Pixel devices. Packet loss concealment… a lot less so.

Could we see machine learning based packet loss concealment find its way into the WebRTC codebase? (where it makes the most sense to add it instead of as an external piece of software). Not soon…

Google Stadia

For Google Stadia, Google went with QUIC instead of SCTP for the controls. It decided to make use of WebRTC for live streaming itself.

But it wasn’t enough. It needed the low latency of WebRTC to be even lower. So it added a Chrome experiment to enable them to reduce the playout delay in WebRTC. A few of my clients have already adopted it and are happy with the results for their own use case.

Google also tweaked and improved the VP9 decoder to make it work with 4K 60fps streams.

In the case of Stadia, the changes need to be made inside the WebRTC codebase to apply well for its service anywhere.

What is changing with Google’s strategy about WebRTC in 2020?

WebRTC 1.0 is “out”. Almost.

The latest CR (Candidate Recommendation) is dated December 13. Hopefully the last one before we go to the next step. It is interesting to look at the original charter of WebRTC:

It took somewhat longer to get here than originally expected, but we’re almost there.

Google held its internal milestone of WebRTC 1.0 code complete two months back.

What now?

Besides housekeeping, bug fixes, and talking about WebRTC NV (the next version), I think a lot of it will change internally at Google to how can they make more of their investment in WebRTC and stay or become more competitive in the market. This being an open source project, means that some features will need to be kept out of the open source codebase. Like the new packet loss concealment mechanism in Google Duo.

How is that achievable?

The leading factor is going to be adding more flexibility and control to developers over what WebRTC is and how it operates. Ideally by using WebAssembly and in the future by using WebTransport and WebCodecs, two new initiatives that will unbundle a lot of what WebRTC is.

This gives the ability to take out improvements out of the baseline implementation and introduce them as proprietary features.

The demarcation line of what will go into the WebRTC codebase by Google and what will be kept out of it is going to be the use of machine learning and artificial intelligence. Whenever a feature makes use of learned machine learning models, Google will most probably try to keep that implementation out of WebRTC. Why? Because it has the greatest value and the highest investment today.

Should this worry you?

Maybe, but it is to be expected.

Google has invested heavily in WebRTC. Without this investment nothing that we see and use today in WebRTC and take for granted would have been possible.

It is even surprising that it lasted this long…

WebRTC closes the basic gaps and requirements of media engines. It is good enough. If you want to improve upon it, differentiate or be at the cutting edge of the WebRTC technology, you will need to invest in it yourself as well. Relying only on Google isn’t an option. And probably never really was.

Here’s to an interesting and eventful 2020 with WebRTC!

The post Google’s private WebRTC roadmap for 2020 = AI appeared first on BlogGeek.me.

Is everyone switching to Unified Plan?

webrtchacks - Tue, 12/31/2019 - 14:19

Review of Chrome's migration to WebRTC's Unified Plan, how false metrics may have misguided this effort, and what that means moving forward.

Continue reading Is everyone switching to Unified Plan? at webrtcHacks.

WebRTC conference calls. What could possibly go wrong?

bloggeek - Tue, 12/17/2019 - 13:00

Conference calls were always complex. WebRTC might have made joining them simpler, but it does come with its own set of headaches.

I’ve been in the industry for the last 20 years or so (a dinosaur by now). I had my share of conference calls that I joined or scheduled. As humans, we tend to remember the bad things that happened. The outliers. There are many of those with conferencing.

When I saw this Dilbert strip the other day, it resonated well with the “Supporting WebRTC” course I’ve been working on these past few months:

One of the things I am dabbling with now in the course are media quality issues. This was spot on. So of course I had to share it on Twitter, which immediately got a colleague to remind me of this great Avengers mock video conference:

The funny thing is that this still occurs today, even if people will let you believe networks are better and these problems no longer exist. They do. Unless you are Zoom – Zoom always works. At least until it doesn’t…

What can possibly go wrong?

This one was just published today, so couldn’t resist…

A modern WebRTC service today will have a few potential failure points:

  1. The cloud vendor’s infrastructure
  2. Your own infrastructure
  3. The user’s network
  4. The user’s browser
  5. The user’s device

Let’s try to break these down a bit

1. The cloud verndor’s infrastructure

Here’s a secret. AWS breaks from time to time. So does Azure and Google and Digital Ocean and practically everyone else.

Some of these failures are large and public ones. A lot more are smaller and silent ones that aren’t even reported in the main status pages of these cloud vendors. We see that in testRTC – as I am writing these words, we are struggling with a network or resource issue with one of the cloud vendors that we are using, which affects one of our services (thankfully, we’re still running for most of our customers).

Your service might be unreachable or experiencing bad media quality because of the cloud vendor you are using. Fortunately, most cases, these are issues that don’t last long. Unfortunately, these issues are out of your control.

2. Your own infrastructure

This one is obvious but sometimes neglected. What you run in your backend and how the client devices are configured to use it has a profound effect on the quality of experience for your users.

I’ve seen anything from poor ICE servers configuration, through bad scaling decisions to machines that just need a reboot.

WebRTC has a lot of moving parts. You need to take good care and attention to them.

3. The user’s network

Now we head towards the things that you have no control over… and primarily that is the user’s network.

You. don’t. have. control. over. what. network. your. customer. Uses.

He might be over a poor 3G connection (yes, we still have those). Or just be too far from the closest WiFi hotspot he is connected through. Or any other set of stupid issues.

In enterprises, problems can easily include restrictive firewall configurations or use of an HTTP proxy or a VPN.

Then there’s the congestion on the user’s network based on what OTHER people are doing on it.

Here, what you’ll need to do is to be able to understand the issue and explain it to the user to help him in squeezing more out of the network he is using.

4. The user’s browser

Here’s another challenging one.

The first one is a bit obvious – modern browsers automatically upgrade. This means you will end up with a new browser running your app one day without Apple, Google, Microsoft or Mozilla calling you to ask if you agree to that. And yes – these upgrades may well change behavior for customers and affect media quality.

Then there’s the opposite one – in enterprise environments, IT administrators sometimes lock browser versions and don’t let them upgrade automatically.

The biggest challenge we’re now facing though are Google experiments, like the one conducted with mDNS in WebRTC. Google is conducting experiments in Chrome on live users sporadically. You have no control over these and no indication where and how they are conducted. The whole purpose of this is to surface issues. Problem is, you won’t know if it breaks things for you until someone complains (or unless you monitor your deployment closely).

5. The user’s device

The device the user uses affects quality. Obviously.

Tried recently to use an iPhone 4 with a WebRTC service?

The CPU, memory, software and other processes your user has on the device will affect quality. Add to that the fact that certain devices and peripherals behave differently and have their own known (or unknown) issues with WebRTC, and you get another minor headache to deal with.

The things we can control in our WebRTC conference calls

Here’s where we started – a modern WebRTC service today will have a few potential failure points:

  1. The cloud vendor’s infrastructure
  2. Your own infrastructure
  3. The user’s network
  4. The user’s browser
  5. The user’s device

In WebRTC calls, you can control your own infrastructure. And you can build it to work around many cloud vendor’s infrastructure issues.

You can try to add logic that deals with the user’s device.

You can probably deal with many of the user’s browser issues by more testing and running their unstable and developer preview releases.

The things we can’t control in our WebRTC conference calls

The main thing you can’t control is the user’s network.

What you can do here is to provide better support, assisting your users in finding out the issues that plague their network and suggesting what they can do about it.

Two things you will be needing to get that done: tooling and knowledge

The tooling side I’ll probably touch in a future article. The knowledge part is something I have a solution for.

How can you better serve your customer?

In the last few months I’ve been working on the creation of a new “Supporting WebRTC” course. This course is geared towards support people who get complaints from users about their service and they need to understand how to help them out.

The course started through conversations with support teams in widely known providers of WebRTC services, which turned into a suggested agenda that later turned into a real course.

There are already close to 6 hours of content split into 33 lessons, with more to be added in the next month or so.

I’ve decided to open up registration to the course to everyone and not limit it to the limited pre-launch users I’ve shared it with. I feel it is the right time and that the content there is rock solid.

If you want to improve your knowledge or your support team’s knowledge of WebRTC, with a focus on getting them making your users happy and using your service, then check out my course.

Register to the Supporting WebRTC course

The post WebRTC conference calls. What could possibly go wrong? appeared first on BlogGeek.me.

The software inside video conferencing hardware is… WebRTC

bloggeek - Mon, 12/02/2019 - 13:00

WebRTC isn’t only about guest access or even interoperability. It is about the whole infrastructure and service.

My article last month about guest access, the use of WebRTC for it AND how it is now used for “interoperability” between Microsoft and Cisco had its nice share of feedback and comments. Both on the article and off of it in private conversations. I think there is another trend that needs to be explained, which in a way is a lot more important. This one is about video conferencing hardware being dominated by HTTP and WebRTC. This in turn, is affecting how modern video infrastructure is also shifting towards WebRTC.

Where video conferencing hardware meets WebRTC

Check out this recent session from Kranky Geek last month. Here, Nissar Mahamood from Lifesize explains how WebRTC got integrated into their latest meeting room systems (=hardware), getting it to 4K resolutions.

It is a good session for anyone who is looking at embedded platforms and systems or needs to customize WebRTC for his own needs, using it outside of a web browser.

There are two things in this video that surprised me, for two very different reasons:

  1. Using GStreamer as the basis of the media engine
  2. Selecting Node.js as the client application environment
Using GStreamer as the basis of the media engine

I started seeing more and more developers using GStreamer as part of the technology stack they use with WebRTC. On Linux, your best bet with processing media using open source is either ffmpeg or GStreamer. Due to the real time nature of WebRTC, GStreamer is often the more sought after approach. In the past year or so, it also added WebRTC transport, making it a more viable option.

In many cases, the use of GStreamer is for connecting non-WebRTC content to WebRTC or getting content from WebRTC to restream it elsewhere. Lifesize has done something slightly different with it:

As the illustration above from their Kranky Geek session shows, Lifesize replaced the media engine (voice and video engines) part of WebRTC with their own which is built on top of WebRTC. They don’t use the WebRTC parts of GStreamer, but rather the “original” parts of it and replacing what’s in WebRTC with their own.

It is surprising as many would use WebRTC specifically for its media engine implementations and throw its other components. Why did they take that route? Probably because their existing systems already used GStreamer that is heavily customized or at the very least fine tuned for their needs. It made more sense to keep that investment than to try and reintroduce it into something like WebRTC.

This approach, of taking the WebRTC source code and modifying it to fit a need isn’t an easy route, but it is one that many are taking. More on that later.

Selecting Node.js as the client application environment

We’ve been so focused on development with WebRTC on browsers and mobile, that embedded non-mobile platforms are usually neglected. These have their own set of frameworks when it comes to WebRTC.

The one selected by Lifesize was Node.js:

They created a Node.js wrapper that interfaces directly with the WebRTC native C++ “API” with an effort to create the same JS API they get in the browser for WebRTC.

Why? Their meeting room systems now use HTML for its visual rendering and the application logic is driven by JavaScript.

Why JavaScript?

Because of Atwood’s Law

any application that can be written in JavaScript, will eventually be written in JavaScript

Lifesize simply made their application to one that can be written in JavaScript.

This is doubly true when you factor in the need to support web browsers where you have WebRTC with a JS API on top anyways.

The hidden assertion of WebRTC cloud infrastructure

What I like the slide above is the cloud with the wording “Lifesize Cloud Service” in it. The fact that Lifesize is connecting to it via Node.js speaks volumes about where we are and where we’re headed versus where we’re coming from.

A few years ago, this cloud service would have been based on H.323 or SIP signaling.

H.323 is now a deadend (something that is hard for me to say or think – I’ve been “doing” H.323 for the better part of my 13 years at RADVISION). SIP is used everywhere, but somehow I don’t see a bright future for it outside of PSTN connectivity (aka SIP Trunking).

Lifesize may or may not be using SIP here (SIP over WebSocket in this case) – due to the nature of their service. What I like about this is how there is a transition from WebRTC at the edge of the network towards WebRTC as the network itself. Let me try and explain –

Video conferencing vendors started off looking at WebRTC as a way to get into browsers. Or as a piece of open source code to gut and reuse elsewhere. If one wanted to connect a room system or a software client to a guest (or a user) connecting via WebRTC on a web browser, this would be the approach taken:

(I made up that term transcoding gateway just for this article)

You would interconnect them via a gateway or a media server. Signaling would be translated from one end to the other. Media would be transcoded as well. This, of course, is a waste of processing and bandwidth. It is expensive and wasteful. It doesn’t scale.

With the growing popularity of WebRTC and the increasing use and demand for browser connectivity to video conferences, there was/is no other way than to rethink the infrastructure to make it fit for purpose – have it understand and work with WebRTC not only at the edge.

That’s when vendors start trying to fit WebRTC paradigms into their infrastructure:

(guess what? Translating gateway? Also made up just for this article)

Things they do at this stage?

There are a lot of other minor nuances that need to be added and implemented at this stage. While some of these changes are nagging and painful, others are important. Adding SRTP simply means adding encryption and security – something that is downright mandatory in this day and age.

The illustration also shows where we focused on making the changes in this round – on the devices themselves. We’ve “upgraded” our legacy phone into a smartphone. In reality, the intent here is to make the devices we have in the network WebRTC-aware so they require a lot less translation in the gateway component.

Once a vendor is here, he still has that nagging box in the middle that doesn’t allow direct communication between the browser and the rest of his infrastructure. It is still a pain that needs to be maintained and dealt with. This becomes the last thing to throw out the window.

At this last stage, vendors go “all in” with WebRTC, modifying their equipment and infrastructure to simply communicate with WebRTC directly.

This migration takes place because of three main reasons:

  1. The need to support web browsers with WebRTC
  2. The cost of interworking across WebRTC and whatever the rest of the vendor’s infrastructure supports
  3. The popularity of WebRTC and its vibrant ecosystem marks it as the leading technology moving forward

That third reason is why once a decision to upgrade the infrastructure of a vendor and modernize it takes place, there is a switch towards adopting WebRTC wholeheartedly.

This isn’t just Lifesize

Microsoft took the plunge when adding Skype for Web and went all in with Microsoft Teams.

With their hardware devices for Teams they simply support web technologies in the device, with WebRTC, which means theoretical ability to support any WebRTC infrastructure deployed out there and not only Teams.

Same as the above is what we see with Cisco recently.

BlueJeans and Highfive both live and breath web technologies.

Forgot to mention you? Put a comment below…

There were other good Kranky Geek sessions around this topic this year and last year. Here are a few of them:

  • Discord (2018) – how they use WebRTC and the changes made to it to fit their needs. In their case, that was very large audio conferences
  • Microsoft (2018) – an overview of WebRTC for UWP and Hololens
  • PION (2019) – an alternative WebRTC stack written in Go, and using WASM while at it
  • RingCentral (2019) – server apps with Node.js+WebRTC
  • Phantom Auto (2019) – replacing the video encoder with an external hardware one running on an NVIDIA GPU
The winning video conferencing hardware software stack

Here’s what seems to be the winning software stack that gets shoved under the hood of video conferencing hardware these days. It comes in two shapes and sizes:

Linux
  • Linux as the underlying operating systems
  • HTML/JS as the visualization layer (Node.js, Chromium or WebKit as its baseline)
  • WebRTC embedded in there as part of the HTML implementation

This gives a vendor a hardware platform where web development is enabled.

Android
  • Android as the underlying operating system
  • Android app used to implement the device UI and application logic
  • WebRTC embedded natively as part of the app

This diverts from the web development approach a bit (while it does allow for it). That said, it opens up room for third party applications to be developed and delivered alongside the main interface.

Linux or Android, which one will it be? Depends on what your requirements are.

A word about Zoom in this context

Why isn’t Zoom using WebRTC properly?

I don’t know. But I can make an educated guess.

It all relates to my previous analysis of Zoom and WebRTC.

Zoom were stuck with the guest access paradigm, trying to take the first step was too expensive for them for some reason. Placing that interworking element to connect their infrastructure to web enabled Zoom clients didn’t scale well with pure WebRTC. It required video transcoding and probably a few more hurdles.

At their size, with their business model and with the amount of guest access use they see with the Zoom client on PCs, it just didn’t scale economically. So they took the WASM route that they are following today.

It got them on browsers, with limited quality, but workable. It got them an understanding on WASM and video processing in WASM that not many companies have today.

And it put them on an intersection in how they operate in the future.

Would they:

  1. Switch towards WebRTC, as most of their competitors have; or
  2. Continue with WASM, waiting for WebCodecs and WebTransport to progress to a point where they are clearly defined and available in web browsers

If I were the CTO of Zoom, I am not sure which of these routes I’d pick at this point in time. Not an easy decision to make, with a lot to gain and lose in each approach.

Need help figuring this out?

This whole domain is challenging. Getting WebRTC to work on devices, around devices, in new or existing infrastructure. Deciding how to define and build a hardware solution.

Contact me if you need help figuring this out.

The post The software inside video conferencing hardware is… WebRTC appeared first on BlogGeek.me.

Kranky Geek SF 2019 – post event summary

bloggeek - Mon, 11/25/2019 - 13:00

Our best Kranky Geek event ever. Or is it just that I have a short memory?

Earlier this month marked the highlight of the year for me. It happens every year now since 2015. The Kranky Geek event takes place in San Francisco. The event started by mistake and had become an immensely taxing and enjoyable undertaking for me.

WebRTC is a niche of an industry that are here to change the world and challenge how we communicate online with each other in real time. Kranky Geek became a place where our WebRTC niche meets, mingles and discusses many aspects of what it is that we’re doing. A lot of it is technology – and learnings people had and the scars they have to show for it. Some of it is more future looking, where new requirements are shared and semi-pitches are made. It is also a place where we get to talk and interact with the people behind the browser implementations.

I decided to share this slide about how niche WebRTC is:

This shows Stack Overflow Trends for WebRTC, VoIP and SIP. It is the percentage of questions in each month that shows these technologies as tags. WebRTC is higher than either SIP or VoIP by a factor of 3, which is nice. But overall, we’re still talking 0.05% of the questions, which isn’t much. WebRTC is a niche, but an important one (at least to me).

What is Kranky Geek all about

Kranky Geek is about the current state and the immediate future of the WebRTC ecosystem. It is first and foremost an event for developers.

Here’s what I understood at a client meeting earlier in that same week. After the meeting, the client comes to me and tells me how he is using the videos from past Kranky Geek events. Whenever there is a technical detail or a topic he knows is covered by one of our past sessions, he just goes and searches the videos to find that 2-3 minutes he needs.

It got me thinking. It is quite similar to how I use it. I end up referring people to a specific Kranky Geek video at least once a month if not more.

In the end, we are into learning and expanding the knowledge available out there about WebRTC.

The obligatory thanks

The Kranky Geek event isn’t funded by the audience’ tickets. These are practically free. We have a low registration fee that is a kind of a seriousness fee, which makes it easier to estimate the actual attendance rates we will see. That fees ends up being donated to good causes. In the case of Kranky Geek, we’ve been giving that money to GDI.

The event is only possible due to its sponsors.

There are a few people and companies that I need to thank for the Kranky Geek 2019 event.

First, to my partners in crime – Chris and Chad. Our different opinions and dispositions make a good mix for running Kranky Geek.

To Google and the Chrome WebRTC team at Google.

Google have been there with us from the beginning. They assist us tremendously with the logistics, their attendance and their sessions throughout the years.

To our sponsors of the event:

Their contribution is an important part of us being able to do this every year. I am also very happy that without exception, they treat their speaking slot and our rigorous process and dry runs seriously.

We had a new type of sponsors this year. Vendors who wanted to be part of the event, but didn’t speak (they came after we had a full agenda already).

Voximplant is a CPaaS vendor with WebRTC technology – one you should follow closely if you aren’t already.

Jamm just came out of stealth, and wanted to do that as part of our event.

What you can find in this year’s Kranky Geek sessions

We started off planning the event with a lot of AI in mind. This is what we had last year, and the trend is obvious to follow this year as well. It will probably still be a trend 5 years from now.

When we actually looked at our agenda, we found a nice mix of WebRTC topics, covering things from WebRTC specifications and best practices, through customizing and modifying WebRTC in production to new use cases and AI.

It is good we did a dry run to all of our speakers, since I didn’t really have the time and attention to listen to them during the event itself. I learned a lot of new things about WebRTC from the dry runs we have and I am sure you will find some very interesting and useful sessions here as well.

All of the videos are already available on YouTube and I encourage you to both subscribe and watch our 2019 playlist:

See you next year?

Maybe.

We never really know if we will be having a next ever. This is part of the fact that we’re not professional event organizers. We do it because we enjoy it. We also rely on others to make this happen.

If you are interested in a Kranky Geek 2020, then do one of the following things (or all of them):

  1. Subscribe to this blog – I’ll be sending out an email at some point with the event’s date if we decide to do another one
  2. Subscribe to WebRTC Weekly – that’s who we email to about Kranky Geek events officially
  3. Contact me directly – especially if you’re interested in speaking or sponsoring a future event

The post Kranky Geek SF 2019 – post event summary appeared first on BlogGeek.me.

Pages

Subscribe to OpenTelecom.IT aggregator

Using the greatness of Parallax

Phosfluorescently utilize future-proof scenarios whereas timely leadership skills. Seamlessly administrate maintainable quality vectors whereas proactive mindshare.

Dramatically plagiarize visionary internal or "organic" sources via process-centric. Compellingly exploit worldwide communities for high standards in growth strategies.

Get free trial

Wow, this most certainly is a great a theme.

John Smith
Company name

Yet more available pages

Responsive grid

Donec sed odio dui. Nulla vitae elit libero, a pharetra augue. Nullam id dolor id nibh ultricies vehicula ut id elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.

More »

Typography

Donec sed odio dui. Nulla vitae elit libero, a pharetra augue. Nullam id dolor id nibh ultricies vehicula ut id elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.

More »

Startup Growth Lite is a free theme, contributed to the Drupal Community by More than Themes.