Главная » Хабрахабр » [Из песочницы] Так ли плох XMPP, как его малюют? Каким Jabber стал сегодня

[Из песочницы] Так ли плох XMPP, как его малюют? Каким Jabber стал сегодня

Часто при обсуждении мессенджеров, при упоминании XMPP можно услышать слова:

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

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

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

Предыстория

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

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

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

Даже вид контакта в XMPP внешне похож на e-mail адрес: user@example.com Ожидалось, правительственные учреждения и компании будут использовать Jabber для быстрого развертывания своих приватных систем коммуникаций. XMPP рассматривался как замена e-mail. На XMPP можно закрытые сети из серверов, чем и воспользовалось NSA. Настройки Jabber серверов позволяют ограничивать доступ к серверу и групповым чатам посторонних или наоборот открывать. По материалам Сноудена, 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.

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
Funny thing is that a couple of year laters in june 2009, Whatsapp team is building its own platform sharing the same vision.

Причину этого понять легко, потому что «устаревший, избыточный и никому ненужный» XMPP выдерживает 2 000 000 на одной ноде! Если отбросить популизм, в частности речь идет про Ejabberd.

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

image

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

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

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

Примеров успешного использования ХМPP серверов, как средства для доставки сообщений много. Модифицированные версии XMPP используют многие проприетарные мессенджеры, для быстрого старта с минимумом затрат. Мессенджер Cryptocat во многом построен на XMPP. Знаменитая онлайн игра Eva Online недавно перевела чаты на Ejabberd. Ходят даже слухи, что великий и могущественный 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.

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

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

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

Какие есть особенности у 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 (можно заходить с любого сервера)

Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Любая интернет-компания обязана тайно изменить программный код по требованию властей

6 декабря 2018 года парламент Австралии принял Assistance and Access Bill 2018 — поправки к Telecommunications Act 1997 о правилах оказания услуг электросвязи. Говоря юридическим языком, эти поправки «устанавливают нормы для добровольной и обязательной помощи телекоммуникационных компаний правоохранительным органам и ...

Трехмерный движок на формулах Excel для чайников

В этой статье я расскажу, как мне удалось портировать алгоритм рендера трехмерных сцен на формулы Excel (без макросов). В принципе, для понимания формул должно быть достаточно знания школьного курса математики (+умение умножать трехмерную матрицу на вектор). Для тех, кто не ...