Summary Real-time communication over the internet is an amazing feat of modern engineering. The protocol that powers a majority of video calling platforms is WebRTC. In this episode Jeremy Lainé explains why he wrote a Python implementation of this protocol in the form of AIORTC. He also discusses how it works, how you can use it in your own projects, and what he has planned for the future. Preface Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great. When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so check out Linode. With 200 Gbit/s private networking, scalable shared block storage, node balancers, and a 40 Gbit/s public network, all controlled by a brand new API you’ve got everything you need to scale up. Go to pythonpodcast.com/linode to get a $20 credit and launch a new server in under a minute. And to keep track of how your team is progressing on building new features and squashing bugs, you need a project management system designed by software engineers, for software engineers. Clubhouse lets you craft a workflow that fits your style, including per-team tasks, cross-project epics, a large suite of pre-built integrations, and a simple API for crafting your own. Podcast.__init__ listeners get 2 months free on any plan by going to pythonpodcast.com/clubhouse today and signing up for a trial. Visit the site to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at @Podcast__init__ or email hosts@podcastinit.com) To help other people find the show please leave a review on iTunes, or Google Play Music, tell your friends and co-workers, and share it on social media. Join the community in the new Zulip chat workspace at pythonpodcast.com/chat Your host as usual is Tobias Macey and today I’m interviewing Jeremy Lainé about AIORTC, an asynchronous implementation of the WebRTC and ObjectRTC protocols in Python Interview Introductions How did you get introduced to Python? Can you start by explaining what the WebRTC and ObjectRTC protocols are? What are some of the main use cases for these protocols? What is AIORTC and what was your motivation for creating it? How does it compare to other implementations of the RTC protocols? Why do you think there haven’t been any other Python implementations? What are some of the benefits of having a Python implementation of the RTC protocol? How is AIORTC implemented? What have been some of the most difficult or challenging aspects of implementing a WebRTC compliant library? What are some of the most interesting or useful lessons that you have learned in the process? What is involved in building an application on top of AIORTC? What would be required to integrate AIORTC into an existing application built with something such as Flask or Django? What are some of the most interesting uses of AIORTC that you have seen? What are some of the projects that you would like to build with AIORTC? What are some cases where it would make more sense to use a different library or framework for your WebRTC projects? What are your plans for the future of AIORTC? Keep In Touch jlaine on GitHub Website @JeremyLaine on Twitter Picks Tobias Tengger Cavalry Jeremy PyAV Mike Boers Links AIORTC WebRTC Electrical Engineering [C](https://en.wikipedia.org/wiki/C_(programming_language)?utm_source=rss&utm_medium=rss C++ PHP Ruby STUN (Session Traversal Utilities for NAT) TURN (Traversal Using Relays around NAT) ICE (Internet Connectivity Establishment) TLS (Transport Layer Security) RTP (Real-time Transport Protocol) Zencastr Jitsi RawRTC AsyncIO AIOICE Cryptography Podcast.init Episode OpenCV PyAV FFMPEG Edge Detection Asterisk Raspberry Pi Datagram Transport Security Mozilla Augmented Reality The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA