Why XMPP?
In 1800, it took one or two years to send a message from London to Calcutta and receive a reply. You needed to find a ships captain you trusted, who piloted his sailing ship around the Cape of Good Hope and probably stopped in various ports along the way. Then your contact in Calcutta needed to write a reply and send it back to London in a similar fashion. Not exactly instant messaging!
With the invention of the steamship and the opening of the Suez Canal, the time was reduced to a month or two. Air mail reduced the time further to a week or two, and eventually to a few days (when it absolutely, positively has to be there overnight). The deployment of commercial email systems introduced us to wait times of only a few minutes (depending on how often you polled your server). And instant messaging (IM) systems such as ICQ took communication to its logical conclusion: nearly immediate interaction.
As a result of these developments, the useful half-life of information has shrunk significantly, in many cases to mere seconds. For many people, IM trumps email. Blogging trumps newspapers and magazines. Microblogging trumps blogging. Groupchat trumps email discussion lists. Shared editing and whiteboarding trump carefully crafted presentations. Immediate notifications trump once-a-day updates. And the list goes on.
What all these technologies have in common is that the interactions happen in close to real time. To make this possible, we need technologies for real-time communication. Ideally such technologies would be open standards providing the real-time equivalent of HTTP, HTML, and the other building blocks of todays Internet, because over the long term open standards provide stronger security, greater extensibility, and the possibility for more innovation at the edges than do closed technologies.
The Extensible Messaging and Presence Protocol (XMPP) is just such an open technology for real-time interaction. Consider some of its advantages:
XMPP is proven . Over 10 years of development has resulted in a stable, widely deployed, seriously tested, Internet-scale technology, with dozens of interoperable codebases, tens of thousands of deployed services, and millions of end users.
XMPP is secure . It provides built-in support for channel encryption and strong authentication, inherent resistance to many forms of malware, a diverse ecosystem of implementations, a decentralized network without a single point of failure, and significant deployment at some of the most security-conscious financial organizations and government agencies worldwide. Work on more advanced features (such as user-friendly end-to-end encryption) continues so that XMPP will be even more secure.
XMPP is decentralized . Unlike standalone communication silos, XMPP technologies are deployed in a decentralized client-server architecture with an unlimited number of servers. Any person or organization can run their own XMPP server and connect it to the rest of the network using standard Internet infrastructure such as the Domain Name System (DNS), and certificates are freely available through the XMPP Standards Foundation (XSF) to enable secure federation of XMPP traffic.
XMPP is extensible . Because XMPP is at its core a technology for rapidly delivering XML from one place to another, it has been used for a wide range of applications beyond instant messaging, including gaming, social networking, Voice over IP (VoIP), real-time collaboration, alerts and notifications, data syndication, geolocation, intelligent workflows, machine-to-machine communication, and custom applications.
XMPP is scalable . The push model of information transfer used in XMPP solves serious scaling problems associated with traditional HTTP-based polling approaches; as a result, it enables you to build applications that were literally impossible until now.
XMPP is a standard . The core aspects of XMPP have undergone rigorous public review within the Internet Engineering Task Force (IETF), and extensions to XMPP are published in an open, developer-oriented standards process run by the XSF. This approach has resulted in strong technologies that can be freely implemented under any licensing terms, from open source to shareware to proprietary code.
XMPP is a community . Open standards, a large number of software products, and a communications network are all good, but the secret sauce of XMPP may be its vibrant and friendly community of technologists, developers, open source projects, commercial software companies, service providers, and end users. This community is committed to working together to solve problems and build great new applications.
For these reasons, more and more software developers and service providers are using XMPP to build real-time applications or add real-time interfaces to existing applications. And you can, too, because XMPP provides a simple but powerful set of tools that can help you solve real-world problems. This book will show you how.
Jabber and XMPP
Throughout this book, we use the terms Jabber and XMPP interchangeably. These technologies were originally developed by Jeremie Miller and the Jabber open source community in 19981999. When the community submitted its core protocols to the Internet Engineering Task Force (IETF) in 2002, it chose the name Extensible Messaging and Presence Protocol to distinguish the protocol from the broader technology and developer community. You can think of the relationship as XMPP is to Jabber as HTTP is to the Web. The term Jabber was proactively trademarked by Jabber, Inc. (now part of Cisco Systems, Inc.) in 2000 to protect the open source community, but the XSF sublicenses the term for use in open source projects and other community activities.