XMPP (Extensible Messaging and Presence Protocol ) is an open standard for messaging and presence. XMPP is the most popular open-source and open standard protocol for chat, video conference and presence. XMPP is the core protocol used in popular chat applications like ICQ, WhatsApp, Nimbuzz, etc.
XMPP Standard
XMPP is developed as an IETF standard. But the XMPP Standards Foundation developed extensions to XMPP in its XEP series. Here is the list of RFC’s used to define XMPP
- `RFC 6120` is the core standard for XMPP and provides basic and fundamental processes for the XMPP.
- `RFC 6121`is an extension to the core standard to provide useful features
- `RFC 7622` defines address format for XMPP and obsoletes RFC 6122.
XMPP Standard History
XMPP has a long history which is around 20 year. Here we will provide some important point about XMPP history.
- XMPP is created by Jeremie Miller in 1999 as a Jabber chat application
- The Jabber Software Foundation which is the base for XMPP is founded in 2001
- The IETF created standards with RFC’s for XMPP in 2004
- XMPP based large and popular chat application Google Talk announced in 2006
- Jabber Software Foundation is renamed as XMPP Standards Foundation in 2007
- XMPP RFC updates RFC 6120 and 6121 published by IETF in 2011
- XMPP over WebSocket RFC 7395 is published in 2015
XMPP Features
XMPP protocol and standard provide a lot of features and attributes. Here we will list some of the most important of them.
- XMPP is a free, open, a public standard which can be implemented by everyone easily
- XMPP is `standard` where it is the same for each implementation, server, and client. Most updated RFC’s are 6120, 6121, 7622
- XMPP is `proven` because it is used by a lot of applications by millions of peoples like Google Talk, Nimbuzz, etc
- XMPP works as `decentralized` which is very suitable today it world and use cases.
- XMPP is `secure` which uses SASL and TLS as builtin
- XMPP is `extensible` with the help of XML and with XEP series a lot of dynamic features are added
XMPP Uses
XMPP is designed as chat applications but with its extensions and capabilities, it is used in different areas.
- `IoT` is a popular area in IT and requires stable and standardized communication between nodes. XMPP can be used for different applications and IoT nodes.
- `Online Gaming` is a popular topic in end users. XMPP is used in popular games like Nintendo Switch, EVE Online, Fortnite, Neverwinter, etc.
- `Social` is the main area of the XMPP ad used a lot of popular projects like Google, Apple, etc.
XMPP Libraries
As XMPP is a reliable standard and popular protocol there are a lot of libraries and implementations about XMPP. These implementations vary from Go to JavaScript. Here are some of them.
- Exlixir XMPP is implemented for Erlang language
- Fluux XMPP is implemented for Go
- gloox is implemented for C++
- MatriX is implemented for .Net and C#
- QXmpp is implemented for C++
- Slixmpp is implemented for Python
- Smack is implemented for Java
- Stroke is implemented for Java
- Strophe.js is implemented for JavaScript
XMPP Clients
With the popularity of its libraries, there are a lot of XMPP clients for different platforms like Linux, Windows Android, macOS, Browser, etc. Here we will list some of them.
Project Name | Platforms |
---|---|
AstraChat | Android / iOS / Linux / macOS / Windows |
BeagleIM by Tigase, Inc. | macOS |
Bruno the Jabber™ Bear | Android |
Conversations | Android |
Converse | Browser |
Dino | Linux |
Gajim | Linux / Windows |
Jitsi Desktop | Linux / macOS / Windows |
JSXC | Browser |
Kaidan | Android / Linux / Windows |
Miranda NG | Windows |
Mozilla Thunderbird | Linux / macOS / Windows |
Poezio | Linux / macOS |
Profanity | Linux / macOS / Windows |
Psi | Linux / macOS / Windows |
Psi+ | Linux / macOS / Windows |
Pàdé | Browser |
Salut à Toi | Android / Browser / Linux / Other |
Simple IoT Client | Windows |
Siskin IM by Tigase, Inc. | iOS |
Spark | Linux / macOS / Windows |
Swift | Linux / macOS / Windows |
Tigase Messenger for Android | Android |
Xabber | Android |
Xabber-web | Browser |
yaxim | Android |