# Extensible Messaging and Presence Protocol

Extensible Messaging and Presence Protocol (XMPP, precedentemente noto come Jabber) è un insieme di protocolli aperti di messaggistica istantanea e presenza basato su XML. Il software basato su XMPP è diffuso su migliaia di server disseminati su Internet; secondo la XMPP Standards Foundation (precedentemente nota come Jabber Software Foundation), già nel 2003 era usato da circa dieci milioni di persone in tutto il mondo.

## Storia

Jeremie Miller iniziò il progetto nel 1998; il suo primo rilascio pubblico principale avvenne nel marzo 2000. Il prodotto principale del progetto è jabberd, un server al quale i client XMPP si connettono per rendere possibile la conversazione. Questo server può creare una rete XMPP privata (dietro a un firewall, ad esempio), o può far parte di una rete XMPP globale e pubblica. Le caratteristiche principali di XMPP sono la natura distribuita del sistema di messaggistica e l'uso dello streaming XML.
Una caratteristica unica del sistema XMPP è quella dei transport, anche conosciuti come gateway o agenti, che consentono agli utenti di accedere a reti che usano altri protocolli, come AIM e ICQ (usando il protocollo OSCAR), MSN Messenger e Windows Messenger (usando il Servizio Messenger .NET), Yahoo! Messenger, SMS o Email.
A differenza dei client multiprotocollo come Trillian o Pidgin, XMPP fornisce questo accesso a livello di server, comunicando per mezzo di servizi speciali gateway che girano su un computer remoto.
Ogni utente XMPP può registrarsi con uno di questi gateway fornendo le informazioni necessarie per accedere alla specifica rete, potendo quindi comunicare con utenti di quella rete come se fossero utenti XMPP. Questo significa che qualsiasi client che supporta il protocollo XMPP può essere usato per accedere a una qualsiasi rete per la quale esista un gateway, senza il bisogno di programmare il supporto al protocollo della nuova rete nel client.

## Punti di forza
### Sistema decentralizzato

    L'architettura di XMPP è simile alle email; chiunque può realizzare il proprio server XMPP e non si identificano server centrali.

### Standard aperto

    L'Internet Engineering Task Force ha formalizzato XMPP come tecnologia approvata per la messaggistica istantanea (definito negli RFC 6120 e RFC 6121). Non sono previste royalty per l'implementazione di queste specifiche.

### Diffusione

    Le tecnologie XMPP sono utilizzate dal 1999. Esistono molte implementazioni dello standard XMPP per client, server e sono stati realizzati molti componenti e librerie.

### Sicurezza

    I server XMPP possono essere isolati dalla rete pubblica, e la sicurezza viene affidata a protocolli come SASL e TLS.

### Flessibilità

    Si possono realizzare funzioni proprietarie usando XMPP come base; per mantenere interoperabilità, la XMPP Standards Foundation gestisce estensioni al protocollo. Le estensioni permettono di realizzare funzionalità come chat room, gestione di rete, groupware, file sharing, videogiochi, controllo remoto di sistemi e monitoraggio, geolocalizzazione, middleware, cloud computing e VoIP.

## Debolezze
### Trasferimento In-band binary inefficiente

    I dati binari da trasferire devono essere codificati con base64 prima di essere trasmessi. La soluzione migliore è eseguire il trasferimento di questi dati (specie se in grande quantità come nel caso in cui vengano trasmessi dei file) in modalità out-of-band, usando l'in-band come metodo di coordinazione.

## Protocolli XMPP

I protocolli cosiddetti di base sono stati adottati dall'IETF con il nome di XMPP e coprono:
* La tecnologia base di Streaming XML
* Sicurezza
* Internazionalizzazione

### XMPP

L'XMPP costituisce l'insieme dei protocolli di messaggistica istantanea sviluppati dalla XMPP Standards Foundation (XSF, ex-JSF), che costituiscono il cuore di XMPP e che l'IETF ha scelto di adottare con le Request for Comments:
* RFC 3920: Il cuore del protocollo XMPP di streaming dell'XML, sicurezza e internazionalizzazione
* RFC 3921: estensioni base di presenza come liste di contatti, sottoscrizioni e whitelisting/blacklisting
Con lo stesso termine si designa anche il gruppo di lavoro relativo all'interno dell'organizzazione.
Gli altri protocolli XMPP non ancora adottati da IETF e in parte ancora in evoluzione sono chiamati XMPP Extension Protocols o XEP (in passato: JEP) e coprono numerosi aspetti, tra cui anche il Voice over IP.