It would be good to evaluate the reliability of sharing the same channel across Matrix (a good candidate for a movement-wide real-time chat tool) and Discord (a real-time chat tool that's popular in the younger generation). This came up in the context of bridging Hungarian Wikipedia's Matrix and Discord rooms but there are several potential other applications.
There's one mature bridge, `matrix-appservice-discord`; see its [[https://matrix.org/docs/projects/bridge/matrix-appservice-discord|project page]] for a short list of features and its [[https://github.com/Half-Shot/matrix-appservice-discord#features-and-roadmap|github page]] for a marginally longer one.
(There's also [[https://github.com/matrix-discord/mx-puppet-discord|mx-puppet-discord]] but that's a puppeting-based bridge so it's not really useful; see //Using people's established Discord identities// below.)
----
== Things that work well
* Setup. Invite the bot ([[https://t2bot.io/|t2bot.io]] or self-hosted) on both sides, command `!discord bridge <serverid> <channelid>` in Matrix, command `!matrix approve` in Discord within 5 minutes (needs admin accounts).
* Syncing message content between the two channels. Initially a little slow but seemed to improve over time. Hyperlinks, most formatting, images work fine. Message editing and deletion work as well as they can be expected to (Discord's implementation is not great;also works; see also will never work section)message editing in Matrix is transferred to Discord well.
* Faking identities. Both sides allow the bot to use an arbitratry nick and avatar, so it copies those from the message it's syncing. On the Matrix side it will create an account for each Discord user; on the Discord side it seems to reuse the same account and constantly change nicks and avatars (which Discord doesn't retroactively apply to the messages - this seems somwthat fragile, but works well at the moment).
* Replies in Discord turn into proper replies in Matrix.
* @-mentions (of Matrix or Discord users) posted in Matrix look as expected in Discord. @-mentions of Discord users posted in Discord also result in proper mentions in Matrix.
* References to another Matrix channel in Matrix show up as matrix.to links in Discord, which I suppose is the most that can be done in that situation.
* Stickers posted in Matrix are displayed properly as images in Discord.
== Things that don't work well
* Quote formatting in Matrix (`>`) for some reason results in plaintext no-linebreak text in Discord. ([[https://github.com/Half-Shot/matrix-appservice-discord/issues/659|#659]])
* Reacjis don't travel either way. ([[https://github.com/Half-Shot/matrix-appservice-discord/issues/759|#759]])
* Using people's established Matrix identities (ie. being able to prove to the bot that you own a given Discord account and a given Matrix account, and then it would post using your Matrix account instead of the bot's own) - I think this is possible in theory but not supported. This also means direct messages don't work.
* Replies in Matrix are shown in Discord as quoting the text of the parent message - but there's no link to that message. ([[https://github.com/Half-Shot/matrix-appservice-discord/issues/693|#693]])
* Message editing in Matrix is synced in a weird way: it if's the last message in the channel, it will be updated but there will be no `(edited)` notice. If it's no the last message, the bridge bot just reposts the edited version of the message with a link to the original, which changes a barely noticeable Matrix action into a highly disruptive one on the Discord side. Not sure if that's a bot API limitation or just a missing feature.
* Presence sync from Discord to Matrix only includes users once they have posted something. Discord only has server-level presence, so maybe in some cases this is a useful limitation; but in others it isn't. ([[https://github.com/Half-Shot/matrix-appservice-discord/issues/761|#761]])
* Gifs posted in Discord are displayed in Matrix as links to the gif sharing sites they are sourced from. Link preview is not necessarily useful either. ([[https://github.com/Half-Shot/matrix-appservice-discord/issues/762|#762]])
* Discord threads are entirely hidden in Matrix. ([[https://github.com/Half-Shot/matrix-appservice-discord/issues/722|#722]])
* Matrix threads are shown as main channel messages in Discord, with no indication of being in response to something. (FWIW, Matrix threads are still in beta and display similarly poorly in most Matrix clients as well.)
* References to another Discord channel in Discord show up as broken Matrix links in Matrix. ([[https://github.com/Half-Shot/matrix-appservice-discord/issues/763|#763]])
== Things that will probably never work
* Using people's established Discord identities: Discord does not provide an API for this. The bot can use your Discord credentials to login as you ([[https://github.com/Half-Shot/matrix-appservice-discord/blob/develop/docs/puppeting.md|docs]]) but that's a non-starter, both from a security POV, and because it's forbidden by Discord's ToS and they do ban people for it.
* AFAICS Discord does not allow message editing, unless it is the last message of the channel (in which case it's changed with no indication of editing whatsoever). Instead the bridge bot (or Discord?) just reposts the edited version of the message with a link to the original, which is probably the least bad way of representing it; but that changes a barely noticeable Matrix action into a highly disruptive one on the Discord side.
* Matrix users cannot be @-mentioned in Discord AFAICT. The bot seems to use a single Discord account and change its nick before posting (and then revert it), there are no separate accounts for Matrix users that could be pinged. ([[https://github.com/Half-Shot/matrix-appservice-discord/issues/760|#760]])
* For the same reason, presence is not synced from Matrix to Discord.
== Things that weren't tested
* Moderation
* Other admin level stuff (pinning etc.)
== tl;dr
There are several deal-breakers IMO: direct messages don't work, @-mentions of Matrix users in Discord don't work. Depending on channel culture, reacjis might be a big problem too. Also threads once they are out of beta in Matrix. Bridging seems too disruptive to be worth it.
Reacjis are probably easy to fix; @-mentions might be fixable although not cleanly as Discord does not let the bot create new identities per nick. DMs are not fixable unless Discord starts supporting proper account puppeting. The thread implementations are quite different (plus Discord is auto-archiving threads after a time limit as a monetization attempt) so that's also unlikely to get fixed, I think.
Also the repo seems not actively maintained (cf. [[https://github.com/Half-Shot/matrix-appservice-discord/issues/443|#443]] and [[https://github.com/Half-Shot/matrix-appservice-discord/issues/716|#716]]).