This post is part of a series on the Five Tenets of a Modern, Multi-Modal, Real-Time Communications Application.
In this first post on the Five Tenets of RTC Apps, I want to talk about Adaptability. In short, Adaptability is the quality of adapting the communications to the device and capabilities available. In the image on the right, you can see several users engaged in a five-way conversation with each other. Each comes from a different device: two are in a web browser (Google Chrome and Mozilla Firefox), one is joined via an iPad, another via an Android smartphone, and one poor user connected via an ancient-looking telephone. The key here is that all are able to participate in the conversation. While the capabilities differ, the RTC app adapts to provide as many features as it can given the capabilities of the device.
Perhaps the most capable device in the example is the desktop browser. Thanks to WebRTC, browser users can enjoy HD video and amazing quality audio, as well as the ability to chat using text, share links and files, or even show remote users a desktop.
The user on the tablet has largely the same experience. He’s connected via Wifi and can watch the video as well as send text messages and follow links and receive files. However, he’s probably not able to share his screen, since the limitations of that device would make meaningful screen-sharing impossible.
The user on the mobile device may be in an area with limited data coverage, so video has been turned off. However, she can still see the text and links being sent back and forth, and of course she can participate via an audio connection (whether that audio is via cellular data or regular telephone is not important; a good RTC app should be able to handle both gracefully).
Finally, we have the poor user on the standard telephone. It’s true that his experience is quite limited: he gets no video, no text conversation, no ability to follow links or receive files. However, he is able to take part in the audio conversation, and when that’s all you’ve got, that can be enough to get the job done.
A fundamental truth of technology is that it is always evolving. As application designers, we can’t make devices do things they weren’t designed to do, but we can enable them to still participate. When those devices give us richer tools, we can and must extend the application to take advantage of them.