Наличие интероперабельности (в любой области), очевидно, является плюсом для конечного пользователя, что очень редко отрицается разработчиками самых разных продуктов. Тем не менее ее отсутствие может оказаться плюсом для производителя — и не просто плюсом, а решающим фактором в конкурентной борьбе. IM-сети являются хорошим примером: вспомните, зачем вы установили когда-то ICQ? Скорее всего, чтобы общаться со своими друзьями, уже зарегистрированными в этой сети. Причем выбора у вас не было — если бы вы захотели подключиться к любой другой сети (свои мессенджеры есть у AOL, MSN, Yahoo и др.), вы бы остались в полном одиночестве: связи между ними до недавнего времени не было. Даже после покупки компании Mirabilis AOL’ом в 1998, до 2002 сети ICQ и AIM функционировали раздельно (работая на одних и тех же серверах), а интероперабельность между MSN IM и Yahoo IM была анонсирована лишь летом этого года.
«Вирусный эффект», позволяющий привлекать новых пользователей за счет уже существующих или продвигать одни продукты за счет популярности других — штука очень заманчивая. Настолько заманчивая, что интересы самих пользователей отходят на второй план, уступая место желанию захватить рынок целиком. Но технологии развиваются по своим законам, естественным образом стремясь к открытости и стандартизации. Так было с электронной почтой. Так будет с IM и VoIP. Мы можем воочию наблюдать этот процесс.
Появлению протокола Jabber (англ. «болтовня», «бормотание») мы обязаны отсутствию совместимости между сетями ICQ и AIM, а также Джереми Миллеру (Jeremie Miller), решившему исправить этот существенный недостаток в 1998 году. Исходно Jabber задумывался как промежуточный протокол, основанный на XML, через который можно было бы «перенаправлять» сообщения из одной IM-сети в другую. Впрочем, быстро стало ясно, что подобное решение можно использовать и для непосредственной связи между пользователями. И не только между пользователями: между любыми объектами в Сети (например, двумя серверами или клиентом и сервером), которым требуется двусторонняя связь в реальном времени, контроль присутствия и другие функции IM.
Ядро разработанных и разрабатываемых в рамках проекта Jabber протоколов было принято в качестве интернет-стандартов RFC в 2004 году под именем XMPP (Extensible Messaging and Presence Protocol). Это семейство протоколов описывает базовый уровень взаимодействия (передача XML-потока, способы идентификации участников обмена), собственно обмен сообщениями и информацией о присутствии (presence), авторизацию и шифрование сообщений и т. д. При общении по XMPP сервер и клиент как бы последовательно пишут по кусочкам единый XML-файл.
В отличие от большинства закрытых IM-протоколов, рассчитанных на взаимодействие клиента только с одним центральным сервером, Jabber/XMPP является децентрализованным: он позволяет связываться двум пользователям, подключенным к разным серверам. В этом смысле Jabber-сеть аналогична e-mail, и для идентификации в ней приняты очень похожие адреса (так называемые JID, Jabber IDentificator), включающие имя пользователя и название сервера (например, v_pupkin@jabber.ru). Запустить собственный Jabber-сервер может кто угодно — достаточно иметь компьютер со статическим IP-адресом или постоянным доменным именем. При этом можно как разрешить взаимодействие с другими Jabber-серверами (federating), так и запретить его, создав собственную частную IM-сеть — последнее свойство особенно ценно в корпоративной среде, где Jabber часто и используется. В этом случае внутренняя IM-сеть компании уже не зависит ни от каких внешних факторов и не пересылает никаких данных за пределы корпоративной сети.
Благодаря открытой и хорошо документированной архитектуре, было разработано множество клиентских и серверных программ для поддержки Jabber. Помимо собственно передачи сообщений от одного пользователя к другому, многие серверы поддерживают так называемые транспорты — шлюзы между Jabber и другими сетями. Например, через такой шлюз пользователь Jabber-клиента может обмениваться сообщениями со своими друзьями в ICQ или AIM. Есть и более интересные применения: отправка писем или SMS-сообщений, общение в IRC-чатах, чтение RSS-лент и даже доступ к хранилищу файлов через Jabber. (Дабы определить, какие транспорты поддерживает тот или иной сервер, в большинстве Jabber-клиентов можно задействовать функцию Service Discovery [рис. 3, клиент Psi].)
Jabber также является расширяемым. Скажем, кроссплатформная программа Coccinella поддерживает совместное рисование на общей «доске» (whiteboard), очень удобное при обсуждении схем, изображений и даже пригодное для игр (рис. 2), — причем никакой специальной поддержки от сервера не требуется, и для использования этой функции достаточно, чтобы ваши корреспонденты использовали тот же клиент. Аналогично можно добавлять другие возможности. Во многом Jabber подтверждает свой статус универсального протокола для двустороннего обмена информацией.