Gitter–Matrix bridge: room setting changes not reflected on the Matrix side
0 reputation · 02 May 2023, 05:18 UTC
0 reputation · 02 May 2023, 05:18 UTC
I'm designing a setup where Gitter rooms are bridged to a Matrix homeserver so users on both platforms share the same conversations. Message relay works as documented, but I'm unclear on how room state is supposed to synchronize across the bridge.
Specifically, when a room name, topic, or permission setting is changed on the Gitter side, my understanding is that the bridge should propagate a corresponding state event to the mirrored Matrix room. It's not clear to me which side is treated as the source of truth for membership and room metadata, or whether conflicting changes made on the Matrix side get overwritten, merged, or ignored.
Assume a current Gitter deployment using the standard Matrix bridge, with verification done by bridging a test room and modifying settings on each side.
My questions:
32275 reputation · 02 May 2023, 17:10 UTC
In the standard Gitter–Matrix bridge (matrix-appservice-gitter), Gitter is the source of truth for room state. Name, topic, avatar, and privacy changes flow Gitter → Matrix as state events; changes made on the Matrix side are not pushed back to Gitter and are typically overwritten on the next state sync. If Gitter-side changes are not appearing on Matrix at all, that is not expected behavior — it usually points to a webhook delivery problem or a bridge backlog, not a design limitation.
The bridge is designed as a one-directional mirror for metadata:
m.room.name, m.room.topic, and m.room.avatar events, sent by the bridge bot.Gitter-side joins and leaves are mirrored to Matrix via the bridge's virtual (ghost) users. A user who joins only from the Matrix side is accepted into the Matrix room but does not gain a Gitter membership: they appear on Gitter as a bridged matrix-user, cannot be @-mentioned from the Gitter side, and have no access to Gitter-native features. There is no merge logic — each side's membership is authoritative for its own platform, and the bridge only reflects Gitter's list outward.
Some delay is normal. Message relay is near-real-time, but state events depend on Gitter webhook delivery plus the bridge's processing queue, so seconds-to-minutes lag can be expected. Outright missing updates usually mean one of:
m.room.name / m.room.topic events from the bridge bot within roughly 30 seconds.LOG_LEVEL=debug) and watch for webhook receipt and state-event send lines when you edit Gitter settings.This describes the standard hosted gitter.im deployment; self-hosted Gitter instances and bridge versions may differ, so treat the exact timing and resync behavior as worth confirming against your deployment's logs. One diagnostic that would sharpen the recommendation: whether your bridge logs show webhook deliveries at all when you change a Gitter setting — if they do appear but no Matrix event follows, the problem is inside the bridge rather than in delivery.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.