WebRTC means many things to many people. One of these things is the C++ library that is used to implement the WebRTC functionality such as audio, video and data channels in the Chrome browser.
The library is a complex beast with more than a million lines of code and a history dating back to 2004. It implements a wide range of network protocols and audio/video codecs.
The interaction between WebRTC and Chrome is heavily influencing the how features are developed, reviewed and shipped to millions of users.
In order to successfully contribute one has to understand both the tooling as well as the review process and how changes get into Chrome eventually.
I am going to explain that process using two examples:
- a trivial logging change
- a feature to enable audio redundancy
The logging change, while trivial, is a great example of the mechanics how a change gets uploaded, reviewed and shipped.
Audio redundancy is a complex feature that attempts to solve a very hard problem, audio quality. Getting that feature considered even required data about the efficiency.
The implementation turned out to be relatively complex, involving ten different changes in total.
While implemented in the WebRTC library, it has not yet been shipped enabled by default in Chrome since evaluating and tuning the implementation at scale in the real world is difficult.
Contributing back to the WebRTC library may be difficult, it is possible and contributions are welcomed. We just need more of them!