Комментарии 55
Новая жизнь для XMPP. Делаем мессенджер, который не получится заблокировать

Главное, что бы этим мессенджером никто из протестующих с США не воспользовался. А то опять будет «русские хакеры», «рука кремля», «новые санкции против РФ», «высылка дипломатов»,…

Если соглашаться на федеративный протокол, то почему не матрикс? Мне о нем в свое время на https://t.me/distributed все уши прожужжали.

Как минимум XMPP — это уже известный стандарт с кучей клиентов под множество платформ.


Кстати, подскажите, пожалуйста, а почему Вы сделали ссылку на один из каналов закрытого мессенжера, вместо прямой ссылки на официальный сайт https://matrix.org/blog/home/?

НЛО прилетело и опубликовало эту надпись здесь

Эта банальная задача замечательно решена с помощью двух расширений: XEP-0313 (Message Archive Management) и XEP-0280 (Message Carbons).

НЛО прилетело и опубликовало эту надпись здесь

У вас какие-то устаревшие сведения. Из серверов поддерживается как минимум в ejabberd, из клиентов — как минимум в Gajim, Xabber и Conversations.

matrix.org пробовали запускать, понравился его Web клиент Riot. По самому протоколу ничего не могу сказать, может и есть какие-то плюсы, но они не настолько очевидны.

Федерацию внутри I2P не получилось сделать, насколько я помню, протокол федерации жестко завязан на DNS и для даркнета прийдется делать какие-то костыли.
НЛО прилетело и опубликовало эту надпись здесь
Ну вообще, я конечно пользуюсь матрицей и мне она нравится, но нужно сказать, что держать свою федерацию на данный момент — очень затратное удовольствие, т.к. это тонны данных в БД и тонны сожранной оперативной памяти, вкратце — «жирно». А XMPP сервер, хоть взять да новый поднять с пол пинка — почти ничего не стоит. Плюс там (в матриксе) ещё есть заморочки с identity серверами, в общем это тема отдельного исследования, и, насколько мне известно (я слежу поверхностно за всякими еженедельными видео-отчетами разработчиков, см. канал «matrixdotorg» на youtube), сейчас нельзя нормально поднять полностью отпиленный от других федераций matrix-инстанс (см. «анально огородиться»), в отличии от XMPP, но они работают над этим. Для начала разработчики должны наконец допилить «дендрит», — переписываемый на Go «синапс», а «синапс» — это сервер матрицы, написанный на Python и который очень жаден до рамы от самой природы пистона, один мой знакомый из интернетов, к слову, уложил свой матрикс-инстанс на неопределённый срок, т.к. у него просто не влезало в раму, со словами: «ну нет у меня 4 гб лишней рамы». Мой вердикт, — ещё пока рано говорить о заведении своей матрикс-федерации с полпинка и долгосрочного планирования на объёмы данных, которые нужно будет хранить и обрабатывать рилтайм.
Ещё забыл сказать, что из клиентов на десктопе, которыми можно пользоваться, я обнаружил только парочку, — это Riot, который суть веб-браузер, со всеми вытекающими, включая гигабайты съеденной рамы, когда у тебя более 150 румов, в которых ты состоишь (у меня лично много бриджованных на freenode-у румов по профильным чатам, да, матрицу можно использовать как IRC-клиент к фриноде с бесплатными оффлайн-логами), а также nheko, который активно пилится мейнтейнером, но всё ещё сильно ограничен по функционалу и элементарно плохо обратывает разрывы связи, там к примеру нет поддержки e2e шифрования, и шифрованные комнаты, созданные в Riot просто нельзя читать.
Телепатия вроде высокорувневая библиотека, она не только XMPP поддерживает, почему вообще постановка вопроса о том, что ее могут заблокировать? блокируют же протоколы а не реализации, в чем я неправ?
upd: я точно правильно понял что речь о telepathy.freedesktop.org/components?
Почему же не заблокируют? Очень просто заблокируют. Обяжут всех носить шапочки из фольги — и вот вам блокировка телепатии.

Кю!
Такое чувство, что статья обрывается на самом интересном. Где описание механизмов взаимодействия между разными серверами?
Если у каждого будет свой локальный сервер, как находить других юзеров?
Или вот это
все остальные пользователи должны будут добавить в свой конфиг
— неизбежность? Тогда не взлетит, как мне кажется.
Соглашусь с вами, статья получилась сугубо практическая. Возможно, стоит ее дополнить теорией или написать отдельно про внутренности такой системы — как работают I2P туннели и как взаимодействуют сервера через mod_darknet. Если будет время, допилю.

как находить других юзеров?

Так же, как это делают в обычных мессенджерах — whatsapp, telegram и тд. Тут в качестве идентификатора пользователя выступает ваш jabber id.

не взлетит, как мне кажется.

Это, как мне кажется, мелочи. Для взлета больше важно готовое клиентское приложение, в котором вся настройка сводится к минимуму. И сделать это вполне реально, все программы с открытым исходным кодом. Их бы собрать в готовый к употреблению продукт, получится конфетка.
Почти никто из неТИшников не будет лазить по конфигам и что-то там добавлять.
И2П в режиме вошёл-вышел, тоже не очень — оно хочет долгой и вдумчивой работы.
Что бы весь этот самолёт с бассейнами и прочим взлетел, это должно работать из коробки без напильника на любых гнилых линиях (я регулярно посещаю места где 1 кб в минуту — за счастье).
А для идентификации необходимо использовать связку ждабер-ид + адрес_сервера, (никто не думает что все будут на одном домашнем сервере сидеть, который выключился и всё) и как это будет ввглядеть для запоминания / диктовки, особенно по телефону?

Antox например очень плохо работает. Зависает и глючит на видео и аудио звонках. Сообщения часто не доставляет хотя на обоих устройствах включен. Приходится шаманить чтобы оба клиента увидели друг друга в сети и обменялись сообщениями.

Нет. Можете посмотреть недавнюю активность отдельно взятого разработчика и экстраполировать.

Если коротко, то это имеет очень мало общего с тем болотом, что там было раньше. Надеюсь, скоро прочитаем подробности из первых рук.

Я один не понял, а причём здесь p2p? Да, серверов много, да легко настроить, но это немного другой принцип, нежели p2p, списки то юзеров у каждого сервера свои. Если только не сделать единый "блокчейн" со списком ВСЕХ пользователей)), но насколько я знаю, это выходит за рамки спецификаций стандарта xmpp.

Я тоже не понял. Возможно, автор имел ввиду децентрализацию? Но jabber сам по себе децентрализован, как почта.
А запустить сервер в любой сети можно, хоть в интернете, хоть в локалке, хоть через hiddenservicec в Tor. Проблема только в том, что и общаться при этом возможно будет только с клиентами из этой же сети.
Бòльшая часть реализаций XMPP выходит за рамки стандартной спецификации.
списки то юзеров у каждого сервера свои

Но между собой сервера прекрасно общаются (как и в, например, электронной почте).
Для XMPP за столько лет вменяемых клиентов не то чтобы не написали, но… сравните удобство обычного официального клиента Телеграмма, и всего, что для XMPP за годы настрогали!

Лично я уверен, что в свое время XMPP проиграл битву за пользователей в т.ч. и в этом.
О, да, постоянно прыгающие туда-сюда контакты в списке, необходимость знать номер телефона для переименования этих самых контактов, отсутствие групп этих самых контактов, отсутствие поддержки TeX, trim() в code-блоках (из-за которых выхлоп uniq -c, обрамлённый в ```, вечно выглядит криво), огромная куча прочих неприятных мелочей и возможность использовать стикеры про вашу любимую газировку — это просто верх удобства!</sarcasm>

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

Могу, но давайте в личку. Я не про стикеры, а именно про удобство. Сегодня из старых разве что Миранду можно использовать (как и тогда можно было).

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

Если бы XMPP-клиент пилили сейчас — он бы выглядел горраздо красивее.

Если бы протокол делали сейчас — тоже было бы, думаю, поинтереснее. Но я не про красоту, про удобство.

Клиент Psi был довольно удобен. Правда он весил в итоге 120 мегов, т.к. тянул за собой какую-то гуёвую библиотеку (QT кажется)…
Дайте вспомнить: архив сообщений в виде html, просмотр архива по каждому дню (т.е. найти что-то, отправленное год назад — только grep-ом в файлах), и множество недоделок в UI — он не то чтобы хороший, он чуть не единственный, но не лучший (это как второе место при числе участник = 1), и уж точно не на него равняться. Одна радость, что он построен на purple, так на ней построены и почти все остальные. И, да, использовать все многообразие возможностей, что XMPP теоретически может дать, в нем можно, но очень замысловато.

Жрет ресурсов как не в себя, делает чуть — типичный клиент восьмилетней давности. На фоне Миранды всегда смотрелся недоделкой, сделанной программистами-а-не-дизайнерами. Жаль, что миранды нет под линукс.
Сделанный как попало — это вы правы.

Вообще, у него было две версии — новая, с QT и весом под 120 мегов (про жор ресурсов я промолчу) и старая, весила метров 20. Тоже много, но не 120.

Архив сообщений в виде HTML — это не так плохо. Это даже хорошо, если вдуматься. Лучше, чем plain text, имхо.

У QIP Infinium архив сообщений вообще был в закрытом пропритетарном зашифрованном формате.

На тот момент он был самым лучшим из того, что было (не считая Миранды, но я к ней так и не смог привыкнуть).

Впрочем, и телеграм не так чтобы очень уж удобен.

Ограничение на копирование 100 мессаг за раз, отсутствие экспорта истории чата в файл — ну куда это годится в 2018 году???
Ресурсы он тоже жрет как не в себя.
Объясните мне, почему создание месенджера с открытым исходным кодом и шифрованием так сложно? Есть же огромное количество хороших программ с открытыми исходным кодом. Есть мега навороченные биткоины и всякие сети i2p. Почему нет нормального месенджера?
Что мешает взять протокол электронной почты, прикрутить к нему шифрование, сделать красивый интерфейс с визуализацией процесса доставки и чатами вместо списка писем?
Существуют какие-то фундаментальные сложности при написании мессенджера на опенсорсе? или нет потребности в месенджере?

Да, именно что существуют фундаментальные сложности. Мессенджер которым никто не пользуется — никому не нужен. Поэтому самое главное в мессенджере — реклама, а не код. К сожалению.

Существуют какие-то фундаментальные сложности при написании мессенджера на опенсорсе?

Я думаю, что мешает фундаментальный принцип «и так сойдёт». Вот например автор, он молодец, написал большую подробную статью, рассказал где и какие команды нужно выполнить, где в каких конфигах что поправить. Но что дальше? Кто из пользователей телеграмма будет грепать логи, и, главное, зачем? Для того, чтобы был даже самый маленький, самый микроскопический шанс на взлёт, нужно готовое решение, которое устанавливается одной кнопкой на все платформы, тысячу раз проверенное, и протестированное в самых немыслимых конфигурациях. Но этого нет. Потому что и так сойдёт.
Причина ещё и в том, что современные месенджеры в немалой части мобильные месенджеры. Во времена первых лет скайпа были десктопы, у которых нет проблем с трафиком и потреблением электроэнергии. Работала схема пир-ту-пир через суперноды. Да и то были централизованные серверы авторизации. Сейчас смартфоны находятся за NAT(CGN) и файрволами, им нужен внешний релей. Они мало живут от одной зарядки аккумулятора и даже по этой причине не могут быть релеями. Смартфоны сидят на пакетах с ограниченным трафиком — третья причина.
То есть схема пир-ту-пир не работает.
Инфраструктура месенджера на сотни миллионов пользователей стоит довольно дорого.
Продвижение стоит дорого.
Так и получается, что основной рынок в руках очень крупных и очень денежных игроков.
Думаю дело в том, что нет даже теоретического шанса на этом заработать, а с энтузиастами дефицит, начали ребята делать Tox, да потом подзаглохло.
За счет использования I2P, неуязвим для различных *надзоров (сори за мат).

А вот здесь вы, к сожалению, не правы. i2p хорошо защищён (но отнюдь не неуязвим) от внутренней слежки, которая в действия РКН нисколько не входит. Фича РКН — блокировки, и заблокировать i2p вполне реально — достаточно заблокировать reseed-сервера и ограничить доступ к получению списков floodfill-роутеров — и i2pd просто не наладит связь с initial-пирами.

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

Почему-бы просто не написать софт, который использует то, что уже есть? Мессенджер, почта. Пускай он висит в памяти и снифит текст набираемый пользователем в поле ввода мессенджера и при нажатии «отправить» вырезает его, шифрует и вставляет обратно в поле ввода или стеганографирует в рандомную картинку. Или даже пускай у него будет свой интерфейс, только шифрованную информацию он будет отправлять используя любой другой сервис.

В GnuPG можно шифровать текст открытым ключём собеседника и отправить любым способом.

ключём

1) ключом;
2) открытым ключом никакие тексты никогда не шифруются, тем более в GnuPG.

открытым ключом собеседника + своим приватным. Что не так-то?

открытым ключом никакие тексты никогда не шифруются, тем более в GnuPG

Можно с этого момента подробнее?

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