What are the WebRTC open source media servers in 2024, and which ones are the best, based on github stars.
This one is one of those sensitive articles which many people later complain about. So I’ll start it with a few disclaimers:
- Different tools are suitable for different use cases. This means that a WebRTC media server here that is low on the popularity list might be the best fit for your requirements
- It was enjoyable to look it up, so I just had to write this down
- I love you all – I truly do. Please don’t be mad at me
- That said, I am expecting a sarcastic enough meme by Iñaki. One that I can proudly add to this article – just below this bullet 😉
Table of contents
The WebRTC open source ecosystem
WebRTC is free. At least the part of it being an open standard with a commercial grade open source implementation that is available and embedded across all modern browsers.
This has garnered a nice developer ecosystem around it, part of which is open source in its nature. A simple search for “webrtc” on github returns over 32k results.
There are a lot of different avenues to WebRTC projects on github. The main ones that come to the top of my head include:
- Media servers
- Signaling servers and frameworks
- WebRTC implementations in different languages
- Samples and experiments
- Applications written on top of WebRTC
For this specific article, I want to focus on media servers.
My “top 4” WebRTC open source media servers
There are quite a few WebRTC media servers, many of which are open source. That said, most aren’t widely known or got to the point of being interesting enough for me to take notice (I usually take notice when someone tells me he is using it for something that goes to commercial use).
Throughout the years, the list of the popular WebRTC media servers hasn’t changed that much. I’ve been using this diagram for two years now, and it probably still holds true:
Due to this, my “top 4” is simply the WebRTC open source media servers above that are still relevant. And to make sure people don’t bash me on minor issues, I’ll be presenting my these in their dictionary order: Janus, Jitsi, mediasoup and Pion
Using github for our WebRTC popularity contest
How do you even begin deciding which WebRTC open source media server project is the most commonly used out there?
One approach is to count the stars. Github starts. Luckily, all the projects I was interested in have github repos. Philipp Hancke directed me to GitHub Star History, which after a bit of fooling around with, got me this nice initial chart:
Based on people who placed a star on these github projects, we can see that mediasoup is chugging along, last in the packet. It is followed by Janus. Then there’s Pion and Jitsi Meet is ahead of the pack.
Each of these projects started at a different point in time. Pion was last to the party, which means the other projects had a headstart on it. Aligning them all on the point in time they were added to github, produces this chart:
Initial immediate thoughts here?
- mediasoup is the slowest growing media server
- Janus is growing at a steady, albeit slow pace
- Jitsi changed its trajectory during the pandemic and growing faster ever since
- Pion is the fastest growing project here, keeping at Jitsi’s recent pace to stardom
Let’s do a quick deep dive into each one of these.
Janus is one of the oldest WebRTC media servers. It is written in C, which might be the reason for its limited adoption – most developers these days won’t know how to write a hello world application in C – let alone figure out its memory use concepts (where you have to explicitly free what you allocate).
What Janus has going for it is a company. Meetecho, the maintainer of Janus, offers paid support and development services around Janus. Something other open source WebRTC media servers lack.
The trajectory of Janus is unlikely to change. It is versatile, has a community around it and support services.
Jitsi Meet is likely the oldest of WebRTC media servers. Started by Bluejimp, who were acquired by Atlassian and then 8×8.
While Jitsi doesn’t offer any direct support and development services for Jitsi, it does offer JaaS – a managed Jitsi service for developers.
Jitsi is written in Java and has a React UI implementation.
One reason for its meteoric rise is the pandemic. Jitsi is the only open source solution that came fully built and optimized for group calls. From the get go, their mission was to build an open source Google Hangouts (that’s Google Meet today). And they succeeded.
By narrowing their applicability to a specific use case, they opened up their viability as a solution to a larger target audience – way beyond that of developers building applications.
This unfair advantage places them here as a top dog. This doesn’t mean that they are suitable for everyone – quite the opposite. They are suitable for those building Google Meet-like experiences. For things that are beyond this use case, shop around the other media servers first. But for a Google Meet-like service? Start from Jitsi Meet.
Mediasoup is an open source WebRTC media server exposed as Node.js and Rust libraries. It is designed for high performance, with the unique concept of having the application built right inside the same Node.js or Rust process.
The challenge with mediasoup is its inability to offer official support and development services. Here, the reason is simple – the main creators and contributors work as developers at Miro today.
This challenge is probably what led to the slow growth of mediasoup in the github popularity contest.
That said, if you go and look at many large scale group calling deployments, they use mediasoup…
Pion is last to the scene, but fast growing compared to the others. There are 3 reasons why:
- Pion is written in Go language. For some reason, Go has its fandom of developers who love the language. This makes Pion their Go-to (pun intended) open source project
- Pion is general purpose. It is used to build both clients and servers. There are multiple media server implementations written on top of Pion, but in general, the fact that you can build more with it garners immediately more stars to the project
- Sean DuBois. The person who started Pion has a huge and infectious personality that helped push Pion forward. Other open source projects have their own unique personas, but whoever had the chance to speak with Sean directly will understand what I am saying here
As Pion’s popularity grows, so are the number of commercial services cropping up that use Pion.
The best WebRTC open source media server
For managers, my suggestion is almost always to let their developers experiment and pick and choose the open source WebRTC media server that they see fit. There are differences across these alternatives, but at the end of the day, if anyone tries to force a developer to use something he doesn’t think is the right solution – said developer will make sure to explain to the one forcing him why the decision made is the wrong one. In other words, you don’t want to go against your developers.
For developers, I find myself suggesting different media servers depending on their use case, requirements and even company DNA.
So in short, there’s no best WebRTC open source media server. There are several alternatives that are great – you just need to pick the one that is best for you 😀