Introducing Native Matrix VoIP with Element Call!
Hopefully in-person meet-ups will prove much easier in 2022 - but, there’s still a need for video calls, so let’s face it, they’re here to stay. This makes it really exciting to present Element Call: the world’s first decentralised voice and video conferencing app powered entirely by Matrix!
Yup, we’ve just launched our beta of Element Call, a brand new and incredibly simple web-based conferencing app. Element Call has been built from the outset to support a huge range of browsers: Safari, Chrome and Firefox on Android mobile, and Chrome, Firefox and Safari on desktop. Simply throw someone a link to a room on call.element.io and they’ll be catapulted into a video conference no matter what platform they’re on, without having to install an app!
What’s more, Element Call is built entirely on Matrix: it doesn’t need any additional servers to get going. You can run it against your existing Matrix homeserver to provide complete self-sovereignty… while still being able to talk to anyone else anywhere on the wider Matrix network! We will also be able to automatically use Matrix’s end-to-end encryption to secure all Element Call conferences - although we’ve disabled E2EE for the beginning of the beta to make it easier to diagnose any bug reports we get.
You can find our hosted version of it at call.element.io, so please head over and have a go! Alternatively, if you want to host it yourself, Element Call is an entirely free and open source software (Apache 2.0 License) which you can grab and get involved at https://github.com/vector-im/element-call - contributions are always welcome 😊.
We’d recommend creating an account to save your username and a history of your previously-accessed calls but, if you prefer not to register, you can create new calls or join existing ones by just setting a username. In the near future, we will support using the app with any homeserver, but we haven’t finished the registration and login flows yet, so for now it’s limited to the call.ems.host homeserver. We do not recommend pointing your regular account at Element Call yet, as you’ll just slow it down with lots of chatrooms that it doesn’t yet know how to handle.
So what can it do?
Of course, there are some limitations while in beta:
- E2EE not enabled while we’re still debugging beta bugs.
- Login/registration is not finished yet:
- Login limited to a single predefined server
- No password reset yet
- We’ll be switching to OIDC when ready
- You can’t join a call as the same user from multiple devices yet (this might be a feature; we haven’t figured it out yet).
- Not yet optimized - it uses a lot more CPU & bandwidth than it should.
- You can’t select your output audio device yet.
- There Will Be Bugs! Help us fix them by submitting feedback from the settings menu, or filing them at https://github.com/vector-im/element-call/issues.
- And finally… conferences are limited to ~8 participants - see below.
How does it work?
Element Call is the spearhead implementation of Native Matrix-based voice/video conferencing as defined in Matrix Spec Change proposal MSC3401. This is a step change in how VoIP works in Matrix - extending our historical 1:1 Matrix voip/video calling to support multiple participants, and massively speeding up call setup by switching transport. If you want to know what’s happening under the hood, go check out Matthew’s talk at CommCon 2021 on Extending Matrix’s E2EE Calls to multiparty for the gory details!
Limited participants - for now
The current implementation is full mesh, meaning that each participant effectively places a 1:1 call to every other participant in the conference. You can probably understand that this leads to performance issues when conferences get over a certain size. We’ve found around eight participants to be the absolute maximum for reliable call quality, but this could vary depending on your device and connection speed.
But not to worry, that limit is only temporary while we are in beta! Our next piece of work is to add Matrix compatibility to a selective forwarding unit (SFU). An SFU handles which video and audio streams need to be sent to each participant, and so allows for much larger calls without the same performance issues.
What’s next?
Element Call is a proof of concept of some really exciting technology, and we have loads more enhancements in the pipeline, including:
- Turning on end-to-end-encryption by default
- Supporting more than 8 participants by default
- More advanced moderation controls such as muting other participants, kicking users, or adding waiting rooms to meetings.
- Additional in-meeting features such as: reactions and being able to blur your video background or replace it with an image.
- Adding chat(!)
- Completely switching the login/registration implementation
- And, the big one *drum roll, please*... we will be integrating this into Element so you can have voice and video rooms, and hold group video calls inside the Element app natively over Matrix.
- You’ll still be able to embed Jitsi conferences in Element too - and Jitsi has served us well. However, we want Element to be entirely decentralised and to build on Matrix’s existing encryption, identity and access controls rather than requiring an entirely separate stack for conferences, so going forwards we’ll be focusing on native Matrix VoIP. If Jitsi Video Bridge ends up implementing MSC3401 and speaking Matrix natively we might end up supporting Jitsi as an SFU however - and the story will come full circle!
We’d love to hear from you about how you’ve used Element Call, what you like, any issues you’ve had, and features you’d like to see in the future!