Modern XMPP project discussion - 2026-02-22


  1. Douglas Terabyte

    MattJ understandable, I am trying to get the devs here preferably

  2. Douglas Terabyte

    Kris: i will forward this to them

  3. svp

    > For those that don't have the context, Spacebar is a free, open source, and self-hostable software that is being written to attempt to 1:1 reverse engineering of Discord's protocol and API. Please consider joining and assisting in development. I am currently trying to assist the main dev set up a Prosody server so that the main Spacebar server can be eventually be peered with the XMPP network. Here is the Discord server link where we are currently holding the group voice call. > https://discord.gg/xmfAepRKzP just curious, how much is this work shared between other private reverse engineered servers like hummus'?

  4. stratself

    > I got the Spacebar main dev to agree to host their oen XMPP server on their domain thats huge

  5. Douglas Terabyte

    >> For those that don't have the context, Spacebar is a free, open source, and self-hostable software that is being written to attempt to 1:1 reverse engineering of Discord's protocol and API. Please consider joining and assisting in development. I am currently trying to assist the main dev set up a Prosody server so that the main Spacebar server can be eventually be peered with the XMPP network. Here is the Discord server link where we are currently holding the group voice call. >> https://discord.gg/xmfAepRKzP > > just curious, how much is this work shared between other private reverse engineered servers like hummus'? I do not know what 'hummus' is, cal you elaborate, svp ? As far as I know, Spacebar is the only project I know of trying a 1:1 reverse engineer of Discord. If there are others I am unaware of, please let me know and I will try and connect them all together.

  6. Douglas Terabyte

    >> I got the Spacebar main dev to agree to host their oen XMPP server on their domain > > thats huge Task failed successfully... Main devs website went down trying to get Prosody set up with a reverse proxy and gave up for now. XMPP documentation for setting up servers NEEDS to be more accessable.

  7. Douglas Terabyte

    And correct

  8. Douglas Terabyte

    Nginx config broke on the XEP page

  9. Douglas Terabyte

    Who maintains that?

  10. svp

    > >> For those that don't have the context, Spacebar is a free, open source, and self-hostable software that is being written to attempt to 1:1 reverse engineering of Discord's protocol and API. Please consider joining and assisting in development. I am currently trying to assist the main dev set up a Prosody server so that the main Spacebar server can be eventually be peered with the XMPP network. Here is the Discord server link where we are currently holding the group voice call. > >> https://discord.gg/xmfAepRKzP > > > > just curious, how much is this work shared between other private reverse engineered servers like hummus'? > I do not know what 'hummus' is, cal you elaborate, svp ? As far as I know, Spacebar is the only project I know of trying a 1:1 reverse engineer of Discord. If there are others I am unaware of, please let me know and I will try and connect them all together. basically a 2018-era discord "fork" that runs their own server, might be of help but i cant seem to find too much info about it outside the webclient on sys42...

  11. stratself

    Douglas Terabyte: do you know why there is motivation to federate Spacebar with XMPP?

  12. menel

    Douglas Terabyte: The ngnix part of proxying prosody http stuff is the same as if you proxy anything. If you find whats confusing for you don't heistste to tell at the prosody channel so it can be improved

  13. Douglas Terabyte

    >> I do not know what 'hummus' is, cal you elaborate, svp ? As far as I know, Spacebar is the only project I know of trying a 1:1 reverse engineer of Discord. If there are others I am unaware of, please let me know and I will try and connect them all together. > basically a 2018-era discord "fork" that runs their own server, might be of help but i cant seem to find too much info about it outside the webclient on sys42... If you can find it and link it to me, I will share it with the Spacebar Devs

  14. distaza

    > Douglas Terabyte: do you know why there is motivation to federate Spacebar with XMPP? Motivation, or reason?

  15. Big Mike

    Probably the same thing in this context

  16. Douglas Terabyte

    >> Douglas Terabyte: do you know why there is motivation to federate Spacebar with XMPP? > > Motivation, or reason? Because Discord's API does not have the ability to federate with itself, so every Spacebar server (only two main instances right now) cannot talk to each other. I have personally discussed with Cryptography specialists on Tekegram, Spacebar devs on Discord, and XMPP devs here about the possibility of running Spacebar's server and API as an extension on top of XMPP and gotten positive response from all three communities.

  17. Douglas Terabyte

    >> Douglas Terabyte: do you know why there is motivation to federate Spacebar with XMPP? > > Motivation, or reason? Because Discord's API does not have the ability to federate with itself, so every Spacebar server (only two main instances right now) cannot talk to each other. I have personally discussed with Cryptography specialists on Telegram, Spacebar devs on Discord, and XMPP devs here about the possibility of running Spacebar's server and API as an extension on top of XMPP and gotten positive response from all three communities.

  18. Douglas Terabyte

    People have told me if XMPP had the UI and features of Discord and the federation and extensions of XMPP they would self host it immediately.

  19. luci

    Hi, I'm people

    ❤️ 1
  20. luci

    https://lucidragons.de/blog/2026/2026_02_20_loving_xmpp.md

    ❤️ 1
  21. Douglas Terabyte

    People have told me if XMPP had the UI and features of Discord and Spacebar had the federation and extensions of XMPP they would self host it immediately.

  22. distaza

    If you are developing XMPP (you intend to use and support it), you have to be inherently motivated, the same way that if I want to be a FreeBSD or Linux developer, or work on VR, I need to be inherently motivated. That's the difference between reccommending or liking something and developing it. There are *reasons* to federate. There are also reasons to approach feature parity. Motivation? We're *it.* If we all drop XMPP for Facebook, no one will be 'motivated'. That's why I'm being pinged on my weekend to help the Spacebar guys learn about XMPP. That's why I'm writing a Unix socket multiplexer.

    ❤️ 1
  23. Douglas Terabyte

    luci: hi luci, thanks for popping in :3

    ♥ 1
  24. Douglas Terabyte

    Luci is a friend from Saotoks gang of cryptography fans who showed an interest in Spacebar and XMPP merging

  25. svp

    > >> I do not know what 'hummus' is, cal you elaborate, svp ? As far as I know, Spacebar is the only project I know of trying a 1:1 reverse engineer of Discord. If there are others I am unaware of, please let me know and I will try and connect them all together. > > basically a 2018-era discord "fork" that runs their own server, might be of help but i cant seem to find too much info about it outside the webclient on sys42... > If you can find it and link it to me, I will share it with the Spacebar Devs https://hummus.sys42.net

  26. distaza

    You need to be motivated on your own. I can only give you reasons to supplement it. Our purpose to experiment is in the MUC subject line.

    👍 2
  27. Douglas Terabyte

    I am

  28. Douglas Terabyte

    >> If you can find it and link it to me, I will share it with the Spacebar Devs > https://hummus.sys42.net This gives me a login prompt but no repositories and I can't seem to reach the top level domain.

  29. Big Mike

    > If you are developing XMPP (you intend to use and support it), you have to be inherently motivated, the same way that if I want to be a FreeBSD or Linux developer, or work on VR, I need to be inherently motivated. That's the difference between reccommending or liking something and developing it. > > There are *reasons* to federate. There are also reasons to approach feature parity. Motivation? We're *it.* > If we all drop XMPP for Facebook, no one will be 'motivated'. > > That's why I'm being pinged on my weekend to help the Spacebar guys learn about XMPP. That's why I'm writing a Unix socket multiplexer. "Motivation" in the context of stratself's message means desire or reason.

  30. svp

    yeah as i said i havent been able to find too much about it but i know it exists thanks to a mutual the author and i have, i'll see if i can ask for a contact instead...

    ❤️ 1
  31. Big Mike

    > People have told me if XMPP had the UI and features of Discord and Spacebar had the federation and extensions of XMPP they would self host it immediately. I guess I'm just not understanding what the point of this additional complexity is vs just creating a native XMPP client with Discord-like UX

  32. Big Mike

    Like again all of the building blocks are there from a technical standpoint for an XMPP client with voice channels and whatnot. It's just a matter of actually creating the UI.

  33. Big Mike

    Spacebar is compatible with existing Discord bots I guess but rebuilding them for XMPP (which has various decent libraries for such things) would likely be a lot less work than trying to duct tape Spacebar and XMPP together

  34. distaza

    Desire and reason should not be conflated, but I can still supply answers. Creating a proper translation means gaining the ability to transplant Discord data into XMPP. Migration. If you can't think of a reason to migrate users and their communities to XMPP, you can practice that belief by dropping XMPP and going to Discord.

  35. distaza

    I desire it, and so does Spacebar.

  36. Douglas Terabyte

    > yeah as i said i havent been able to find too much about it but i know it exists thanks to a mutual the author and i have, i'll see if i can ask for a contact instead... svp: please do, I would appreciate the help on outreach :3

  37. Big Mike

    distaza: words can have different meanings depending on context. Anyway not sure why that's a battle you're picking. > Creating a proper translation means gaining the ability to transplant Discord data into XMPP. Migration. Creating a simple script that dumps Discord/Spacebar data and converts it to XMPP data would be nothing compared to making Spacebar federate via XMPP. If the former is the main desire, the latter would be extreme overkill.

  38. distaza

    If you think so, sounds like a plan. You wanna do it, or is it a recommendation?

  39. Big Mike

    I mean I have no use for Discord data 😄

  40. Big Mike

    > Whatever is needed to make this work, please assist

  41. distaza

    Well, I'll do *both*, then. :p

  42. distaza

    I like overkill. They have a saying about it.

  43. distaza

    If you don't agree, that's fine. You won't be using it or working on it, even though you're still here?

  44. svp

    > > yeah as i said i havent been able to find too much about it but i know it exists thanks to a mutual the author and i have, i'll see if i can ask for a contact instead... > svp: please do, I would appreciate the help on outreach :3 unsure if you received the channel PM i sent

  45. distaza

    Big Mike: Is there something you would like to see worked on with XMPP, in particular, perhaps something you're fiddling witj yourself?

  46. distaza

    Big Mike: Is there something you would like to see worked on with XMPP, in particular, perhaps something you're fiddling with yourself?

  47. distaza

    Apologies for any typos, this is a touch device. Not my preferred input mode.

  48. Menel

    I wonder how everyone ended up in this channel and not in xmpp:jdev@muc.xmpp.org?join 🙂

  49. Douglas Terabyte

    > I wonder how everyone ended up in this channel and not in xmpp:jdev@muc.xmpp.org?join 🙂 OwO what is this

  50. Douglas Terabyte

    *joins*

  51. luci

    > I guess I'm just not understanding what the point of this additional complexity is vs just creating a native XMPP client with Discord-like UX Seconded, honestly... I'm currently trying out Mov.im, and it actually looks fairly close to being a good alternative, but it was also built ground-up to interface with XMPP

  52. Douglas Terabyte

    > I wonder how everyone ended up in this channel and not in xmpp:jdev@muc.xmpp.org?join 🙂 More seriously, because both channels are relevant. Thank you for providing an additional communication channel for me to speak with.

  53. stratself

    Movim has similar goals with Spacebar including - Plans for SFU-backed calls - Forum/style stuff - Spaces (which should map to matrix spaces, discord guilds) and other social media features

  54. stratself

    Movim has similar goals with Spacebar including - Plans for SFU-backed calls - Forum/groups stuff - Spaces (which should map to matrix spaces, discord guilds) and other social media features

  55. stratself

    it'd be nice to see such forces join together, maybe? :> Imo having good, scalable voice chat on XMPP would make this protocol quite perfect in many ways

  56. luci

    > it'd be nice to see such forces join together, maybe? :> > > Imo having good, scalable voice chat on XMPP would make this protocol quite perfect in many ways I haven't looked at it yet, but aren't STUN/TURN Servers already what is commonly used, and thusly decently scalable?

  57. distaza

    AFAIK, yeppers!

  58. stratself

    >> it'd be nice to see such forces join together, maybe? :> >> >> Imo having good, scalable voice chat on XMPP would make this protocol quite perfect in many ways > I haven't looked at it yet, but aren't STUN/TURN Servers already what is commonly used, and thusly decently scalable? the new architecture is Selective Forwarding Units (SFUs) which should be much more scalable than peer-to-peer based calls, especially in large rooms Afaik TURNs don't scale well and are more used as a relay method than an efficient transport arch

  59. stratself

    (I wonder if TURNs set up multiple candidates if I'm in a multiparty call, but not sure if this is the right MUC to get a response)

  60. luci

    Small check-in, what is our definition of "large"? The communities I am most concerned about have a userbase that leads to active voice-calls of around ~20 people *on very busy days* If a TURN server is fine with that ... Why not? Coturn says that it can handle a lot of ongoing connections, so I'm not sure where the bottleneck for you would be ... Client bandwidth?

  61. epi

    On the topic of voice chat rooms, what about Mumble?

  62. epi

    Seems good for the purpose, but I don't know how well it would integrate in an XPP client

  63. epi

    Seems good for the purpose, but I don't know how well it would integrate in an XMPP client

  64. Douglas Terabyte

    > On the topic of voice chat rooms, what about Mumble? I used to use Mumble as a way to have group calls when we didn't want to speak on Discord and XMPP wasn't enough.

  65. luci

    Eehh, iffy already because modern services also expect some basic way to do screen-share. Mumble *is* nice, but, a visual stream is ... Kinda normal these days. How does Discord do it ...

  66. Douglas Terabyte

    > Seems good for the purpose, but I don't know how well it would integrate in an XMPP client Now that is also an idea, make another new XEP to bridge Mumble and XMPP?

  67. Douglas Terabyte

    >> Seems good for the purpose, but I don't know how well it would integrate in an XMPP client > Now that is also an idea, make another new XEP to bridge Mumble and XMPP? Perhaps an idea to forward to the eyes and ears of that other Jabber/XMPP dev group.

  68. Douglas Terabyte

    I also just noticed XMPP lacks message forwarding.

  69. Douglas Terabyte

    Ot maybe that is just Conversations

  70. Douglas Terabyte

    Or maybe that is just Conversations

  71. epi

    > Eehh, iffy already because modern services also expect some basic way to do screen-share. Mumble *is* nice, but, a visual stream is ... Kinda normal these days. > > How does Discord do it ... I might agree, but then it isn't just a voice room to me

  72. epi

    > I also just noticed XMPP lacks message forwarding. I think that is a general trait

  73. stratself

    if by message forwarding you mean including backlinks to the original message, then it's kinda hard to do in federated systems

  74. stratself

    > Small check-in, what is our definition of "large"? > The communities I am most concerned about have a userbase that leads to active voice-calls of around ~20 people *on very busy days* > > If a TURN server is fine with that ... Why not? > Coturn says that it can handle a lot of ongoing connections, so I'm not sure where the bottleneck for you would be ... Client bandwidth? thats large. you'd be uploading and downloading 20 streams simultaneously,with or without TURN (if my intuitions are correct). And imagine if some of them are video streams... So you'd need a central point to upload your own stream to, but download 20 others. Saving upload bandwidth is what SFUs do, and it'd fit with modern residential networks. Though dont quote me but I do believe discord (or any large platforms) would go with such designs too

  75. stratself

    but xmpp can suit you if you have like 5 participants on average, or something in that ballpark. Maybe you can go to Jitsi or something on one of the rare busy days :)

  76. distaza

    If you want to forward a message, you'd need a s2s scaffold and/or a c2s scaffold to request a particular message by its ID, and you could add a property to MUCs to simply retransmit that message if it's in history, not just to a joined user. Simple, I think.

  77. luci

    > thats large. you'd be uploading and downloading 20 streams simultaneously,with or without TURN (if my intuitions are correct). And imagine if some of them are video streams... > > So you'd need a central point to upload your own stream to, but download 20 others. Saving upload bandwidth is what SFUs do, and it'd fit with modern residential networks. > > Though dont quote me but I do believe discord (or any large platforms) would go with such designs too Well ... Yes. That's what the Game Nights for some of my groups look like. About ~10 people, 7 of them with a video camera on, 1 screenshare for a Jackbox game going.

  78. distaza

    When you ask for messages when not a member of a MUC, I believe the server tells you 'no, you're not joined, sorry'. Just let it through, and it may simply work.

  79. distaza

    The tracking on what *should* be let through that way, that's where development would be, I think.

  80. stratself

    > If you want to forward a message, you'd need a s2s scaffold and/or a c2s scaffold to request a particular message by its ID, and you could add a property to MUCs to simply retransmit that message if it's in history, not just to a joined user. Simple, I think. I guess it can be tried with a proper namespacing of MUC JID + message UID XEP, though idk enough to see if it works or not. Have you looked at previous XEPs for this?

  81. distaza

    Permit all, permit none, or send a special message saying 'I wish to share this' to the server, would be about right, I thing.

  82. distaza

    Permit all, permit none, or send a special message saying 'I wish to share this' to the server, would be about right, I think.

  83. distaza

    I haven't pinned this to a particular XEP but I'll start with my discovery in MAM, since that's most likely to be the affected greeble here.

  84. stratself

    also wouldnt play nice with graceful degradation and ephemerality - some main principles that I think xmpp strive for

  85. distaza

    I think there are some means to account for it, actually.

  86. stratself

    eh take a look https://xmpp.org/extensions/xep-0297.html

  87. MattJ

    And XEP-0313 allows you to fetch messages by ID (if you're permitted to)

  88. distaza

    2013. Beautiful. And they did it at-time-of-forward, so static. Awesome.

  89. distaza

    Yeah, this will be perfect.

  90. MattJ

    They were smart 😉😅

  91. distaza

    They sure were!

  92. distaza

    Man, every time I look at these XEPs makes my programming fingers twitch, 'cause I'm at that point where I just gotta do it, there's no other barriers anymore

  93. luci

    Funnily enough Discord has no message forwarding at all, and it's been doing fine. It's one of those "Semi-useful but can easily be faked with just having a quote message with a link" things.

  94. MattJ

    One thing I meant to say the other day, based on the way you described your planned architecture, I would caution against a strict plugin-per-XEP approach

  95. luphoria

    Discord did recently implement message forwarding, within the last year IIRC. But functionally i don't know what makes it any different from if you just quoted and attached a link, except aethestically.

  96. MattJ

    For folk who are newer to XMPP (either users or developers), there is a tendency to focus a lot on XEPs. A truth that eventually dawns is that features != XEPs, and usually a feature-based approach is better

    ♥ 1
  97. MattJ

    For example, there are features which do not require any XEPs. There are XEPs which do not provide any features. There are features which require multiple XEPs, and some XEPs allow implementation of multiple features.

  98. distaza

    They use dynamic forwarding too, which means the original message can be destroyed and the forwarded message gets destroyed too. Not ideal if you intend to CC.

  99. Douglas Terabyte

    > For folk who are newer to XMPP (either users or developers), there is a tendency to focus a lot on XEPs. A truth that eventually dawns is that features != XEPs, and usually a feature-based approach is better MattJ: why is that? The 'features! = XEPs' part.

  100. distaza

    They (Discord) use dynamic forwarding too, which means the original message can be destroyed and the forwarded message gets destroyed too. Not ideal if you intend to CC.

  101. Douglas Terabyte

    > For example, there are features which do not require any XEPs. There are XEPs which do not provide any features. There are features which require multiple XEPs, and some XEPs allow implementation of multiple features. Hmmm...

  102. stratself

    XEPs are more of the protocol building blocks I think, rather than a full feature suite

  103. MattJ

    Because XEPs are just describing extensions to the protocol, and that's all. Sometimes you don't need to extend the protocol.

  104. Douglas Terabyte

    Hm!

  105. Douglas Terabyte

    I will have to learn more about this

  106. MattJ

    You already gave a good example not long ago here: bridging Mumble and XMPP would require no XEP

  107. MattJ

    No new XEP anyway

    😮 1
  108. stratself

    > You already gave a good example not long ago here: bridging Mumble and XMPP would require no XEP huh, you mean just put in a URL?

  109. distaza

    How would you creare a feature without any XEPs, or do you not include Core in that, etc etc?

  110. distaza

    How would you create a feature without any XEPs, or do you not include Core in that, etc etc?

  111. MattJ

    stratself: I don't think Mumble uses URLs

  112. MattJ

    XMPP already has XEPs for audio conferences, and that's what Mumble is

  113. luphoria

    you could make a bridge using a bot user, but it would probably be pretty janky. i've never used mumble for voice chat, though.

  114. Douglas Terabyte

    > No new XEP anyway Please elaborate

  115. MattJ

    No, you don't need a bot

  116. stratself

    > stratself: I don't think Mumble uses URLs i see, but I guess you mean you can just add in something like a Jitsi link and have clients render it without needing a new extension

  117. MattJ

    No, I would probably implement it as a gateway component

    👍 1
  118. MattJ

    It would give every Mumble conference an XMPP address

  119. Douglas Terabyte

    > No, I would probably implement it as a gateway component Oh, like that XMPP/SIP XEP?

  120. MattJ

    And you could invite it to a call or whatever

  121. MattJ

    But because all the XMPP server and XMPP clients see is a conference (they don't need to know or care that the backend is Mumble) you don't need a "Mumble XEP"

  122. MattJ

    So you can see that features are possible without new XEPs, this is just one example

  123. stratself

    MattJ: has there been any A/V gatewaying between xmpp and another platform (not protocols i.e. SIP)? I presume this would require writing a bridge in the likes of slidge, but for media

  124. stratself

    MattJ: has there been any A/V gatewaying between xmpp and another platform (not protocols i.e. SIP)? I presume this would require writing a bridge in the likes of slidge, but for live media

  125. MattJ

    Yes, bridges are generally needed. But most platforms build upon standard media protocols such as webrtc

  126. MattJ

    And XMPP clients already support that

  127. stratself

    > How would you create a feature without any XEPs, or do you not include Core in that, etc etc? every XEP is built as an extension of Core, fyi

  128. MattJ

    Sure, but also some features simply don't need protocol changes

    👍 1
  129. Kris

    > MattJ: has there been any A/V gatewaying between xmpp and another platform (not protocols i.e. SIP)? I presume this would require writing a bridge in the likes of slidge, but for live media imho not worth it, but a SFU would open the way to have easy guest participants in browser client.

  130. Kris

    Galene SFU which is what Libervia is experimenting with has that built in

  131. distaza

    > So you can see that features are possible without new XEPs, this is just one example Right, right, I understand!

  132. MattJ

    Yes, SFU is the way to go

  133. distaza

    XEPs are the inherent capabilities of the protocol, the 'how does it do that'. Features are capabilities of the program and by extension, the user, the 'what can *I* do'.

  134. stratself

    i'd say XEPs also serve the social-technical purpose of being properly vetted and agreed upon for open federation. As you may've seen with whatsapp and others, XMPP can be extended proprietarily to serve their own gains, too

  135. MattJ

    distaza: yes, well said

  136. MattJ

    stratself, that too

  137. MattJ

    XMPP being extensible isn't enough. The XMPP Standards Foundation and the XEP process exists so that when client developers decide they want to implement reactions, and that requires new protocol stuff, everybody can agree on what that new protocol stuff is. Otherwise we end up with a bunch of incompatible clients that can't send reactions to each other.

  138. MattJ

    XEPs also tend to consider the fallback case ("What happens when one of the clients receiving this doesn't support it?"), and in this case often some fallback to plaintext is used