Modern XMPP is an independent project launched to improve the quality of user-to-user messaging applications that use XMPP. XMPP is a mature open standard for internet messaging. If you are reading this, you have probably heard of it.
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.
We also intend to provide a comprehensive set of guidelines for UI and UX design. Developing a client was never just about the protocol. In fact in most cases the protocol is a secondary concern. Having a concrete set of guidelines will help to provide a more uniform user experience between different applications, ensuring they use the same terminology, and provide interoperable feature sets.
A fork of the Psi IM client which is actually maintained and updated. Rolling releases - as new features and fixes are added, new releases come out. Cross platform - I use it on my Linux desktops and my OSX machine for work and it's quite solid. The configuration menus are a little tricky and hard to navigate, so you'll have to go through them a couple of times before you get things set up the way you want them. Customizable - themes, fonts, et al can be tweaked. Also has a plugin system so you can install add-ons.
An open source XMPP client for Android. Supports OMEMO. Supports multiple accounts simultaneously. Uses your Google Contacts to store its contact information. Available in both the Google Play store and F-Droid.
Profanity is a console based XMPP client written in C using ncurses and libstrophe, inspired by Irssi. Cross platform, lightweight, very handy. Takes a bit of fiddling to manage multiple accounts, though.
Telegram is a popular messaging application. This library is meant to make it easy for you to write Python programs that can interact with Telegram. Think of it as a wrapper that has already done the heavy job for you, so you can focus on developing an application. Designed for use with a user or a bot account (bot API alternative).
An XMPP library for use with Python 3.4+ asyncio. Can be used with v3.3 if you install the asyncio module (it comes with v3.4 and later). Tries to shield you from working with XML. Requires TLS by default.
A CLI tool for interacting with the Matrix chat network. Can probably be used as a client, but it's actually designed to build other tools on top. Only uses the matrix-python-sdk module.
Instant messaging server. Backend in pure Go (license GPL 3.0), client-side binding in lots of different languages. Also supports gRPC and HTTP(S)+Websockets. Supports persistent storage with a back-end database.
This is not XMPP, but I added the tag so it's easier to find later.
This is also a proof-of-concept web client: https://github.com/tinode/webapp/
An Ansible playbook for setting up an Ansible XMPP server as a Tor hidden services. Notable because there's a main.yml file that describes how to configure the Tor hidden service itself. It lists all the ports that have to be available at the hidden service. It also has a sample Prosody config file that describes how to configure Prosody to serve up a hidden service and have it work.
This is a module for Prosody that allows federation to other XMPP servers running as Tor hidden services. If you just want to set up a hidden service, you don't really need this.
Another Jabber client for the Linux desktop. Gnome-aware but does not require Gnome. Supports multiple accounts.
One of the earliest (and still maintained) F/OSS IM applications out there. Interfaces with most of the communication networks out there. Has a plugin architecture as well.
Off-the-Record (OTR) Messaging allows you to have private conversations over instant messaging by providing encryption, authentication, deniability and perfect forward secrecy.
Somebody implemented an interactive fiction adventure on a Jabber server. add soul_tracker.jabber.org to your contact list and send something to that account.
Element is an IM and chat application running on top of the Matrix protocol that features interoperability with several other systems, including IRC, Gitter, and Slack. It features a full implementation of end-to-end encryption. Support for service integrations.
Github: https://github.com/vector-im/element-web
Save yourself some trouble, just download the latest releases.