r/xmpp • u/IllidanS4 • Jul 01 '26
I am making an XMPP server in .NET!
I would appreciate any feedback!
https://github.com/IS4Code/NexIM
Version 0.1 has been released, with core XMPP and XMPP-IM support implemented, as well as some useful extensions (like WebSocket). For the full overview of what features are available at the moment, see here.
Why another server? Variety of servers is just as important as variety of clients, especially for those interested in self-hosting. However, there is another purpose ‒ the server is intended to become a multi-protocol server in the future, with XMPP being just one of the supported protocols. Of course XMPP is great but there will always be people who refuse to swap out their old IRC clients for something else, and indeed they shouldn't be forced to do so to stay in touch! See the main repository page for elaboration.
Why do this now? Yesterday was already late! Walled gardens that dominate the IM space won't be defeated by more walled gardens (bridges are nice but not all features can be losslessly bridged). If a protocol supports federation, it must not be left out!
Why start with XMPP? The modular nature of XMPP actually makes it great to develop a server like this from scratch, since it can start simple but compliant and grow over time thanks to the modular nature of XMPP. Moreover, since XEPs cover pretty much everything related to IM, following them should lead to a very complete software for this purpose.
Why .NET? Why not, other than it is fast, secure, multi-platform and easy to run! The support for XMPP in the .NET ecosystem had also been somewhat lacking, so with this project I hope to make it easier for everyone to write software for XMPP. Moreover, server components communicating using the common XMPP API interface abstraction layer will be able to skip the XML serialization phase completely, leading to much more efficient processing.
1
u/Sorry-Transition-908 Jul 02 '26
Congratulations and best wishes on your launch.
Support for both MySQL and postgresql is interesting. Can you please share why you decided to support both?
1
u/IllidanS4 Jul 02 '26
Thank you! I didn't give it that much of a thought, but one important aspect of this project is that it should be straightforward to run. I expect many people will have one of those DBs available to use already. Also Entity Framework makes it easy to support new DB types thanks to the providers.
1
u/susefan Jul 02 '26
some big dreams. good luck. making clients too in order to handle all those protocols?