Today, for the first time since the blink / webkit fork, the Apple and Google WebRTC teams are having a working session over lunch, facilitated and in presence of yours, truly, Dr Alex. How could that possibly happen? What does that mean for WebRTC? What’s next. Let’s look a little bit into all that.
I. How could that possibly happen?
Since the fork, the apple team has been trying to maintain the WebRTC APIs, but it was too much work for the remaining team, and WebRTC, the standard, went on to move fast, real fast. The webrtc-in-webkit project helped keeping the upper, generic part of webkit (JS API, JS-C++ bindings, webcore) in sync with the specifications, and to be able to test, implemented the lower, platform and library dependent version using OpenWebRTC. Finally, the linux port of webkit based on GTK added the parts that are only in the browser UI: capturers and renderers.
In the mean time, the Safari team was kindly and quickly reviewing all the patches, making it a faster process than most of the contributions in webkit. Some interns were put to work on GUM, and finally Youenn Fablet was hired with the mission to implement webRTC 1.0. A few months in, around January 2017, the first commits started to appear, and we started to review them, port them back upstream and globally participate to the effort to the (limited) extend an external contributor can. A year later, the first job is done, and the project is now disclosed. Apple can now speak about it and take it to the next level.
It is of paramount importance for google that WebRTC be adopted and successful. They have been trying to onboard all other browser vendors, and especially Apple for quite some time now. Moreover, the mac version of webrtc (capturers and renderers mainly) have not reached the level of polished of the other versions. CoSMo’s team has been helping google for some time now. From volunteering the missing code for iOS video rendering and JSEP implementation back in 2013, to some more work under contracts nowadays including but not limited to finishing the WebRTC 1.0 test suite and specification so it can become a standard.
We know it takes more than contribution and knowledge to make things happen. Ever since we wrote the first full, free open-source plugin for WebRTC, we have pledged to make it useless, and to contribute to make WebRTC great, and easier to use, for all.
For some time now we have somehow mediated the discussion between Google and Apple, until we received signals from both parties that a direct discussion was possible, and made it happen.
(*) As a side note, screen sharing is not part of the getusermedia specification, nor is it part of the webrtc 1.0 specification. It has its own draft, and it is lagging behind in terms of standard process.
II. What does that mean for WebRTC?
Moving forward, that means that all the browser vendors are at the table to make WebRTC move forward. Apple presence in the WebRTC WG at W3C had been discrete so far.
It also means that most of the browsers (I can’t really speak about Edge at this point), are now depending on libwebrtc for their implementation, and are collaborating directly to make it better., together. While Mozilla was already helping a lot, Apple will also bring some pieces that will make Firefox and Chrome better on iOS and MacOS (when they exist, no firefox on iOS for example), by providing Apple environment expertise. This is especially important for capturer, renderer, hardware acceleration support, battery life, basically everything that touches on the Hardware, but also things like webrtc <-> web audio integration.
Globally what that really means for all of us, WebRTC developers is: a global unique WebRTC engine, unified open source code base, aligned browser vendors, working together to provide a better experience across. Only good news.
III. What’s next?
First, the meeting happened at Google Head Quarters in mountain view. I can already read the titles of some blog posts (and UK tabloids): Apple surrendering to Google and paying respect by a visit to the Headquarter. Nothing could be more wrong (as usually with some blog posts and UK tabloids 😀 ). This was a working session, where everybody came to the table with problems to solves and questions for the others. The reason it was done at Google and Not at apple was very very pragmatic: food is free at google, it s not at apple.
The main points of discussion have been already discussed in the previous chapter: from google point of view: how to bring chrome on mac in par with chrome on windows with respect to capturers, renderers, and interactions with the OS. From Apple the questions where more related toward the design of the libwebrtc media engine (especially audio), and some design questions moving forward. From CoSMo, the questions were more focussed on high-quality stereo audio, the Audio Processing Module, System Audio Capture on general, and on Mac specifically (remove the need for soundflower) and testing automation.
What’s next?
At CoSMo, we are very happy to have been capable of bridging the gap. As an Individual, and representing CoSMo and webrtc-in-webkit, I can already say that we will not stop trying to make a difference. Only 50% of webrtc 1.0 is implemented today, it’s barely tested, the encryption is not end-to-end as soon as you use a media server, and there is ORTC / webrtc NV coming which could bring a lot of Great new things.
In august, the discussions between some browsers vendors about testing should start.
The first week of October, most of the webkit hackers will go to Spain for a 4 days long Web Engine Hackfest. The WebRTC team should focus on re-aligning the different WebRTC implementation in webkit. Given the status of the open webrtc project, the relevance of keeping it around in webkit will be discussed, and will depend on having someone with the capacity willing to handle the support and the maintenance.
Wether you’re a good coder or not, you can contribute your part. libwebrtc is open source, chrome / mozilla / webkit are open source, the Google Summer of Code has great WebRTC projects (including jitsi), one has a lot of opportunity to hack and learn. Also remember that it takes more than being a great contributor to be a great leader. Stay positive, help people, don’t mock them, don’t make them afraid and help making things happen for all.
(*) If you want to make an even bigger difference, join us at CoSMo, we’re hiring 😀