element-hq / element-hq/element-call
Converge source of truth for call participants (livekit -> member events)
- Dominant language
- TypeScript
- Stars
- 996
- Forks
- 213
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 54
Description
### Your use case
### Current situation
Currently we use the livekit participants to decide who should be shown in the call.
Another idea is to use the call member events as the source of truth.
Affected parts:
- switch sfu: we would not need a timeout but just always show tiles for member events and just adjust the source for the stream which is shown whenever there is a membership change (sfu change)
- the participant list icon would always be in sync with the tiles
- We will get issues with disconnected users that have failed to remove there state event
- **Follow up discussion:** Is there a better way to solve the "heardbeat" topic. Currently we use `expires_ts` but maybe a seperate system would be better for matrixRTC. A method to inform everyone about beeing alive in a frequence closer to 10 seconds than 1 hour (what we have now with the `expires_ts`). Maybe we can learn/copy from read receipts.
### Have you considered any alternatives?
_No response_
### Additional context
_No response_
Contributor guide
Research direction
Start by tracing where LiveKit participants and call member events determine call tiles and the participant-list icon, including the switch-SFU path. Clarify whether the change also includes handling disconnected users and replacing or revisiting expires_ts heartbeat behavior; done should define one consistent source of truth and resolve the stated membership-change and heartbeat cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- audio-video-rtc, frontend
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100