Use native WebRTC APIs for VoIP and file transfer
Currently the multimedia layer is built in
libring and uses PJSIP. This allows maximal code sharing and unified behavior. But I am proposing a new approach: Use WebRTC APIs provided by the platform itself.
This has various advantages:
- WebRTC is a set of industrial standards.
- SDKs are well maintained by large organizations while PJSIP is maintained by a small team.
- APIs available on Android, iOS, UWP, Electron (native API provided by Chromium).
With WebRTC's built-in file transfer capabilities, bugs like ring-daemon#61 (closed) should be able to resolve.
Disclaimer: I am not familiar with Ring's architecture but I do have experience in writing WebRTC apps on Android. Judging by how PJSIP is used extensively in Ring (for NAT traversal and others), this idea might be a bit infeasible.