The Messenger of Everything

    У всех существующих мессенджеров есть свои плюсы и минусы, но каждый из них тянет одеяло на свою сторону из-за несовместимости с другими – и от этого страдают пользователи.


    Единым стандартом мог бы стать XMPP, но он, в отличии от E-Mail, появился относительно поздно и не успел набрать достаточную аудиторию, чтобы корпорации не могли уже от него отказаться. Ведь там быстро поняли, что без удержания аудитории внутри собственной экосистемы много не заработать. Да и кроме того, надо признать, у XMPP было достаточно недостатков из-за обилия расширений, многие из которых, несмотря на свою важность, оставались в экспериментальном статусе, а какие-то и вовсе дублировали друг друга.


    Пожив в «новом дивном мире» десятка мессенджеров в смартфоне, и ощутив все недостатки такого положения дел, мы наконец готовы к чему-то новому.


    И да, нам нужен новый стандарт!


    Прекрасный Мессенджер Будущего удовлетворяет таким требованиям: обеспечение надежности, защищенности, посредством открытой разработки и децентрализованности, переносимость (кроссплатформенность), мультипротокольность (возможность подключения к другим сетям общения) и удобство использования именно пользователем.


    Почему всё так плохо?


    Но сначала, давайте разберёмся, почему бы просто всем не перейти на какой-то один уже популярный == централизованный мессенджер, будь то условный WhatsApp, или, скажем, Telegram, имеющий немалую аудиторию в России.


    Безусловно, централизованное построение позволяет больше зарабатывать владельцам, и тем самым не только окупать разработку, но и вкладывать значительные деньги на рекламу и даже прославление практически отсутствующих функций, таких как, защищённость сервиса, например. Однако, вместе с этим, владелец может внезапно решить закрыть сервис, трактор переехать провод из дата-центра, или просто мессенджер может быть забанен на территории определенной страны. Не обязательно по политическим причинам, может быть, и по требованию условных правообладателей, может быть множество причин. Хорошо, если несмотря на ничтожный размер рынка, Telegram с переменным успехом продолжает работать в России, но это связано с личными счётами владельца, а в случае блокировки того же WhatsApp – вряд ли Facebook будет вкладывать значительные средства для обхода блокировок.


    Сложно говорить сразу за все централизованные мессенджеры, собирая под одну гребёнку. Есть абсолютное зло с проприетарными клиентом, сервером и протоколом, которые даже работают только на нескольких самых популярных платформах и не имеют никакого шифрования. Есть и относительное добро, например, мессенджер Signal, который полностью открыт, но сервера не поддерживают федеративный режим, из-за чего все зависят от центрального сервера со всеми вытекающими последствиями. Здесь следовало бы проводить классификацию по иному принципу, но это выходит за рамки настоящей статьи.


    Хорошо, почему бы тогда не перейти на что-то федеративное. Например, тот же Matrix. Не буду говорить про HTTP Long Polling, плохую отказоустойчивость серверов и откровенную гиковость интерфейса клиентов – всё это решаемые задачи, пусть и не тривиальные (на глобальном уровне это ничего не меняет). Нравится, что разработчики учли опыт XMPP и разрабатывают единые спецификации вместо кучи независимых XEP-ов, но это лишь один из недостатков XMPP. Другой проблемой является классическое устройство федеративной сети, когда мы вынуждены выбрать какой-то сервер и доверять его владельцу, что он будет обеспечивать работоспособность сервера и не будет его закрывать. А в случае очередного выхода из строя дата-центра, мы окажемся отрезанными от мира, не имея возможности общаться с прошлого аккаунта на другом сервере. Даже если вы создадите новый аккаунт, и каким-то способом перенесёте на него список своих контактов со старого сервера, при общении вам придётся снова каким-то образом подтвердить, что это действительно вы, а не кто-то, представляющийся вами.


    В этом случае, может быть, вовсе отказаться от серверов? Существует некоторое количество мессенджеров, основанных на безсерверной технологии. Частным случаем здесь выступает популярный в узких кругах Firechat, использующий mesh-сеть из wifi и bluetooth устройств для общения пользователей. Этот мессенджер действительно хорошо работает, когда все пользователи сконцентрированы, например, на площади. Но это довольно специфическая ситуация и даже если вообразить ситуацию, когда каждый житель планеты установит приложение – это создаёт массу других проблем от разрывов mesh-сети по географическим признакам и скорости обмена сообщениями с дальними пользователями, до объёмов необходимых хранимых данных на устройствах. Но, наверное, данный мессенджер выбивается из общей массы и в нашем сравнении лишний. Он скорее экспериментальный, чем ориентированный на конкретного пользователя.


    Существуют и такие проекты, как Tox, пытающиеся реализовать мессенджер на технологии p2p. Такой подход позволяет не беспокоиться за сохранность сервера, и заблокировать такой мессенджер практически не представляется возможным. У Tox огромное множество проблем, но это очень интересный проект, имеющий свою нишу. Нет смысла перечислять конкретные недостатки Tox, ведь проект развивается и несмотря на то, что p2p сервисы значительно сложнее разрабатывать, если поставить такую задачу, можно придумать различные интересные архитектуры построения такой сети: со своими достоинствами и недостатками, различными требованиями к ширине интернет-канала и объёму пространства на устройстве, с супер-нодами, одновременным входом с разных устройств и даже доставкой сообщений offline. Но общим всегда будет значительная избыточность трафика по сравнению с клиент-серверной архитектурой и повышенный разряд аккумулятора на мобильных устройствах из-за необходимости постоянного удерживания большого числа соединений и различных вычислений.


    Таким образом, хоть p2p и является интересной технологией, но окажется неэффективной при необходимости, скажем, отправить свои координаты спасателям, находясь где-то на дереве в тайге с почти отсутствующем интернет- соединением и 1% заряда аккумулятора.


    Как это исправить?


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


    Итак, чтобы наш с вами мессенджер с минимальными необходимыми ресурсами работал на мобильных устройствах – будем использовать клиент-серверную модель, где максимум вычислительных операций и требовательных к трафику ресурсов сосредоточено на серверах, а на стороне клиента происходит расшифровка данных и отображение пользователю.


    Адресация


    Каждый пользователь получает свой адрес в формате E-Mail, или XMPP, то есть никнейм@домен. Но в отличии от вышеупомянутых сервисов, указание домена не несёт такую же важную адресную роль в данной архитектуре.


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


    В интернете домены стоят денег, что пусть не исключает массовую регистрацию, но значительно уменьшает её масштабы. В централизованных сервисах часто вход через привязку к мобильному телефону, что также не является исключающим фактором, но и сим-карты тоже не из воздуха берутся! И в связи с этим, кстати, интересно, как с этим собираются бороться в https://toxme.io/ – сервисе для Tox, позволяющем ассоциировать длинные ключи с коротким ником. Не вижу причин, почему они не могут быть заспамлены миллиардами мусорных никнеймов.
    Кроме того, домен может иметь смысл для различных аккаунтов для дома и работы. Или для организации внутрикорпоративной сети.


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


    С точки зрения серверного ПО, если запрашивается пользователь по его отпечатку ключа, сервер производит в своей таблице поиск соотнесённого с ним логина, если запрашивается сразу по логину, соответственно, этот шаг пропускается. Затем производится соответствие логина и адреса сервера, на который в данный момент времени делегирован аккаунт. Если таких записей нет – считается, что за аккаунт отвечает тот сервер, который указан после @ в логине.


    Профиль пользователя


    В клиентском приложении хранится профиль пользователя, представляющий:


    • Полный логин пользователя
    • Список дублирующих серверов
    • Публичный и приватный ключ пользователя
    • Информация о профиле, такая как список контактов, настройки чатов и профиля пользователя

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


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


    Отсутствие необходимости запоминания пароля (впрочем, клиент позволяет зашифровать приватный ключ) как упрощает взаимодействие с мессенджером, так и создаёт риск потери своих ключей. Чтобы этого избежать – рекомендуется дублировать их на другие устройства пользователя. Ничего не мешает чатиться под одним аккаунтом одновременно с нескольких устройств, единственное ограничение – все они должны быть подключены к одному серверу, иначе архитектура станет слишком запутанной. Но вряд ли это большой минус.


    Дополнение для браузеров


    У многих продуктов уязвимая точка – это веб-приложение. И у этого решения, безусловно, масса недостатков. Такой чат не будет загружен, пока вы находитесь оффлайн, затем потребуется ожидать полной загрузки, а ещё адрес может быть заблокирован, или сервер может упасть. Вручную перебирать адреса – не особо хотелось бы.


    А ещё не исключен вариант, что злоумышленник взломает веб-приложение и встроит код, который будет сливать все ваши данные – уже после того, как другая часть приложения их расшифрует для вас, а вы об этом даже не узнаете.


    В связи с этим я предлагаю отказаться от веб-приложения как такового, а предлагать установить дополнение для браузера, в котором все эти недостатки по определению отсутствуют.


    Кроме того, отсутствие необходимости владельцам серверов настройки веб-клиента снизит порог входа для создание своего сервера. Каждому домохозяйству – по собственному серверу!


    Транспорты


    Кому нужен мессенджер, в котором не с кем общаться? Есть интересные проекты необычных мессенджеров, но проблема отсутствия аудитории не позволяет им набрать хоть какую-то популярность. В результате чаще всего мессенджеры с большой аудиторией получают ещё больше аудитории, а мессенджеры с малой – её теряют. И чаще всего это положение может изменить только значительные вложения в рекламу.
    Ну и кроме того, такое положение вещей требует установки очередного мессенджера, когда нужно срочно связаться с кем-то, кого нет в других сетях.


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


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


    Криптография


    Безусловно, децентрализованное устройство сети никак не позволяет обойтись без шифрования всех передаваемых данных, ведь мы не можем быть уверенными, что даже в доверенном нам сервере не встроена какая-то закладка, сливающая все данные.
    Ранее уже было указано, что для авторизации используется ключевая пара пользователя, все отсылаемые другим пользователям сообщения также подписываются закрытым ключом отправителя и шифруются открытым ключом принимающей стороны.


    Здесь нет ничего нового, используются стандартные средства шифрования GPG.
    Пока не решён вопрос с шифрованием в группах, но, вероятно, можно воспользоваться механизмом, используемым в Signal.


    Что уже сделано


    На данный момент нами уже создан сервер на Python с использованием Tornado, в котором реализованы базовые функции мессенджера, существует слегка замороженная веб-версия, которую следует преобразовать в дополнение для браузера, есть библиотека на Rust, на основе которой функционирует клиент с интерфейсом на QML.


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


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


    → Вот репозитории, в которых содержатся наши наработки

    Поделиться публикацией
    Комментарии 86
      +7
      Помните тот комикс XKCD про то, как у нас есть 16 стандартов, это недопустимо, нужно все унифицировать, и в итоге у нас появляется семнадцатый?

      Мне кажется, этот комикс можно переделать в стиле: «у нас есть сто статей про необходимость создания единого стандарта мессенджеров, это недопустимо»… и т. д.
        +2
        Вообще-то в оригинале стандартов было 14. Потом, когда картинка стала мемом, начали говорить про «15 стандартов». Теперь вот ваша версия…
        Видимо, авторы действительно провидцы!
        0
        Наконец-то, правильный мессенджер.) Казалось бы, ничего сложного, такая архитектура — первое, что приходит в голову, когда думаешь об этом, тем не менее, до сих пор такого никто не написал.

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

        Еще хорошо бы вынести куда-то формальное описание протокола, чтобы можно было написать альтернативного клиента или сервера.)

        Удачи в разработке.) К сожалению, совершенно не родной для меня стек технологий, так что поучаствовать не смогу, но, надеюсь, что у Вас все получится.)
          0
          Лично на мой взгляд XMPP похоронило отсутствие передачи аудио- и видеоконтента. Были куча разнообразных решений для этого, но они не были совместимы между собой.
            +3
            Как мне кажется, первоначально XMPP похоронило появление WhatsApp (а потом Viber, iMessage и Telegram), у которых было колоссальное, невиданное доселе преимущество: автоматический поиск и добавление контактов по номеру телефона прямо из адресной книги. Пользователи вздохнули с облегчением, что теперь не надо поддерживать отдельный список контактов, и забыли про все мессенджеры довацаповой эпохи.

            Дальнейшее нарастающее технологическое отставание, про которое вы написали (опять же, на мой взгляд), было уже следствием массовой миграции личной переписки в другие мессенджеры и угасшего из-за этого интереса к XMPP. Более того, сама идеология XMPP-сети не позволяет разбить камень, который утащил её на дно.
              0
              Как мне кажется, первоначально XMPP похоронило появление WhatsApp

              При этом WhatsApp сам сделан на XMPP
                0
                Да, в том-то и ирония, что сам по себе протокол вполне жизнеспособен, нежизнеспособна лишь та его часть, которая называется «федерация». Попытки создать один большой мегасервер на XMPP были и до этого (достаточно вспомнить хотя бы Google Talk), но именно WhatsApp успел утянуть одеяло на себя в период появления первых настоящих смартфонов.

                Концепция XMPP как сети разрозненных слабо совместимых друг с другом серверов была в любом случае обречена: невозможно двигать вперёд технологию, когда она реализована в виде сети гетерогенных серверов без общего владельца; она рано или поздно застывает в своём развитии, как застыла телефонная связь, электронная почта, и т. п.

                Отдельный контакт-лист тоже не имеет смысла при интеграции со смартфоном, там уже есть адресная книга. Если бы не WhatsApp, рано или поздно тот же Гугл бы добил свой вариант единого обособленного мегасервера с учётками по номерам телефонов, и мы бы получили то же самое.
                  0
                  XMPP не застрял в развитии. Идет активная разработка. Linux пакеты в дистрибутивах идут с отставанием 3-5 лет (дебиан) -10 лет (centos) от текущей разработки. Пока ОС поддерживаются не спешат обновлять сервера
                    0
                    В том и дело, что физически невозможно заставить десять тысяч админов обновить сервера (и пятьдесят команд разработчиков — обновить клиенты), чтобы у всех заработала какая-то новая фишка типа end-to-end шифрования или голосовых звонков. Ни сейчас, ни в будущем, даже если в репозиториях будет лежать всегда свежая версия. Сама идея слишком утопична, чтобы выживать в жестокой конкурентной борьбе.

                    Понятное дело, что разработка ведётся, и это весьма неплохо. Но реальные пользователи этого не видят и ещё долго не увидят. А каждое обновление монолитных решений приносит новые функции всем и сразу.
                      +1
                      Я ему это уже почти месяц пытаюсь объяснить, бесполезно
                        0
                        Технологии со временем меняются. Потом появиться Google и объявит стандартную технологию устаревшей. Facebook скажет, что ему нужно расширение, которое больше никому не нужно и т.д.
              0

              Если не взлетит — попробуйте сбоку зайти: создать клиент, который выглядит как мессенджер, но по сути почтовый клиент. У кого он установлен — те общаются как в мессенджере (видят только сообщение и от кого оно), у кого нет — те получают обычные емэйлы через обычные каналы, и отвечают обратным емэйлом. Параллельно, прога-клиент пусть сливает номер мобилы хозяина в общую базу с согласия пользователя, чтоб потом другие люди, дав клиенту доступ к телефонной книге, автоматом получили адреса чужиех емэйлов, на которые можно писать для общения (это будет как в Viber'e, который показывает у кого из вашей тел.книги есть вайбер).
              Первое время можно ничего не шифровать, т.к. почта уже шифрована.

                0

                Забыл добавить — все люди сидят в разных мессенджерах, но у всех емэйл, именно это у всех общее.

                  0
                  Greylisting всё портит.
                  0
                  создать клиент, который выглядит как мессенджер, но по сути почтовый клиент

                  Delta chat
                    0

                    Проверил — то что нужно! Наконец-то реализовали то о чём я и сам думал

                  +2
                  И при этом ничего не сказано про стикеры. Не взлетит этот мессенджер )
                    0
                    Много лет вынашиваю планы по созданию идеальной IM, согласен с большинством приведенных вами свойств которыми такой IM должен обладать, но хочу немного порассуждать.
                    Во-первых не стоит разделять узлы сети на клиенты и серверы. Хотите чтобы ваша федерация расцвела — максимально снижайте порог входа: каждый клиент (по инициативе пользователя) должен уметь переключаться в режим сервера. Любой клиент на любой платформе в любое время. Например клиент запущенный на домашнем ПК в режиме сервера сможет предложить своему пользователю (или любому желающему) на мобильном клиенте сервисы авторизации, архивирования, транспортов и push-уведомлений. Без требования специальных навыков и необходимости разворачивания и поддержания выделенного сервера.
                    Во-вторых ни в коем случае нельзя делать обязательной представление никнейма (идентификатора) с привязкой к домену. Ваша сеть станет зависимой от существующей инфраструктуры регистрации и поддержки доменных имен — это точка отказа.
                      0
                      По первому — полностью согласен, нужно максимально упростить создание собственного сервера, а вот про домены — это спорно.
                      Если не привязываться к доменам — непонятно, как удобно производить адресацию к пользователю. Человек должен иметь возможность простым способом предоставить свои контакты, не только публикацией своего ключа.
                      А если использовать глобальные никнеймы — как уже писал, высока вероятность, что очень скоро эта база будет замусорена, и придётся либо очень-очень длинные никнеймы использовать, либо привязываться к номеру телефона, чего тоже не очень хочется.
                        0
                        Разумеется удобный способ идентификации по домену должен быть. И даже по номеру телефона. Я говорю лишь о том, что это не должно быть обязательным. Основным идентификатором должен быть публичный ключ конечно же. Мне нравится идея подписывания закрытым ключом всех этих никнеймов в доменах или номеров телефонов со сроком действия подписи либо с возможностью отзыва — такой механизм позволит безопасно использовать удобные идентификаторы и при желании делать их невалидными в случае утраты доверия к домену, потере сим-карты или при любых иных форс-мажорных обстоятельствах.
                      0
                      Извиняюсь конечно, но над кодом вам нужно серьёзно поработать.

                      scaro-daemon: комменты на русском, захардкоженные в cpp файлах пути к ключам, чтение из файла с ключом напрямую по имени файла (gpgme/qtcrypto?), пишете напрямую в string::c_str(), неуместные названия файлов (dalek, skaro… я сам люблю dr who, но лучше бы названия несли смысловую нагрузку). ИМХО стоило хоть чуть-чуть причесать код прежде чем выходить на хабр со статьёй.
                        –1
                        Спасибо за отзыв, но код был скорее с целью показать, что есть какой-то прогресс в этой области, что это не только одни идеи.
                        0
                        Есть и другой путь: rambox.pro
                          0
                          Это совсем не путь, это всего лишь браузер. Попробуйте представить браузер с полдюжиной веб-приложений на мобильнике, постоянно работающих в фоне. Вряд ли аккумулятор будет этому рад. Плюс к этому, объединить пользователей разных сетей в одном чате или хотя бы в одном ростере не получится.
                          0
                          У всех существующих мессенджеров есть свои плюсы и минусы, но каждый из них тянет одеяло на свою сторону из-за несовместимости с другими – и от этого страдают пользователи.

                          Эта проблема не нова и у неё давно есть решение — мультипротокольный клиент.
                          И на эту тему есть куча отличных программ для настольных систем.
                          А вот для мобильных — похоже, что ещё нет.
                          Если вы ищете свободную нишу, которая может выстрелить, то вот она.

                            0

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

                              0
                              А вот для мобильных — похоже, что ещё нет.

                              А ведь были славные времена Jimm Multi на J2ME...)

                              0
                              Нравится, что разработчики учли опыт XMPP и разрабатывают единые спецификации вместо кучи независимых XEP-ов, но это лишь один из недостатков XMPP.

                              Если какому-либо мессенджеру понадобиться функция не включенная в общею спецификацию? Появиться несовместимый форк, поэтому в XMPP пошли по пути расширений.
                              HTTP Long Polling

                              В ХМPP есть BOSH. Это работает по http
                              В этом случае, может быть, вовсе отказаться от серверов? Существует некоторое количество мессенджеров, основанных на безсерверной технологии.

                              Вот сразу WhatsApp возмется и согласиться переходит на без серверные технологии. WhatsApp скорей засудится до последнего или уйдет на рынок другой страны, чем перейдет на без серверную технологию.
                              Потом без серверные технологии, страдают проблемами работы на мобильных устройствах.Мобильный становится этим сервером и начинает страшно поедать траффик и батарею, так же проблемой с доставкой сообщений в оффлайне.
                              Кстати, ХМПП сервера можно устанавливать и на домашних ПК пробрасивая домен в торе, получается та самая «безсерверность»
                              Есть и относительное добро, например, мессенджер Signal, который полностью открыт, но сервера не поддерживают федеративный режим,

                              В ХМПП шифрования сигнала (ОМЕМО), ХМПП это уже и есть образно открытый Сигнал
                              Здесь нет ничего нового, используются стандартные средства шифрования GPG.
                              Пока не решён вопрос с шифрованием в группах, но, вероятно, можно воспользоваться механизмом, используемым в Signal.

                              И то и другое есть в XMPP

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

                              И это тоже есть в ХМПП

                              Единственное чего нет в ХМПП это хорошего клиента под декстоп с звонками. Если бы Вы это сделали Вас бы все спасибо сказали. Сейчас Вы изобретаете просто очередной велосипед
                                0
                                Единственное чего нет в ХМПП это хорошего клиента под декстоп с звонками. Если бы Вы это сделали Вас бы все спасибо сказали.
                                Разве под мобильники есть хороший клиент со звонками? Я припоминаю только встроенный в maemo os (на n900 даже видеозвонки через jabber работали!), но он уже неактуален. Авторы psi много лет назад начинали интеграцию jingle в свой клиент, но что-то никто спасибо им не сказал. Похоже, именно поэтому работа не была доведена до конца. Вместо спасибо в сообществе был запущен по сути форк psi-plus с плюшками типа жуйк-интерграции и тому подобной гиковой непотребщиной.
                                Кроме того, на деле выясняется, что для работы какого-либо расширения XEP (например, для звонков), это расширение должно поддерживаться:
                                1) клиентом отправителя,
                                2) сервером отправителя,
                                3) сервером получателя,
                                4) клиентом получателя.
                                По причинам, описанным выше Archon, выясняется, что достичь такой гармонии очень сложно. Одного десктопного клиента со звонками, которого, к слову, не смогли сделать за десятилетие, тут будет недостаточно. Вот и получается, что проще похоронить xmpp как протокол коммуникаций, несоответствующий современным потребностям общества.
                                  –1
                                  Разве под мобильники есть хороший клиент со звонками?

                                  Хороший клиент есть, со звонками нет. В Conversations есть аудио и видеосообщения, но это не совсем звонки.
                                  Кроме того, на деле выясняется, что для работы какого-либо расширения XEP (например, для звонков), это расширение должно поддерживаться:

                                  Для p2p звонков достаточна поддержка клиентом. Нет денег разработку
                                  Одного десктопного клиента со звонками, которого, к слову, не смогли сделать за десятилетие, тут будет недостаточно

                                  Почему же не сделали? Сделали и даже несколько, но звонки оказались (в то время) оказались невостребованными. Поддержку звонков забросили и сейчас старые библиотеки для звонков не совместимы с новым кодом. Это слышал неоднократно от разработчиков PSI и Gajim
                                    –1
                                    Это при популярности скайпа-то — и не востребованы? Попахивает бредом.
                                      –1
                                      Так говорили разработчики PSI+ и Gajim
                                        –1
                                        Gajim не пробовал, но Psi+ при попытке позвонить очень часто падал. Естественно за падения никто спасибо не скажет :\
                                +1
                                Начал читать и чуть не захлебнулся от количества воды. Можете tr;dl для сухопутных что вы делаете? Новый-модный-молодежный xmpp к которому хотите прикрутить транспортами популярные ныне im? Ну ок тогда подумайте почему к этим im не пишут транспорты под xmpp уже сейчас(ответ: они в большинстве своем анально огороженые и не любят сторонние клиенты).
                                  0

                                  А чем https://tox.chat/ не понравился? Можно точнее?

                                    +1
                                    Про p2p-мессенджеры два абзаца написаны конкретно на примере tox'а. Опишу своё понимание недостатков p2p технологии в сравнении с клиент-серверной.
                                    1. Необходимость быть по сути полноценной нодой сети как компьютеру, так и мобильнику плохо сказывается на мобильных устройствах: подобная работа приводит к большому расходу трафика и большому расходу заряда аккумулятора.
                                    2. Поскольку каждое устройство представляется самостоятельным узлом сети, между несколькими устройствами одного пользователя сложнее организовать перенос идентификационного ключа, контактов, истории.
                                    3. Большинство пиринговых мессенджеров для передачи сообщения требуют, чтобы оба контакта одновременно находились в сети.
                                    Да, для всего перечисленного в теории есть свои решения, но на практике проще переложить большинство функций — хранение ключей (кроме e2e), контакт-листа, истории — на постоянно работающий сервер, которому доверяешь.

                                    В любом случае e2e-шифрование требует от пользователя некоторого понимания происходящих процессов и дополнительных телодвижений, иначе страдает безопасность. Получается, tox ставит своего пользователя перед выбором «удобство или безопасность», совершенно игнорируя пользователей, для которых шифрование не является жизненно необходимым.
                                      0

                                      Ок, это уже понятнее… Спасибо.

                                    0

                                    Спеки-то есть? Реализации можно сотню раз переписать, а протокол намного более важная вещь, дайте ссылку на почитать описание (в репозиториях сходу не видно)

                                    0
                                    Например, тот же Matrix. Не буду говорить про HTTP Long Polling, плохую отказоустойчивость серверов и откровенную гиковость интерфейса клиентов – всё это решаемые задачи, пусть и не тривиальные. Другой проблемой является классическое устройство федеративной сети, когда мы вынуждены выбрать какой-то сервер и доверять его владельцу, что он будет обеспечивать работоспособность сервера и не будет его закрывать.
                                    Разрешите замолвить пару слов про Matrix. HTTP Long Polling там вряд ли в ближайшем будущем заменят, это минус. Плохую работу серверов авторы объясняют использованием Python и поэтому параллельно ведётся работа над сервером на Go. Что касается привязки аккаунтов к доменам и сложности перехода с одного домена на другой, то по этому вопросу высказывалось много идей и предложений. Внезапно некоторая помощь пришла от GDPR, для соответствия которому было решено в будущем отвязать учётки от mxid (это будет лишь ещё один идентификатор наравне с номером телефона и адресом e-mail). И вот тут появляется реальный шанс, что после перехода на новую (несовместимую с текущей) спецификацию учётную запись можно будет привязывать к нескольким mxid на разных серверах!
                                      0

                                      Интересно. Хотелось бы узнать подробнее об планах переносимости профилей в matrix.

                                      –1
                                      Плохую работу серверов авторы объясняют использованием Python и поэтому параллельно ведётся работа над сервером на Go.

                                      Могли бы просто использовать Ejabberd, но нет им же нужны инвестиции на разработку, а если это не «уникальный продукт» денег никто не даст. Это и огорчает, делают очередной несовместимый стандарт с меньшей функциональностью и на собственных велосипедах. Матрикс можно было создать используя фиксированный набор хепов (да, есть и такой хеп, объединяющей другие хепы) и написав клиент со звонками
                                        0
                                        Предлагаю взглянуть на сравнение xmpp и matrix свежим взглядом, не разглядывая историю развития этих проектов. Что такого особенного имеется в xmpp, что ни в коем случае нельзя браться за другие свободные протоколы? Кроме этой самой многолетней истории, разумеется. В чём, по-вашему мнению, заключается «большая функциональность» xmpp в сравнении с матрицей?
                                        Теперь представьте меня в 2016-м. Я с семьёй выезжаю на отдых, там выясняется, что для совместной коммуникации среди мобильных xmpp-клиентов не могу найти ни одного достойного кандидата, способного сравниться по функциональностью со среднестатистическим ватсапом: простого для приглашения новых участников в совместные чаты, со звонками, с обменом контентом. Уже после возвращения домой я узнаю про riot.im, в котором из коробки есть всё, что нужно: аудиозвонки, видеозвонки, видеоконференции, синхронизация истории сообщений между всеми твоими клиентами, плавная подгрузка истории чата хоть до самого начала комнаты, причём всё это вне зависимости, используете ли вы с собеседниками андроид-клиент и/или веб-клиент. Это вы называете «меньшей функциональностью»? Если б разработчики матрицы пилили xmpp, вряд ли бы мы получили такую же функциональность даже к сегодняшнему дню.
                                          –1
                                          Что такого особенного имеется в xmpp, что ни в коем случае нельзя браться за другие свободные протоколы?


                                          Не правильно поставлен вопрос. Различие между Matrix и XMPP идеалогические:

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

                                          — В XMPP некоммерческое сообщество
                                          — Matrix.org и Riot — коммерческая организация

                                          — В XMPP слабые клиенты на декстопах и хорошие сервера
                                          — В Матрикс паршивые сервера и хороший клиент Риот.им

                                          — XMPP ставит цель объедение мессенджеров
                                          — Matrix просто мессенджер

                                          В остальном Matrix переписанный ХМPP и весьма плохо переписанный. Если бы не клиент Riot на Электроне и огромные вложение на рекламу и разработку Matrix бы загнулся.

                                          Матрикс вообще бы не появился, если бы его разработчики знали что Ejabberd поддерживает вебсокеты. Они захотели написать простой клиент для XMPP сервера, но поняли как его настроить и приделать к нему Электрон)
                                            0
                                            Не правильно поставлен вопрос.
                                            Вы ведь сами сказали про меньшую функциональность, вот я и уточняю, какая полезная для современного общества функциональность реализована в xmpp и отсутствует в matrix.
                                            В XMPP любой может добавить расширение
                                            Добавить куда: на бумажку, на кладбище XEP'ов? Чтобы в итоге добавить расширение простым пользователям, надо получить одобрение неограниченного числа ограниченных групп лиц (разработчиков и админов многочисленных серверов и клиентов). Уж куда проще сделать pull request в git и убедить одну ограниченную группу адекватных людей в полезности своего дополнения.
                                            Matrix.org и Riot — коммерческая организация
                                            Если под словом «коммерческая» Вы понимаете получение прибыли, спешу огорчить: прибылей они не получают, живут за счёт спонсоров, в т.ч. донатов от сообщества. При этом сидят на крючке GPL: если скажут «хватит, теперь будем зарабатывать на всём подряд», то в этот момент желающие могут сделать форк.
                                            В Матрикс паршивые сервера и хороший клиент Риот.им
                                            Вы сами-то видели мир матрицы или судите исключительно по комментариям в этом треде?
                                            XMPP ставит цель объедение мессенджеров
                                            Помимо установки цели важно уметь достигать её. Если за десятилетие цель не достигнута, а ушла ещё дальше, это либо недостижимая цель, либо выбран неправильный путь её достижения.
                                            К слову, матрикс тоже объединяет, но только при условии, что другая сторона не против такого объединения и предоставляет какие-нибудь механизмы для этого. В одной комнате можно собрать пользователей matrix, irc, slack, telegram, но там не будет пользователей icq, whatsapp, viber, покуда эти сети заявляют о своей огороженности. К сожалению, работоспособного в обе стороны моста «matrix room <-> jabber conference» на сегодня нет, хотя нет и видимых препятствий для его реализации.
                                              –1
                                              Вы ведь сами сказали про меньшую функциональность, вот я и уточняю, какая полезная для современного общества функциональность реализована в xmpp и отсутствует в matrix

                                              Расширяемость. Отказоустойчивость. Независимость протокола
                                              Если под словом «коммерческая» Вы понимаете получение прибыли, спешу огорчить: прибылей они не получают, живут за счёт спонсоров, в т.ч. донатов от сообщества.

                                              Вы считаете, что жить за счет спонсоров не равно пололучать прибыль?)
                                              Вы сами-то видели мир матрицы или судите исключительно по комментариям в этом треде?

                                              Поставьте Matrix сервер, тогда поймете о чем я говорю. В XMPP многие пробовали ставить публичные сервера Matrix и возращались лишь с матерными словами.
                                              100 человек в онлайне и занято 10 GB RAM вполне реальная ситуация для Matrix серверов из-за особенностей протокола. В XMPP тоже количество человек займет ~ 30Mb RAM
                                                0
                                                Расширяемость. Отказоустойчивость. Независимость протокола
                                                Да, это будут, конечно же, убедительные аргументы в дискуссии FOSS vs Proprietary service, если таковая где-то возникнет. Это я к тому, что современному среднестатистическому пользователю мессенджеров подобная «функциональность» по боку.
                                                К сожалению, работоспособного в обе стороны моста «matrix room <-> jabber conference» на сегодня нет
                                                Прошу прощения, был не совсем прав. После этой моей фразы мне указали на matterbridge, который соединяет много чего через присутствующего в чате бота. Буквально через час я на своём сервере организовал связь для комнаты и конференции UfaLUG, к примеру.
                                                  –1
                                                  И у меня снова возникает вопрос: Почему в свободном и децентрализованном Matrix снова ссылка на Riot? Если в XMPP есть разнообразие клиентов и серверов, все кого не спросить про Matrix, говорят что они на сервере matrix.org и клиенте riot. Где здесь хваленная децентрализация?
                                                  (Если отбросить маркетинговую пыль в глаза) В XMPP нет одного сервера, которого можно было бы назвать безусловным лидером по числу пользователей или абсолютного хмпп-клиента, которым все пользуются
                                                    0
                                                    Мы уже выяснили, что matrix в настоящее время создаётся ограниченной группой лиц и что это хорошо. Так уж сложилось, что сервер они у себя держат только один (зачем им второй?) и все три своих клиента (web, android и ios — они разные по коду) они решили назвать одним именем riot для лучшей узнаваемости. Хорошим риот Вы назвали сами, на этот счёт существуют и другие мнения. Во всяком случае все три риота лучше любого другого клиента на данный момент времени, потому что все остальные разрабатываются только один-два года.
                                                    Но раз уж возник вопрос по конкретной ссылке, отвечу на него. Если вдруг Вам или кому-то другому не нравятся домены matrix.org и riot.im или они заблокированы по приказу надзорных органов, вот вам ссылка на эту же самую комнату на моём личном сервере. Но я ж не буду тут свой сервер рекламировать, потому дал ссылку на тот, что более популярен. Да-да, важно обратить внимание, это абсолютно та же самая комната! Любой пользователь любого другого сервера при входе в комнату автоматически реплицирует её на свой сервер, именно так работает «хвалёная децентрализация». Если доступ к истории чата открыт для всех, тогда цепочка событий в комнате копируется целиком вплоть до самого основания комнаты. При желании пользователь может задать алиас на своём сервере, чьего-либо разрешения на это не требуется. В последнем случае комната продолжит жить и оставаться доступной для новых участников, даже если все исходные сервера помрут. MUC'ам далеко до такого, как Вы понимаете.
                                                      –1
                                                      Мы уже выяснили, что matrix в настоящее время создаётся ограниченной группой лиц и что это хорошо.

                                                      Нет. Для мессенджера позиционирующего как децентрализованный, это просто отвратительно и плохо. Где здесь децентрализация, если абсолютное большинство на одном сервере или клиенте?
                                                      Так уж сложилось, что сервер они у себя держат только один (зачем им второй?) и все три своих клиента (web, android и ios — они разные по коду) они решили назвать одним именем riot для лучшей узнаваемости.

                                                      Это один клиент на электроне, но в сборках под разные ОС
                                                      Да-да, важно обратить внимание, это абсолютно та же самая комната! Любой пользователь любого другого сервера при входе в комнату автоматически реплицирует её на свой сервер, именно так работает «хвалёная децентрализация».

                                                      В ХМPP все сделано так же, но большие сервера не жрут гигабайты оперативной памяти и десятки ядер процессора.
                                                      Если доступ к истории чата открыт для всех, тогда цепочка событий в комнате копируется целиком вплоть до самого основания комнаты

                                                      Другими словами, в Матрикс нет шифрования в комнатах
                                                        –1
                                                        Это один клиент на электроне

                                                        Глянуть андроид-версию риота вы даже не пытались?


                                                        В ХМPP все сделано так же

                                                        По запросу «ejabberd muc replication» ничего внятного не гуглится (а кластеры это не то), где я могу почитать про репликацию комнат в XMPP?


                                                        в Матрикс нет шифрования в комнатах

                                                        А нужно ли оно вообще?

                                                          0
                                                          Глянуть андроид-версию риота вы даже не пытались?

                                                          Электрон создает три версии программы под разные ОС. Одну под андроид. Другую по Linux. Третью под продукцию апле
                                                          По запросу «ejabberd muc replication» ничего внятного не гуглится (а кластеры это не то), где я могу почитать про репликацию комнат в XMPP?

                                                          Лично вам, я не чего обьяснять не буду. Вы просто тупо тролите. Я вам уже в раз в сотый говорю перейдите на 404. В этот раз воспользуйтесь там поисковиком комнат
                                                          А нужно ли оно вообще?

                                                          Если бы матрикс было, а в хмпп не было вы бы сказали нужно. Для чего оно нужно шифрование в чатах, сами погуглите
                                                            0
                                                            Электрон создает три версии программы под разные ОС. Одну под андроид. Другую по Linux. Третью под продукцию апле

                                                            Ещё раз: глянуть андроид-версию риота вы даже не пытались? Покажите нам всем в apk-файле риота хоть какой-нибудь след от Электрона?


                                                            говорю перейдите на 404

                                                            Репликация на другой сервер по определению означает означает, что я не должен переходить на 404. Если я куда-то там должен переходить — значит репликации нет.

                                                              0
                                                              Репликация, репликация, выучили новое слово для троллинга?
                                                              muclumbus.jabbercat.org/rooms/1
                                                                –1
                                                                К чему тут эта ссылка? Там где-то репликация есть? На первый взгляд не видно, просто набор ссылок со статистикой.
                                                                  –1
                                                                  Вы недавно писали что в хмпп нет централизованного поиска по конференциям. Уже есть. Не все сервера, но 800 тоже много. Теперь докапались до новой фигни. Теперь Вам нужен не просто централизованнный поиск по XMPP, а новое слово «репликация».
                                                                    0

                                                                    Я не помню, чтобы я такого про поиск писал. Дайте ссылку на мой коммент, где я такое писал?


                                                                    Про репликацию вы сами же заявили, что она есть в XMPP:


                                                                    Покажете репликацию или откажетесь от собственных слов?

                                                                      –1
                                                                      В ХМПП можно размещать конфы с чужих серверов, на другом сервере. На 404.city 4 конфы с других серверов. Практической пользы от этого нет, потому что есть поисковик и репликация не нужна.
                                                                        0
                                                                        А если сервера, на которых находятся эти 4 конфы, сдохнут — на 404.city в них всё ещё можно будет зайти и почитать историю сообщений?

                                                                        Если нет — это не репликация и вы в очередной раз соврали.

                                                                        Если да — поделитесь ссылкой на расширение, которое обеспечивает такую функциональность.
                                                                          –1
                                                                          А если сервера, на которых находятся эти 4 конфы, сдохнут — на 404.city в них всё ещё можно будет зайти и почитать историю сообщений?

                                                                          Если закрытый сайт в интернете сдохнет, можно будет зайти почитать его? Репликация ненужна. Это в матрице 1 крупный, в хмпп их десятки тысяч. Если собрать все конфы со всех сервер, сервер станет помойкой.
                                                                            –1
                                                                            Если сайт в интернете сдохнет, можно будет зайти почитать его?

                                                                            Да. Слава Wayback Machine и его аналогам!


                                                                            Репликация ненужна.

                                                                            Возможно. Но вы же сами заявляли, что в XMPP она есть!


                                                                            Ну так что, отказываемся от своих слов?

                                                                              –1
                                                                              Я ошибся. Вы достали уже тролить. Уже второй раз тыкаете этими картинкой
                                                                                0

                                                                                Ну вот и хорошо. А ещё вы подозрительно умолкли про андроидовый Riot. Тоже ошиблись или всё-таки покажете, где там Электрон?

                                                                                  –1
                                                                                  Раскажи об ваших мыслях о хмпп в конфе суппорта жаббер.ру. Сегодня вечером прийдет администрация и попробуем решить ваши проблемы с переездом на новый сервер
                                                                                    0

                                                                                    Конфы существуют не только на жаббер.ру.


                                                                                    И вообще-то такие проблемы должен решать протокол, а не админы. Сами же мне тут про «криптографические подписи» рассказываете — вместо того, чтобы тут со мной бессмысленный и беспощадный срач вести, лучше бы уже XEP на эту тему изобрели

                                                                                      –1
                                                                                      И вообще-то такие проблемы должен решать протокол, а не админы.

                                                                                      Это только ваша проблема, а не всех остальных. Никто не замарачивается с буквами ников в конфах
                                                                                        –1

                                                                                        Чего вас заело на нике? На ник вообще глубоко плевать (пройтись по трём с половиной серверам и снять регистрацию вообще не проблема), меня волнуют мемберки. И контакты, да.

                                                  0
                                                  Отказоустойчивость? В XMPP уже как-то реализована возможность сохранить идентичность условного пользователя user@example.com, если его сервер внезапно умер? Сможет ли он безболезненно перейти на другой сервер с другим логином (vasya.pupkin@example.ru), перенести весь список контактов и как-то доказать им, что новый и старый логин — это одно и то же?
                                                    –1
                                                    В XMPP все сделано, так же как в емайл. Крупные сервера закрываются крайне редко. Почему в e-mail никто не жалуется, что зарегистрировал user@vasyapupkin. ru и его почта сдохла, а в XMPP это постоянно это же ставят упреком
                                                    Создать аккаунт в XMPP намного проще, чем в почте. Вы может создать сколько угодно резервных Jid и пользоваться ими хоть одновременно. Экспорт контактов есть в клиентах
                                                      –1

                                                        0
                                                        Спасибо за аватарку andreymal, вы реально уже меня достали, со своими тупыми придирками, пикчами и личными сообщениями. Вы навязчивый троль
                                                          0
                                                          Уверяю вас, никому ваш ник в конфе даром не нужен. Вас бы вообще все с удовольствием забанили на Jabber.ru. Про криптографические подписи, вы конечно не слышали. Cоздать ник «andreymal2» мега сложное занятие
                                                            0
                                                            Вас бы вообще все с удовольствием забанили на Jabber.ru

                                                            Кончились аргументы — перешли на бомбёж? Слив засчитан.


                                                            (Если вы расскажете, как «криптографические подписи» автоматически перенесут мемберки в комнатах — может и не слив.)

                                                              0
                                                              Приходите сейчас в конференцию support@conference.jabber.ru
                                                                0
                                                                А чё, без моего личного присутствия в XMPP уже и банить нельзя?)))))))))))
                                                                –1
                                                                Почему Вы усложняете столь просто занятие. Что перенести логин в конфах, достаточно зайти с двух аккаунтов и на старом аккаунте написать всем, это мой новый логин. Да и людям как то по-фиг то скрывается и за каким ником. Может быть это ваша персональная проблема? Что из-за вашего придирчивого характера Вас повторно, не пустят в участники? (Можно так же освободить старый ник и создать на нем аккаунт с новым, но без старых прав)
                                                                  0
                                                                  С учётом чятиков я это должен буду написать несколько сотен раз. А потом ещё несколько дней разгребать запаздывающие ответы от собеседников и админов. Нафига оно мне надо?
                                                                    –1
                                                                    А пользоваться тормазнутым сервером и на каждом углу хейтить XMPP нужно? Любой другой человек сменил на вашем месте сервер и забил новые ники в конфах. Это дело пару минут, а вы тут это как целую трагедию описываете, но тем не менее продолжаете это использовать
                                                                      0

                                                                      Видимо, комментарий, на который вы ответили, вы вообще решили не читать.

                                                                        –1
                                                                        С учётом чятиков я это должен буду написать несколько сотен ра

                                                                        Физически невозможно читать одновременно 100 чатиков. Вы сознательно искажаете проблему, чтобы ее выставить более глобальной. Любой другой просто добавил бы авторизацию в чатиках, по мере захода. 10 любымых сразу, потом остальные потихоньку
                                                                          0
                                                                          И в итоге переезд вообще растянется на несколько лет. Нафига оно мне надо?
                                                                            –1
                                                                            Не преувеличивайте. Переезд растянется ровно на время захода в конфы. Если вы не заходите в конфы, чего плакатся, что теперь вас в них нет.
                                                                              –1
                                                                              Переезд растянется ровно на время захода в конфы.

                                                                              То есть на несколько лет.

                                            –1
                                            del
                                              0

                                              А путь костылей как у sameroom.io чем не устраивает?
                                              Единственный известный мне инструмент дающий возможность общаться с людьми в Скайпе и в icq из "одного" окна.

                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                              Самое читаемое