I am asked all the time what the most popular WebRTC projects are. I tried to address this question a few years ago in Data Nerding with WebRTC GitHub Data where I used the GitHub dataset on BigQuery to filter out WebRTC repos. Once you have this dataset it is easy to look for patterns over time. This time around I gave a lot more focus on popularity to suss out what the WebRTC community is both coding and using.
Methodology
Let’s briefly discuss how this is put together so you have some context when considering the results. My methodology this time was similar to what I did in 2015 from the, with some refinements. Some of my actual SQL is in this repo if you want to reference that.
Finding “WebRTC” Repos
BigQuery keeps a GH archive dataset that tracks all GitHub events going back years. To identify a “WebRTC repo” I look for keywords in the repo name and event payload. This time around I looked for the following:
Category | Keyword(s) |
keywordWebrtc | webrtc |
keywordGum | getusermedia |
keywordStunTurn | stun server, turn server |
keywordPc | peerconnection |
keyworkdPcExt | Rtpsender, rtpreceiver, rtptransceiver, rtcdtlstransport, icetransport, rtctrackevent |
I checked these keywords against a different GitHub dataset in Big Query – the GitHub Activity Dataset which contains all of GitHub’s public repo code contents. I found 68,057 repos that contained one of the terms above. GitHub has close to 30 Million public repos, so this represents about 0.23% of that.
You can see the breakout by keyword category in the chart below:
My methodology requires a timeline which is only available in the GH Archive dataset but this dataset does not contain a historical snapshot of the code contents of each repo (which would be massive). To be counted in my methodology, the keyword needs to show up once for that repo within whatever period I was tracking – monthly or for 2019 to-date in my reports below. It is a lot easier for repos that have a keyword in their name to show up, but the keywords show up plenty of times in commit names and comments. It seems unlikely that someone would be using a lot of WebRTC code and would not mention the keywords often.
It’s on my to do list to see if there is a better way of linking these 2 datasets to include better code content analysis.
Segmenting Event types
I wanted to identify repos that have many active contributors working with actual code and those who showed popularity metrics. To filter for these classes, I made 2 major sub-event categories:
- Code events – was there someone actually working with the code? I look for a git PushEvent , PullRequest , or PullRequestReviewComment
- Popularity events – does the repo have a lot of non-coding engagement? I look for git ForkEvent , WatchEvent , IssuesEvent , and IssueCommentEvent event types
Aggregation
As you’ll see in the results, I do not rely heavily on the overall count of results – I care more about the distinct number of individual developers with activity in a given repo. This methodology also gives more weight to repos that have regular activity from many users.
Results
What are the most popular repos?
To start, I wanted to see the most popular repos by distinct individual gitHub userId in 2019 to date (through mid-September). See the comments section right after the datatable for some descriptions of some of these.
Distinct users per repo with with a code contribution
Rank | repoName | users |
1 | pion/webrtc | 53 |
2 | meetecho/janus-gateway | 51 |
3 | web-platform-tests/wpt | 30 |
4 | w3c/webrtc-pc | 21 |
5 | open-webrtc-toolkit/owt-server | 19 |
6 | webrtc/samples | 18 |
7 | react-native-webrtc/react-native-webrtc | 16 |
7 | electron/electron | 16 |
7 | open-webrtc-toolkit/owt-client-javascript | 16 |
8 | w3c/mediacapture-main | 15 |
8 | feross/simple-peer | 15 |
9 | webrtcHacks/adapter | 14 |
9 | coturn/coturn | 14 |
10 | react-native-webrtc/react-native-callkeep | 13 |
10 | centricular/gstwebrtc-demos | 13 |
10 | ethereum/eth2.0-specs | 13 |
10 | webrtc-uwp/webrtc-windows | 13 |
10 | RocketChat/Rocket.Chat | 13 |
11 | w3c/webrtc-stats | 12 |
12 | nextcloud/spreed | 11 |
12 | cloudwebrtc/flutter-webrtc | 11 |
12 | blackuy/react-native-twilio-video-webrtc | 11 |
There were 11 repos that had 10 contributors right after this.
Distinct users per repo with a popularity event
Rank | repoName | users |
1 | pion/webrtc | 1747 |
2 | webrtc/samples | 1746 |
3 | muaz-khan/WebRTC-Experiment | 1370 |
4 | webrtc/apprtc | 637 |
5 | cloudwebrtc/flutter-webrtc | 501 |
6 | react-native-webrtc/react-native-webrtc | 371 |
7 | webrtcHacks/adapter | 339 |
8 | node-webrtc/node-webrtc | 327 |
9 | meetecho/janus-gateway | 320 |
10 | ddssingsong/webrtc_android | 310 |
11 | mpromonet/webrtc-streamer | 286 |
12 | oney/react-native-webrtc | 282 |
13 | wiseman/py-webrtcvad | 281 |
14 | open-webrtc-toolkit/owt-server | 281 |
15 | coturn/coturn | 274 |
16 | starrtc/starrtc-android-demo | 269 |
17 | muaz-khan/RecordRTC | 234 |
18 | diafygi/webrtc-ips | 233 |
19 | muaz-khan/RTCMultiConnection | 220 |
20 | andyet/SimpleWebRTC | 210 |
21 | webrtc/adapter | 209 |
22 | cloudwebrtc/flutter-webrtc-demo | 203 |
23 | centricular/gstwebrtc-demos | 191 |
24 | xiangyuecn/Recorder | 191 |
25 | stasel/WebRTC-iOS | 178 |
Most popular repo comments
There are a lot of repos here, but several of them show up repeatedly. I include the top 10 across these two measures with some brief comments below. To get the measure, I took the inverse rank (i.e. the top repo gets the highest number) for each list, added them together, and sorted descending.
Repo | Comments |
pion/webrtc | Go-based full stack WebRTC project – the project’s popularity is pretty remarkable considering the repo only started in May 2018. |
webrtc/samples | The official WebRTC samples directory which is intended to be the first place WebRTC developers go as a reference |
meetecho/janus-gateway | It looks like Janus wins the WebRTC SFU popularity race, though it should be noted Janus does more than act as a SFU which may have helped it rank highly |
react-native-webrtc/react-native-webrtc | React is one of the most popular frameworks thanks to its native extensions that let web developers build hybrid apps. |
open-webrtc-toolkit/owt-server | Intel has had an Open Source WebRTC toolkit include a media server that can leverage hardware acceleration for media processing and computer vision |
webrtcHacks/adapter | The de facto browser polyfill maintained by webrtcHacks’ own Fippo is still a staple for WebRTC browser interop |
cloudwebrtc/flutter-webrtc | Flutter is a another hybrid development framework from Google – this repo adds WebRTC to iOS and Android Flutter apps |
coturn/coturn | TURN is a critical component to any real WebRTC deployment so it should be no surprise to see this long-standing project in this list |
centricular/gstwebrtc-demos | gStreamer is a very widely used media streaming project – this repo demonstrates gStreamer WebRTC implementation |
feross/simple-peer | Simple Peer was among the web-developer oriented frameworks to make using WebRTC easy and is the leader here in my methodology |
pions switched its name to pion in April 2019. To prevent double counting I went back and counted distinct users in both pions/webrtc and pion/webrtc .
What are the most popular orgs?
The above analysis looks at individual repos, but some GitHub organizations house many dozens of repos, often times part of the same project just because of the way the org decided to structure their code. Maybe a relatively low average usage per repo is masking a very commonly used project at the organization level, so let’s look at that.
Distinct users per org
Rank | Row Labels | all |
1 | webrtc | 2517 |
2 | pion | 1811 |
3 | react-native-webrtc | 540 |
4 | open-webrtc-toolkit | 427 |
5 | starrtc | 420 |
6 | webrtcHacks | 416 |
7 | node-webrtc | 354 |
8 | meetecho | 335 |
9 | coturn | 321 |
10 | andyet | 238 |
11 | microsoft | 234 |
12 | jitsi | 212 |
13 | w3c | 199 |
14 | centricular | 191 |
15 | webrtc-uwp | 181 |
16 | AdguardTeam | 171 |
17 | googlecodelabs | 163 |
18 | RTC-Developer | 149 |
19 | blackuy | 147 |
20 | ant-media | 142 |
Distinct users per org with with a code contribution
Let’s filter that to just look at the people who are actively involved in coding.
Rank | Org | users |
1 | pion | 58 |
2 | meetecho | 51 |
3 | w3c | 46 |
4 | react-native-webrtc | 35 |
5 | webrtc | 33 |
6 | web-platform-tests | 30 |
6 | mozilla | 30 |
8 | open-webrtc-toolkit | 28 |
9 | microsoft | 25 |
10 | jitsi | 21 |
10 | ethereum | 21 |
11 | libp2p | 20 |
12 | twilio | 19 |
13 | webrtcHacks | 18 |
13 | wireapp | 18 |
13 | Azure | 18 |
Org Comments
Like before, let’s look at the top 10 across these two lists that have not been mentioned above.
Org | Comments |
w3c | This repo has all the official reference implementations and examples for various W3C WebRTC Working Group specs – a good place to go to see what the spec says, just keep in mind individual WebRTC implementations will vary |
microsoft | Microsoft is a big company that has moved to opening sourcing many of its projects, including WebRTC. This org contains 16 repos with WebRTC terms including several for MixReality, Unity, and their WebRTC for Universal Windows Platform samples |
starrtc | This project out of China provides WebRTC server with Android, iOS, Windows, and Web clients and many examples and demos. This seems to be oriented at a Chinese audience but they do have English docs too |
jitsi | Surprisingly we did not see this Selective Forwarding Unit (SFU) – based project and frequent webrtcHacks contributor earlier. This project contains 20 active repos in 2019 with the Jitsi Video Bridge and Jitsi Meet being the most popular. |
node-webrtc | This project provides the Chromium WebRTC stack in node.js for server-side and native Linux, macOS, and Windows applications. It also includes Electron support. |
mozilla | No surprises that Mozilla is in this list with 42 repos with some activity so far in 2019 |
web-platform-tests | Another W3C project, this org provides a cross-browser test suite. Go to wpt.fyi to see how Chrome, Edge, Firefox, and Safari do against various WebRTC test specs (and all other Web API’s) |
andyet | Andyet is the team behind SimpleWebRTC. The open source repo is actually deprecated but has many watchers and forks. |
ethereum | Ethereum is a programmable blockchain platform that supports WebRTC as one if its transports. The “new decentralized Internet” talk reminds of me of Pied Piper. All jokes aside, it is great to see a popular dataChannel application like this. |
libp2p | Libp2p.io is a peer-to-peer networking framework with implementations for JavaScript, node.js, and Go |
webrtc-uwp | This is Microsoft’s org for its WebRTC for Universal Windows Platform |
How Popular is WebRTC?
We looked at what’s popular within WebRTC, but how is WebRTC doing overall? To figure this out I counted active users per month across all of GitHub to compare this against the WebRTC user set. WebRTC is a small subset of all GitHub repos so the scales are different but you can see the growth trend. To smooth out seasonal averages (i.e. dips in the summer) and random changes I made a 6 month moving average.
You can see below that both graphs are up and to the right. There appears to be a slight slowing in WebRTC’s growth vs. GitHub overall in 2018 but WebRTC is clearly growing faster in 2019 than GitHub overall. New WebRTC projects like pion are certainly helping here.
I also did the same analysis looking at just users with code events in a given month. This also shows a relative decline in WebRTC activity from 2017 to 2018 with a resurgence in 2019 to-date.
What did we learn today?
The data shows WebRTC is alive and well. There are some leader changes since my last analysis in 2015, but it is encouraging to see many new projects rapidly gain prominence. WebRTC is far from becoming stale. Looking at the overall GitHub stats, WebRTC seems to be engrained in the technosphere.. Perhaps it will even find new growth as efforts like WebRTC-QUIC mature.
Remember there are a lot of projects. I was only able to highlight a few, my cut-off points are somewhat arbitrary, and this is only one snapshot in time, so definitely do not treat what you see in this post as all there is. I hope to see your name as one of WebRTC’s top open source contributors next time 🙂
{“author”: “chad hart“}
Leave a Reply