Часто при обсуждении мессенджеров, при упоминании XMPP можно услышать слова:
Привет из двухтысячных! Неужели кто-то еще пользуется устаревшим протоколом? В XMPP до сих пор нет доставки файлов, сообщений, синхронизации, красивых клиентов?

Причина мифов о XMPP в том, что многим Jabber известен по мессенджерам из далеких двухтысячных годов и плохой осведомленности о особенностях XMPP. С двухтысячных прошло много времени, протокол продолжил существовать и активно развиваться. Современный Jabber уже сильно не похож на тот, который был раньше.

В этой статье мы рассмотрим для чего создавался XMPP, обсудим в комментариях причины снижения его популярности и каким Jabber стал сегодня

Предыстория


В двухтысячных годах у большинства интернет-гигантов были развернуты XMPP сервера. С одного сервера можно было написать на другой и вот уже казалось, если технологию немного доделать появится e-mail 2.0, универсальный мессенджер для всего Интернета, но тут что-то пошло не так. Компании перестали обновлять XMPP-клиенты. Широкого анонса поддержки XMPP не было. Сервера постепенно стали закрывать передачу сообщений на другие, а после вовсе технология была объявлена устаревшей и поддержку свернули.

Для чего создавался XMPP?


XMPP — расширяемый протокол для обмена сообщениями. XMPP создавался как универсальное средство взаимодействия между разными месенджерами. Предполагалось, что крупные компании могут добавить свои расширения и безболезненно интегрировать свои месенджеры и сервера в единую сеть. XMPP не требует полной совместимости, за исключение базового обмена сообщениями и поэтому никто не может всем навязать определенный стек технологий.

XMPP рассматривался как замена e-mail. Даже вид контакта в XMPP внешне похож на e-mail адрес: user@example.com Ожидалось, правительственные учреждения и компании будут использовать Jabber для быстрого развертывания своих приватных систем коммуникаций. Настройки Jabber серверов позволяют ограничивать доступ к серверу и групповым чатам посторонних или наоборот открывать. На XMPP можно создавать закрытые сети из серверов, чем и воспользовалось NSA. По материалам Сноудена, XMPP используется как внутреннее средство связи:
NSA documents obtained by Edward Snowden and reported on by Der Spiegel on Sunday reveal that the agency communicates internally with Jabber, an open source messaging service used by hackers and activists trying to skirt the NSA's internet surveillance dragnet.
Источник: motherboard.vice.com

Причины падения XMPP


Казалось бы, технология перспективная, но крупные компании быстро потеряли интерес к XMPP. Предполагалось то, что будет работать в идеальном мире, наткнулось на жесткую реальность.
Основной материальный капитал любой крупной интернет-компании — это база пользователей. Многие компании сделали свой бизнес на предоставлении e-mail серверов и закрытых мессенджеров. Если e-mail сервер создать относительно сложно, написать собственный мессенджер еще сложнее, поднять XMPP сервер может любой человек с небольшими познаниями в Linux.

Поддерживать открытый XMPP сервер — это значит дать доступ к клиентской базе множеству мелких конкурентов. Не думаю, что эта ситуация могла понравиться крупным компаниям и инвестирование прекратилось.

«Устаревший и никому ненужный XMPP» как золотая жила! Закрываем S2S, пишем клиенты и зарабатываем миллиарды!


Доподлинно неизвестно, кто использует XMPP в своих продуктах. Некоторые сведения говорят о том, что один из самых популярных мессенджеров — WhatsApp, на старте своего существования использовал (или до сих пор использует) XMPP.
Funny thing is that a couple of year laters in june 2009, Whatsapp team is building its own platform sharing the same vision. Here is a post of Jan Koum on ejabberd mailing list: client access control:
«Hi there,i installed ejabberd today, got it work with adium/ichat and wanted to ask
you all a couple of things» — blog.process-one.net
Причину этого понять легко, потому что «устаревший, избыточный и никому ненужный» XMPP выдерживает 2 000 000 на одной ноде! Если отбросить популизм, в частности речь идет про Ejabberd.

2 000 000 активных соединения. График нагрузки CPU и потребления памяти:



Источник: blog.process-one.net

Если Jabber ID заменить на телефонные номера, подписки сопоставить с нахождением номеров в адресной книге, получаем почти полностью готовый продукт с минимумом затрат.

Ejabber поддерживает множество баз данных и соединений с сервером, не только классическим для XMPP способом, но через Websoсket, HTTP запросы и Ejabberd API. На Ejabberd можно создать мессенджер с тысячами онлайн подключений на дешевом VPS, за пару долларов получаем промышленную отказоустойчивость и стабильность работы. Этим выгодно выделяется Ejabberd, по сравнению с множеством других систем обмена сообщениями, падающих от малых нагрузок.

Модифицированные версии XMPP используют многие проприетарные мессенджеры, для быстрого старта с минимумом затрат. Примеров успешного использования ХМPP серверов, как средства для доставки сообщений много. Знаменитая онлайн игра «EVE Online» недавно перевела чаты на Ejabberd. Мессенджер Cryptocat во многом построен на XMPP. Ходят даже слухи, что великий и могущественный Facebook как-то использует XMPP в своих проектах.

Раньше в XMPP была проблема с доставкой сообщений и синхронизацией устройств, как решена она сейчас?


Для доставки сообщений в XMPP используются расширения:

  • XEP-0313: Message Archive Management — архив сообщений. Используется для синхронизации при плохом интернет-канале, где периодически недоступно одно устройство.
  • XEP-0280: Message Carbons — пересылает сообщения на все онлайн-устройства. Полезен, если отключен архив сообщений в настройках Jabber-клиента.
  • XEP-0198: Stream Management — сервер повторно пересылает сообщения, если не получит уведомления о доставке. Полезен, если отключен архив сообщений в настройках Jabber-клиента.
  • XEP-0160: Best Practices for Handling Offline Messages — хранение сообщений до доставки. Полезен, если отключен архив сообщений в настройках Jabber-клиента.
  • XEP-0333: Chat Markers — Пометка о доставке сообщений.

Раньше в XMPP была проблема с доставкой файлов, как решена она сейчас?


  • XEP-0363: HTTP File Upload — файлы загружаются на сервер и передаются как ссылка. Эту ссылку можно отправить любому, даже тому, у кого нет XMPP.

Как дела обстоят с красивыми клиентами в XMPP?


Понятие красоты у всех разное. Некоторые люди в бьются об заклад и говорят что их любимый Gajim, PSI+ и даже Profany самые красивые и самые лучшие, но на Андроид общепризнанный лидер — Conversations.


Ссылка на другие скриншоты и страницу в Play Маркет. Примечание: В настройках Conversations можно включить статус отображения собеседника на кнопке отправки и статус отображения доставки сообщений. Сервер conversations.im, выбираемый по-умолчанию, платный после 6 месяцев использования. Для постоянного использования лучше выбрать другой XMPP сервер, такой как 404.city. Город 404 — это сервер сообщества киберпанков. 404.city официально занимается поддержкой совместимости со всеми версиями Conversations. Ну или поискать сервер здесь.

На Linux большие надежды подает Dino, но пока он еще находится в бете.



Сайт: dino.im. Пакеты для установки: software.opensuse.org

Какие есть особенности у XMPP? Почему у одних все работает отлично, а другие сталкиваются с трудностями?


  • Многое зависит от того, какой сервер и клиент ты используешь. В XMPP децентрализованная разработка. Серверное ПО, клиенты, расширения стандартов зачастую пишут разные группы людей, не взаимодействующие напрямую между собой. За 20 лет существования появилось много клиентов и серверов. Часть из них уже устарела, не обслуживаемая, созданная любителями. Сервера может поднять любой, у кого есть небольшие познания в Linux. Многие не осознают, что Jabber не один мессенджер и сервер. XMPP похож на e-mail, как есть в e-mail хорошие и плохие сервера, так же и в XMPP есть хорошие и плохие сервера. С клиентами все аналогично.



    Опытные пользователи XMPP, сразу после подключения к серверу, смотрят в настройках Jabber-клиентов возможности сервера.
  • Не используйте OTR шифрование, если не понимаете как оно работает. В OTR необходимо держать только 1 устройство включенным и завершать беседы. Для новичков самым простым и удобным в личных сообщениях и групповых чатах будет OMEMO.

Вывод


XMPP не такой простой и устаревший, каким он кажется. XMPP — это идея объединения всех мессенджеров и сайтов (любой может поднять свой сервер) единым стандартом коммуникации. XMPP — это прекрасный инструмент для создания отказоустойчивых мессенджеров в руках разработчика. Jabber — это неплохая свободная альтернатива WhatsApp и другим мессенджерам, в руках пользователей ознакомленных с особенностями его работы.

XMPP — это тема, которую сложно описать в двух словах. Если Вас заинтересовала моя статья, Вам возможно будут интересны так же эти ссылки:

  • Ejabberd — отказоустойчивый сервер
  • Prosody — легкий в настройки сервер
  • OpenFire — сервер на Java, работает на Windows
  • jc.jabber.ru — русское сообщество пользователей XMPP (можно заходить с любого сервера)
  • Movim — веб-клиент и заодно социальная сеть на основе XMPP (можно заходить с любого сервера)