Не устаю наслаждаться привкусом спермы на губах и застревающими между зубами лобковыми волосами авторов XMPP каждый раз когда запускаю жаббер-клиент. XMPP явно дизайнили люди, которые точно не собирались им пользоваться. Двухранговая сеть с клиент-серверным протоколом, который включает в себя абсолютно все отсосы p2p-мессенджеров и не использует никаких преимуществ такой архитектуры кроме разве что человекочитаемых пользовательских идентификаторов. Ну вот нахуя мне жаббер-сервер, если я все равно на клиенте должен ебаться с историей, контролем доставки сообщений и прочими приколами? В плане пользовательского опыта XMPP стоит рядом с каким-нибудь Tox, вся инфраструктура XMPP-серверов занимается разве что аутенфикацией и маршрутизацией. Хочешь непроебываемые сообщения? Соси хуй. Хочешь общую историю на всех клиентах? Соси хуй. Еще и учетка гвоздями к конкретному серверу прибита - охуительно.
Другое дело - Telegram. UI/UX просто божественны. Сидишь за пекой и хуесосишь кого-нибудь в чатике. Захотелось посрать или сгонять за закладкой - просто хватаешь быдлодевайс и продолжаешь с него. Telegram централизованный и незащищенный, но все же использовать его и создавать спрос на юзабельные решения - очень хорошо, если не удовлетворены базовые потребности (удобство и комфорт), то толку от удовлетворения более высоких (безопасность и контроль) не будет никакого. Можно, конечно, сидеть как сыч в своем жаббер-мирке, обмазавшись личным сервером и OTR, только какой от этого толк если тебе пообщаться-то не с кем - все кругодрочат в телеграме.
Миру нужен еще один несовместимый ни с чем мессенджер. Только этот мессенджер должен быть: удобный как телеграм, контроллируемый как жаббер и безопасный как токс. С сервер-сайд историей, шифрованием, миграцией учетных записей и возможностью поднять свой сервер.
И так. У Алисы есть хеш публичного ключа Боба. Алиса хочет позвать Боба в совместку на мекс. Для этого она запрашивает у одного из серверов, обслуживающих ее учетную запись VCARD Боба. Сервер бежит в DHT и находит cамый свежий VCARD по хешу публичного ключа, возвращает его Алисе. Алиса шифрует для Боба сообщение "го совместку на мекс" и передает одному из своих серверов с пометкой "передать Бобу". Сервер достает из VCARD Боба список адресов и публичных ключей серверов, обслуживающих его учетную запись, выбирает для себя самый удобный, добавив к сообщению timestamp и подписав его, отправляет шифрованное сообщение на этот сервер. Сервер Боба, проверив, что timestamp совпадает с текущим (с какой-то допустимой погрешностью), подписывает сообщение своим ключем и рассылает подписанное сообщение: серверу Алисы, с которого пришло сообщение, всем прочим серверам Боба из VCARD и всем клиентам Боба, подключенным к этому серверу. Подписанное серверами обеих сторон сообщение сохраняется на всех серверах обоих участников в виде sorted set'а со score равным timestamp'у этого сообщения. Теперь Боб в любой момент может запросить у любого из своих серверов историю своего общения с Алисой и получить его в виде массива сообщений, отсортированных по времени отправки. Боб аналогичным образом отправляет Алисе ответ: "ебал я в рот твой мекс, я тебе ебало порежу, тварь".
Что мы имеем? End-to-end шифрование: никто кроме Алисы и Боба не знает что содержится в сообщении. Учетная запись может обслуживаться несколькими серверами, реплицирующими зашифрованную историю между собой: можно забыть про падающие сервера и просто в случае проблем переключаться с одного на другой - история на всех одинаковая. Добавить новый сервер проще простого: нужно лишь отправить в DHT новую версию VCARD с новым списком адресов и ключей своих серверов. История изначально сервер-сайд, а значит и Алисе и Бобу нужны лишь тонкие клиенты, запрашивающие при необходимости нужный кусок нужного диалога. Сообщения не проебываются: даже если у клиента херовый коннект, ему нужно лишь дождаться когда сообщение будет подписано серверами обеих сторон - после этого оно сохраняется в истории. При этом легко костылится возможность отправить на любой из своих серверов токен по которому этот сервер может слать пуши (без текста сообщения) на твой быдлодевайс, уведомляя тебя о новых сообщениях. Так как сообщение становится сообщением только после того как его подпишут сервера обеих сторон (нужно для того чтобы нельзя было отправить сообщение с произвольным timestamp), то возможен интересный сайдэффект: при удалении из VCARD какого-то из своих серверов из истории будут удалены все сообщения, подписанные этим сервером. Но это можно пофиксить, если помимо адреса сервера и его ключа хранить в VCARD еще булево активен сервер или нет (т.е. можно ли на него доставлять сообщения), тогда необходимости убирать старые сервера из VCARD не будет.
дальше не читал // DAE XEP-313 (не хер)
@krkm А тебя ебёт? Клиенты/серверы поддерживают.