I linger in a lot of XMPP channels, and there is a constant set of questions being asked that folks then answer in chat, which are then lost in the stream. There are certainly resources out there that are useful, lists of clients and servers and such, but the folks asking for help always seem to have a criteria that isn’t tracked anywhere… so I’m gonna give it a try.
I’ll use this topic to first gather links and notes to things, to get a sense of which data is useful and interesting to structure.
What I’m looking for:
clients (gajim, dino)
servers (prosody, ejabberd)
libraries (python-nbxmpp, strophe.js)
projects (Snikket, Modern XMPP)
people (folks working this stuff)
documentation and such
Oh yeah, I’d love a single line summary of most XEPs, for reference
After I’ve gotten a bunch here I’ll sort it and put it somewhere nice. For the time being, we’ll just post a single resource per reply (if you have a discussion reply, make it separately), and when I need more info for them I’ll move them out into their own topic for breakout discovery.
Prosody is the jabber server I’ve used the most, and maybe 10 years ago I just stopped looking at other servers as I don’t personally use much more than the default config options in Prosody; complexity in configuring XMPP servers is a tradeoff for the modularity of XEPs, and is why “good defaults” are a feature.
We are developing a handful of simple documents aimed at people who wish to build on top of XMPP. The recommendations are derived from healthy discussions between developers from multiple XMPP projects and other members of the XMPP community.
Our recommendations highlight only the XEPs you need to implement for a modern messaging application, ignoring historical cruft and excessive backwards-compatibility.
Because I have a limited time on Earth, I’ll focus on the XEPs from this meta-project.
Strophe is a collection of libraries for speaking the XMPP protocol. While most XMPP libraries and implementations are focused on chat-based applications, Strophe takes a grander view. It has been used to implement real-time games, notification systems, search engines, as well as traditional instant messaging.
The implementations are production ready, well documented, easy to use, and easy to extend.
Smack is an Open Source XMPP client library for instant messaging and presence. A pure Java library, it can be embedded into your applications to create anything from a full XMPP client to simple XMPP integrations such as sending notification messages and presence-enabling devices.
libstrophe is a C library for XMPP clients and components. It has very minimal dependencies and was designed with both POSIX and Windows systems in mind.
Tinder is a Java based XMPP library, providing an implementation for XMPP stanzas and components.
Tinder’s origins lie in code that’s shared between Jive Software’s Openfire and Whack implementations. The implementation that’s provided in Tinder hasn’t been written again “from scratch”. Instead, code has moved from the Openfire and Whack projects into Tinder, preserving all of the existing features and functionality.