Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VoIP call support via webrtc-rs #3295

Open
DemiMarie opened this issue Apr 3, 2024 · 5 comments
Open

VoIP call support via webrtc-rs #3295

DemiMarie opened this issue Apr 3, 2024 · 5 comments

Comments

@DemiMarie
Copy link

Implementing VoIP calls in downstream projects is not simple. Web clients can and must use the native browser implementation, but desktop and mobile clients don’t have that option, so e.g. Fractal doesn’t support calls at all. matrix-rust-sdk could provide helpers that make it easy to support calls in desktop and mobile clients.

@Hywan
Copy link
Member

Hywan commented Apr 18, 2024

Hello @DemiMarie and thank you for your suggestion. What kind of helpers do you imagine? There is this matrix_sdk::widget API that is used to set up VoIP (at least it's used by Element X for Element Call). Do you expect more (maybe a better documentation… 🙄)?

@DemiMarie
Copy link
Author

@Hywan I’m imagining an implementation of one-to-one calls that doesn’t rely on an embedded browser engine. Secure end-to-end encryption requires that all servers be treated as untrusted, which means that relying on a webview that loads JavaScript from Element’s servers isn’t an option.

@DemiMarie
Copy link
Author

@Hywan To be specific, I would like matrix-rust-sdk to integrate with https://github.com/webrtc-rs/webrtc, which provides a memory-safe WebRTC implementation that doesn’t rely on a web browser.

@DemiMarie DemiMarie changed the title VoIP call support VoIP call support via webrtc-rs May 13, 2024
@Hywan
Copy link
Member

Hywan commented May 15, 2024

@manuroe what do you think about this suggestion?

@DemiMarie
Copy link
Author

To elaborate: Windows, macOS, iOS, and Android have a system-provided webview, but desktop Linux and embedded systems do not. Embedded devices, obviously, have no webview unless they bring their own. Desktop Linux has WebKitGTK+ and Qt WebEngine, but these are tied to specific UI frameworks, and not every desktop Linux program uses GTK or Qt. Qt WebEngine also has a rather long patch gap compared to upstream Chromium.

WebRTC is also a large C++ library that has had remote code execution vulnerabilities in the past. Signal’s mobile apps disable some especially risky functionality, but I’m not sure if this can be done in a web environment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants