Міжнародна конференція розробників
і користувачів вільного програмного забезпечення

XMPP/Jabber глазами мантейнера jabber.org.by

Vlad 'mend0za' Shakhov,

LVEE 2013

Raise and fall of XMPP technology is analyzed as far as notes are given to the First and Second IM World wars, including Google Talk abolish and protocols incompatibility hell. Why do we need community XMPP servers. Brief history and current state of Jabber.org.by, the first (and only?) public Jabber/XMPP server in Belarus.

Технология XMPP/Jabber

Общие сведения

Протокол XMPP (Extensible Messaging and Presence Protocolрасширяемый протокол обмена сообщениями и информацией о присутствии). Основан на формате XML и изначально спроектирован расширяемым. Стандартизирован в настоящее время в RFC 6120, RFC 6121, и RFC 6122. Плюс расширения (XEP) от XMPP Standarts Foundation .

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

Поддерживаются очевидные для Instant Messenging возможности передачи текстовых сообщений, групповых чатов, серверной истории, передачи голоса и видео, а также файлов.

Существенным отличием от многих других IM является децентрализованность. В XMPP адрес пользователя состоит из двух частей: login@server. Каждый сервер является независимой сущностью, которая договаривается о доставке сообщений с другими серверами посредством протокола XMPP. Этот процесс называется XMPP Federation или XMPP s2s.

Наиболее интересные возможности XMPP

  • серверные шлюзы (“транспорты”) в сети на других технологиях (ICQ, Skype, MSN, SIP, IRC, Email). Включая другие сервера на XMPP. Включая подписку на транспорты других серверов.
  • Шифрование: канал клиент-сервер и сервер-сервер. Также можно шифровать отдельные сообщения открытым ключом.
  • Удалённая передача команд и мониторинг состояния, в том числе управление клиентами и серверами XMPP.
  • Инструменты совместной работы (Abiword, Inkscape, LibreOffice, Coccinella, всевозможные whiteboard)
  • Микроблоггинг
  • Различные сетевые распределённые настольные игры
  • Geolocation
  • Сервисы идентификации : OpenID, OAuth
  • Облачные вычисления

XMPP vs другие IM

Подъём и, одновременно, падение XMPP.

На настоящий момент технология XMPP очевидно устоялась и заняла свои позиции на рынке. Многие популярные интернет сервисы имеют XMPP на борту, в частности Facebook, GTalk, Vkontakte, WhatApp. Большинство бизнес-ориентированных решений или имеют транспорты для подключения к XMPP Federation (Microsft Lync, Cisco Unified Presence), или прямо основаны на XMPP.

С другой стороны, большинство разработчиков корпоративных и открытых решений делает продукты под себя. Выбрасывая или обрезая штатный функционал протокола и широко распространённые расширения.

С серверной стороны – зачастую мы можем видеть отключение s2s (Facebook), невозможность поменять личные данные через VCard (почти все), странное нестандартное поведение аккаунтов и серверов (Google Talk), отключенной server-side history, нет поддержки групп и т.д.

С клиентской – нет поддержки Service Discovery (imo, im+, xabber), и связанной с ней регистрации на транспортах и выполнения команд, нет поддержки конференций, а иногда даже групп пользователей в ростере (imo). Особенно этим грешат многопротокольные клиенты, где XMPP лишь одна из опций.

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

Таким образом, мы можем смело говорить об протоколах, расширениях и програмном обеспечении XMPP как о наборе заготовок “сделай сам”.

Заметки о Первой и Второй Великой Войне среди IM’s.

Первая Великая Война IM началась после взлёта ICQ в конце 90х. Ключевым функционалом того времени являлась передача текста и групповые чаты. В короткое время были созданы конкурирующие продукты: AIM, Yahoo Messenger, MSN и другие, мало отличающиеся функционалом, но абсолютно несовместимые друг с другом и обладающие закрытыми двоичными протоколами.

Со стороны пользователей практически сразу возник спрос на интеграцию множества несовместимых аккаунтов в одну точку входа.

Сформировалось 2 магистральных подхода:

  1. Многопротокольные клиенты. Примеры Miranda, Gaim/Pidgin, Trillian, Empathy/Telepathy.
  2. Сервер выступает в роли интегратора, клиент работает по одному протоколу. Примеры: XMPP, MS Lync, Cisco Unified Meeting Place, IMO.

К середине 2000х все протоколы IM подверглись реверс-инженерингу, и к ним были написаны реализации XMPP-транспортов, что позволило использовать свой XMPP-аккаунт как единую точку входа во все сети, а особенности реализации маскировались.

Вторая Великая Война IM началась после повсеместного внедрения широкополосного доступа в интернет и появившейся возможностью передавать звук (VoIP) и видео. Чуть позже появилась и разрослась ниша мобильных устройств, планшетов и связанные с ними новые операционные системы. Традиционные участники рынка, с трудом пережившие 1-ю войну IM, не смогли оперативно среагировать и начался взлёт новых игроков, таких как Skype.

Мы видим снова ту же ситуацию, что и 10 лет назад. Коммерческие вендоры, стремясь наглухо привязать пользователей исключительно к своим сервисам, снова активно выбрасывают на рынок и продвигают полностью закрытые решения, зачастую не имеющие даже внешнего API. В частности отдельным недобрым словом можно отметить Skype, Viber, WhatsApp. Отмечу однако, что в настоящий момент есть минимум 2 стандартизированных стека протоколов, SIP и XMPP, которые позволили бы обеспечить совместимость решений. Но вендоры указанных сервисов в совместимости категорически не заинтересованы.

Уже сейчас появились признаки того, что конец 2-й мировой войны IM будет таким же, как и для первой. Рынок поделят несколько коммерческих решений. Их протоколы чуть позднее пройдут Reverse Engineering и будут реализованы в СПО как библиотеки. Библиотеки будут подключены к многопротокольным клиентам и XMPP-транспортам.

Проприеритарные игры в открытый XMPP на примере Facebook.

Согласно утечкам информации – архитектура чата Facebook вообще не основана на XMPP. XMPP-gate написан дополнительно и имеет предельно ограниченный функционал.

Facebook via XMPP, текущий статус.
есть:

  • чат с пользователями в Facebook
  • их статус онлайн/оффлайн
  • поддерживает несколько соединений одновременно

нет:

  • S2S
  • сервисов и транспортов
  • групп и управления группами
  • видео и аудио
  • не работает VCard (нельзя публиковать и просмотреть, у пользователей только имя)
  • запутанная схема подключения
  • нельзя публиковать материалы в ленту
  • нельзя подключать новых пользователей
  • нельзя читать ленту

Вывод – годится только для подключения через J2J транспорт к вашему основному Jabber-аккаунту.

Былинный отказ Google Talk.

Попробуем выделить из PR-шума на тему отказа Google от XMPP факты.

От старта в 2006 и к маю 2013 Google Talk стал крупнейшим сервером XMPP, поддерживающим XMPP Federation. Такой результат мог быть достигнут только за счёт навязывания Google Talk в нагрузку к GMail, Android и другим популярным продуктам компании. Голос, видео и звонки на телефонные сети в GTalk появились позже чем в Skype, более того их реализация сейчас мало совместима с остальным XMPP. Т.к. стандарт Jingle 1.0, разработанный по мотивам реализации Google Jingle 0.9 – сам Google не внедрил.

Google не замечен в активной работе над стандартами XMPP (RFC и XEP) кроме Jingle, выпуске клиентских или серверных реализаций под свободными лицензиями. Также серверная реализация GTalk имеет ряд неприятных особенностей, вынуждающие авторов решений на XMPP вставлять костыли на @gmail.com в свои продукты.

Из ощутимого вклада в развитие XMPP можем отметить только:

  • публикацию libjingle (voice, video, streaming, file sharing)
  • программа Google Summer of a Code (GSoC), где регулярно участвует XSF Foundation.

Компания пока не собирается отключать Google Talk и S2S, но уже принудительно производит перевод клиентской базы на Hangout. Путём необратимого обновления GTalk на Hangout на Android и замены функциональности Talk на Hangout во всех своих продуктах (GMail, Google+ и др).

Новый продукт Hangout закрывает пользовательскую базу Google от внешнего мира. И сказка о компании, поддерживающей открытые протоколы, рассеялась. За RSS последовал XMPP.

Детально о произошедшем вы можете прочитать в отличном материале на Habrahabr 3.

Community-driven XMPP сервер.

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

Корневое отличие в том, что на развитие Community-сервера можно повлиять, не покупая целиком компании Google, Viber или Facebook. Влияние через кооперацию с другими участниками: развитие серверного ПО, внедрение и тестирование новых сервисов, диагностику ошибок и проблем.

Сервер jabber.org.by возник и базируется на кадрах из белорусского FOSS-community, как производное Minsk Linux Users Group и сообщества вокруг Linux.by.

В полном соответствии с классическим эссе Эрика Реймонда “Собор и Базар” 2:

  1. операторы пользуются сами большей частью функционала
  2. стараются делать, что просят пользователи, даже если им самим запрошенные функции не нужны
  3. пользователи привлекаются к тестированию и улучшению сервисов
  4. по мере сил взаимодействовуют с upstream (spectrum, pyicqt)
  5. время от времени происходит смена личного состава

Важнейшей технической и социальной ролью любого подобного проекта является преобразование разрозненного набора заготовок (а XMPP определённо им является) в готовый к использованию “коробочный” продукт, с последующей технической поддержкой пользователей. И сокращение дистанции, вплоть до полного её исчезновения, между пользователями и участниками создания сервиса.

К примеру, автор этой статьи в момент старта сервера был обычным пользователем. С второй половины 2006 – постепенно занял позицию резервного администратора, а к 2008 – стал основным оператором сервера. И продолжает им пользоваться ежедневно.

Коммерческие поставщики IM-решений серьёзно ограничены дихотомией “выгодно”-“невыгодно”. Тогда как community-driven проекты могут внедрять даже используемый только одним пользователем функционал.

Сервер jabber.org.by

Сервер jabber.org.by – первый и в настоящее время единственный в Беларуси публичный XMPP/Jabber сервер.

Отличительные особенности:

  1. открытая регистрация
  2. community-driven
  3. широкий набор транспортов (ICQ, MSN, AIM, Yahoo, Twitter, MRIM и несколько транспортов в XMPP под разными именами)
  4. физически расположен в Беларуси (провайдер BASNET).

Опыт поддержки и эксплуатации указанного сервера в течении 9 лет и положен в основу настоящей статьи.

Внутренняя политика: оператор вмешивается в происходящее только тогда, когда деятельность пользователей мешает работать серверу и ставит под угрозу его работоспособность. Всё остальное – на полное усмотрение участников.

Физически со времени старта сервиса располагается по адресу г. Минск, ул. Академическая 25, 5й этаж, в сети Национальной академии наук Беларуси BASNET. Раз в несколько лет перемещается внутри этого здания с сервера на сервер.

Hardware:

  • Контейнер в OpenVZ
  • RAM 2GB гарантировно / до 4GB если другие контейнеры не требуют.
  • 40 GB HDD
  • Intel® Xeon® CPU E5506 @ 2.13GHz .
    Software:
  • Debian GNU/Linux 6.x (oldstable)
  • Ejabberd 2.1.12
  • транспорты на основе сервисов Spectrum2

Вехи развития jabber.org.by

  • конец 2005. Пользователи во главе с С.Антоничевым (cymrak), И. Гречишко (booxter) и Е.Калютой (trenka) по своей инициативе собирают деньги и апгрейдят сервер. Подробности
  • 14.12.2006 Внутренний hackaton проекта по исправлению утечек памяти в PyICQt.
  • 09.03.2007. Эмиграция Mr_Death в Доминиканскую Республику и постепенный отход от дел.
    У него всё хорошо:

  • март 2008. Остановка сервиса и далее переезд на FreeBSD 6.2/jail. Подробнее
  • август 2009. Участие в тестировании под нагрузкой и исправлении утечки памяти в PyICQt 0.8.1.5
  • февраль 2011. Переезд на Debian 6.x/OpenVZ. Переход на сервисы Spectrum.
  • сентябрь 2012-май 2013. Эпическая Борьба с сирийскими ботами.
  • июнь 2013. Потеря пользовательских паролей (неудачный апдейт)

Текущее состояние сервера.

Непосредственно на сервере (учётные записи jabber.org.by и jabber.linux.by) 50-70 активных пользователей онлайн одновременно. Цифра снизилась в 2 раза за 3 года, в основном за счёт оттока в GTalk и Skype.

Транспорты: ICQ – до 150 пользователей онлайн, MSN – до 140 пользоватей, различные варианты J2J – до 100 пользователей.

Среди внешних пользователей транспортов наибольшее количество пришельцев c серверов GTalk, jabber.ru и jabber.org, не имеющих собственных транспортов.

S2S (соединения с другими серверами через XMPP Federation) – 130-150 одновременно.

Литература и ссылки

  1. Сервер jabber.org.by
  2. Eric S. Raymond. The Cathedral and the Bazaar
  3. Santiago26.Без паники! Про то, что сделал Google с XMPP
  4. The XMPP Standarts Foundation

Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 Unported License. license

Назад