Instant messaging (IM) is a form of real-time communication between two or more people based on typed text. The text is conveyed via computers connected over a network such as the Internet.
Instant messaging offers real-time communication and allows easy collaboration, which might be considered more akin to genuine conversation than email's "letter" format. In contrast to e-mail, the parties know whether the peer is available. Most systems allow the user to set an online status or away message so peers are notified when the user is available, busy, or away from the computer. This is called the presence of the user. On the other hand, people are not forced to reply immediately to incoming messages. For this reason, some people consider communication via instant messaging to be less intrusive than communication via phone. However, some systems allow the sending of messages to people not currently logged on (offline messages), thus removing much of the difference between IM and email.
Instant messaging allows instantaneous communication between a number of parties simultaneously, by transmitting information quickly and efficiently, featuring immediate receipt of acknowledgment or reply. In certain cases IM involves additional features, which make it even more popular, i.e. to see the other party, e.g. by using web-cams, or to talk directly for free over the internet.
Extensible Messaging and Presence Protocol (XMPP) is an open, XML-inspired protocol for near-real-time, extensible instant messaging (IM) and presence information (a.k.a. buddy lists). It is the core protocol of the Jabber Instant Messaging and Presence technology. The protocol is built to be extensible and other features such as Voice over IP and file transfer signaling have been added.
Unlike most instant messaging protocols, XMPP is based on open standards. Like e-mail, it is an open system where anyone who has a domain name and a suitable Internet connection can run their own Jabber server and talk to users on other servers. The standard server implementations and many clients are also free and open source software.
The Internet Engineering Task Force (IETF) formed an XMPP Working Group in 2002 to formalize the core protocols as an IETF Instant Messaging and presence technology. The four specifications produced by the XMPP WG were approved by the IESG as Proposed Standards in 2004. RFC 3920 and RFC 3921 are currently undergoing revisions in preparation for advancing them to Draft Standard within the Internet Standards Process. The XMPP Standards Foundation (formerly the Jabber Software Foundation) is active in developing open XMPP extensions.
XMPP-based software is deployed on thousands of servers across the Internet and by 2003 was used by over ten million people worldwide, according to the XMPP Standards Foundation.[1] Popular commercial servers include the Gizmo Project. Popular client applications include the freeware clients offered by Google and the Gizmo Project, multi-protocol instant messengers such as iChat and Pidgin (formerly Gaim), and free dedicated clients such as Psi. Google Talk provides XMPP gateways to its service.
Open, public, and free. The Jabber protocol is open, public, free and well-documented, as opposed to other popular IM systems. The XMPP technology is well-documented and public by means of several RFC standard documents developed by the Jabber Software Foundation. Any individual or organization can make use of XMPP technologies without having to pay royalties, licenses, etc ...
Asynchronous. A Jabber server guaranties delivery of messages while the destination client is online. When a client goes offline, the Jabber server stores and forwards the message to a client when the client reconnects. This feature, apart from being useful in the case of messages between humans, helps with the fact that Jabber can be used as an architecture that enables systems to talk with other systems. Consider a scenario with a client that interacts via Jabber with a command control, sends commands, and receives responses. In this scenario, even thought the client goes offline, the system guarantees that the response from the command control is stored and sent to the client when the client goes online again.
Decentralized. By definition, Jabber is decentralized. Therefore, a Jabber central server that provides the service to everybody does not exist. Jabber is a servers network that is independent but simultaneously interconnected. As a result, anyone can run their own Jabber server, creating networks and sub-networks that do not depend on a central backbone and add it as a component of the agent architecture. A user can choose a server that is trusted by her. She is not forced to use a server that generates suspicion. She may use a server provided by a commercial company of her trust (like her bank or univertity), the one of her employer, etc ... A user can even choose to set up her own Jabber server at home.
Secure. As with all other network services (e.g., HTTP, SMTP, and FTP), security is an important concern with regard to the deployment of IM services based on Jabber technology. One aspect of these services is the ability to enable connections between Jabber servers, thus taking advantage of the "network effect" of existing Jabber servers on the Internet or on a company network.As specified in RFC 3920, the core transport layer for XMPP is an XML streaming protocol that makes it possible to exchange fragments of XML between any two network endpoints. Authentication and channel encryption happen at the XML streaming layer using the IETF-standard protocols for Simple Authentication and Security Layer (SASL) and Transport Layer Security (TLS). The XMPP architecture is a pure client-server model, wherein clients connect to servers and (optionally) servers connect to each other for inter-domain communications.
Extensible. Using the power of XML namespaces, anyone can build custom functionality on top of the core protocol, as exemplified by the Jabber Enhancement Proposals (JEPs) coordinated by the Jabber Software Foundation. Jabber was designed from the beginning to be extended. A good example of this are the changes and improvements that have gradually appeared in the Jabber technology without breaking backward compatibilities. To mention some: Support of SSL and GPG encryption; precise information on the state of a message ('is being written', 'the contact has received it' or 'it has been kept in the server'); multi-conference chat rooms (MUC) that allow multiple users to interact simultaneously using virtual channels; a cooperative online 'blackboard' to draw graphics and share multimedia contents among the participants of a conversation (The Coccinella). These extended functionalities do not require the Jabber servers to be modified at all. They rely on the Jabber clients to implement the necessary features to support them. Thus, in Jabber the power of extending functionalities is in the client.
Flexible. The most common misconception about Jabber is that it is solely for IM. Jabber is more than a bridge to other IM systems or a set of protocols. IM is just one of the countless ways that an XML-based messaging technology such as Jabber's can be applied. Jabber is a flexible and extensible client/server architecture that routes XML data between clients and services, which plug into Jabber servers as components. The original and core set of components provide the IM features (and support services) that have been discussed. The XML structures that make up the Jabber protocol are split into top-level tags (also referred to as elements). These tags do not necessarily carry human-generated IM message content; as long as the resulting XML is well-formed, anything goes. Furthermore, the Jabber protocol design makes use of an XML feature that allows total flexibility for extensions, called namespaces. Bearing this in mind, it is clear that Jabber can be deployed to provide solutions far beyond the IM space as well as within it. Jabber applications beyond IM include network management, content syndication, collaboration tools, file sharing, gaming, remote systems monitoring and, now, agent communication.