Пишем мессенджер с открытым исходным кодом

    Зачем пишем?


    tinode logo

    Давным-давно в одной далекой стране была компания America Online. И был у нее удивительный частный Интернет за заборчиком, где вместо URL-ов были "keywords": что-то среднее между адресом веб страницы и купленным ключевым словом в рекламе. Компании боролись за интересные ключевые слова, как сейчас борются за домены, а реклама выглядела так: "посетите нас во всемирной сети по адресу www.example.com, или наберите AOL Keyword: 'banking'".


    История имеет свойство повторяться. Сейчас роль Америки Онлайн играют основные мессенджеры: все они за заборчиками, несовместимы друг с другом, все изобретают свои keywords, желают схватить пользователя и уже никогда не отпускать. Компании не заинтересованы в открытости: более крупные игроки не желают делиться пользователями с более мелкими и уж тем более становиться открытыми. В результате невозможно послать сообщение даже из WhatsApp в Facebook Messenger, несмотря на то, что оба принадлежат одной компании. Да и пользователи ценят надежность и удобство выше абстрактной открытости, хотя многих раздражает, что часть друзей, например, в Telegram, часть в WhatsApp, а родители в Skype.


    А вот роль открытого интернета, к сожалению, сегодня не играет никто. Ситуацию хочется изменить. Если XMPP не справился, может быть кто-то другой сможет? И тут рассказ про Tinode.


    Что такое Tinode


    Tinode — мессенджер с полностью открытым исходным кодом на Github. Все клиентские приложения (ReactJS и Андроид) лицензированы под Apache 2.0, для того, чтобы упростить создание коммерческих приложений на основе Tinode, сервер под GPL 3.0. Цель проекта — создать федерированный мессенджер, который прост и удобен как для пользователей, так и для операторов. Поставил — и все работает, как MySQL или Nginx. В долгосрочной перспективе цель проекта – создать открытую альтернативу существующим проприетарным мессенджерам, повторить в отношении мессенджеров то, что сделал Android в отношении операционных систем для мобильных телефонов.



    Что он умеет


    Поддержка множественных устройств.


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


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


    Онлайн статус


    Трансляция онлайн/оффлайн статуса пользователя в мессенджерах воспринимается как что-то само собой разумеющееся, однако, это весьма тяжелая в реализации фича. Нужно, чтобы она "просто работала", предсказуемо и надежно. Надежность работы исключила генерацию статуса на клиенте, как это реализовано в некоторых XMPP приложениях. В случае Tinode, сервер генерирует онлайн статус и рассылает по адресной книге, что, опять же, требует хранения контактов на сервере и их синхронизацию с клиентскими приложениями.


    Простота протокола


    Протокол хотелось сделать таким, чтобы кривая обучаемости была пологой – не нужно знать всего, чтобы начать. Спецификация получилась очень компактной: 10 запросов клиента, 5 ответов сервера. Например, по сравнению с 200+ страницами только core XMPP, не считая extensions, это почти записка на салфетке.


    Представление данных отделено от сетевого протокола. Протокол лишь требует определенную структуру данных, но не требует, чтобы они передавались по сети каким-то определенным образом. Сейчас сервер поддерживает JSON по websocket и long polling, c TLS и без, плюс gRPC по TCP. Поддержка gRPC была реализована одним разработчиком за две недели, включая написание текстового клиента на Питоне. Добавление поддержки иных форматов данных и протоколов, например, MessagePack или Noise, вряд ли займет намного больше.


    Расширяемость


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


    Было принято решение разделить функционал на три части — основной, сетевой и вспомогательный. Основной — это то, что позволяет Tinode выполнять основную функцию — пересылать сообщения. Сетевой — функционал взаимодействия в серверами, как формат передаваемых данных и сетевой протокол. Вспомогательный — то, что решает чью-то локальную задачу, например, поддержка конкретной базы данных в качестве бэкенда или какой-то метод авторизации, но никак не влияет на другие сервера или пользовательские приложения. Основной функционал реализован в основном коде. Сетевой функционал выделен, но также хранится в основном репозитории для того, чтобы по возможности избежать создания несовместимых серверов. Вспомогательный реализован в виде плагинов — компилируемых Go интерфейсов (поддержка разных баз данных, разных авторизаторов, пуш нотификации, валидаторы по емейл или телефону, поддержка каптчи и т.п.) и gRPC endpoints (чатбот и поисковый интерфейс).


    Прочее


    • Возможность, но не требование привязки счета к телефону или емейлу или ещё чему угодно.
    • ID пользователей, которые трудно угадать, и, соответственно, трудно разослать спам.
    • Tags, позволяющие реализовывать поиск людей как в WeChat (и, подобно WeChat, встроить в мессенджер службу знакомств) или разделить организацию на отделы как в Slack.
    • Возможность подключения пользователей без регистрации, необходимая, например, для организации службы поддержки через чат.
    • Интерфейс и пример подключения чатботов.
    • Планы создания каналов как в Telegram.

    Почему Go?


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


    Безусловно, роутер можно написать и на C/C++, и на Java. Однако, при прочих равных, код скорее всего получится более сложным и потребует больших усилий для избежания дедлоков.


    А что потом?


    Федерация


    Одна из основных задач для Tinode на ближайший год — создание платформы для федерации. Так, чтобы любой желающий мог запустить свой Tinode сервер, который бы мог обмениваться сообщениями с любым другим сервером, точно так, как это возможно с емейлом. Уже сейчас возможна кластеризация серверов. Сетевой обмен между сервером и клиентами идет по TLS websocket, что для внешного наблюдателя мало отличимо от простого HTTPS трафика.


    Публичный DNS, вероятно, будет использоваться, по крайней мере первоначально. Однако, в будущем поиск чат-серверов будет осуществляться также, как это сделано в Bittorrent — при помощи DHT, распределенной хеш таблицы.


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


    Репутация и распределенное принятие решений


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


    • Криптографическая идентификация сервера-отправителя.
      Изначально, SMTP вообще не предполагал какой-либо идентификации отправителя. Не стоит снова наступать на эти грабли. Каждый сервер, желающий установить контакт, будет представлен криптографическим сертификатом. "Ну да", скажете вы, "я сейчас нагенерю 100500 сертификатов и каждый раз буду представляться новым чистым сервером". И будете правы. Поэтому следующий пункт.
    • Распределенный учет репутации.
      Когда к нам стучится новый, неизвестный сервер-отправитель, мы сделаем запрос к известным серверам с просьбой сообщить рейтинг нового сервера. И в зависимости от ответа установим, например, скорость, с которой новый сервер может посылать нам сообщения.

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


    Шифрование


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


    Что вы по этому поводу думаете?

    Поделиться публикацией
    Похожие публикации
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 208
    • +14
      • 0
        К сожалению вы правы. Много людей в мире, в особенности разработчики, хотят один браузер, один мессенджер и т.п., и чтобы забыть про эту неразбериху и нарастающую коллизию кол-ва новых стандартов и технологий, которые хотят «всё и всех объединить», а на практике создаются новые «ветви в деревьях». В нас в людях, видимо, заложено желание объединения, но по факту мы только и делаем, что разъединяемся.
        • +1
          Да фиг с ними с браузерами и мессенджерами. Лишь бы интернет один был, а не китайский, руссский, севернокорейский.
          • 0
            и то верно, а то ведь всё именно к этому и идёт
            • 0
              Так или иначе «свободного интернета», увы, не будет.
              «Китайский, руссский, севернокорейский» — это когда его вводят в рамки тупо и грубо. Когда это делается квалифицированно и профессионально — получается «аоловский, гуглевский, амазоновский, етс».
            • 0
              в США продавливаются законы об отмене «Сетевого нейтралитета», так что будет сегрегация по национальному типу. Своеобразное технологическое рабство.
          • 0
            XKCD прав только отчасти. Сетевые эффекты существуют.
            Во-первых, тут не только API, но и продукт, который становится полезнее с ростом количества пользователей. Как vk или вообще WeChat — нет смысла пользоваться еще чем-то, если все друзья тут, а не там.
            Во-вторых, даже для API XKCD не совсем прав. Если есть экосистема, то она сама себя поддерживает и усиливает: статьи, курсы, люди знающие платформу ее популяризируют.
            Может быть и 14 конкурирующих стандартов по XKCD, но доли рынка у них разные.
            • 0
              >> Может быть и 14 конкурирующих стандартов по XKCD, но доли рынка у них разные.
              Собственно, с такой подачей это именно просто 15-й стандарт. Непонятно, что его от остальных отличает… Их и «открытых» уже вагон и маленькая тележка.
              Просто в статье вы пишете, что «xmpp пробовал, не получилось. Может быть, у нас получится...» А на выходе получается, что даже и не пытаетесь. У xmpp, хотя бы, транспорты были…
            • +3
              История имеет свойство повторяться. Сейчас роль Америки Онлайн играют основные мессенджеры: все они за заборчиками, несовместимы друг с другом, все изобретают свои keywords, желают схватить пользователя и уже никогда не отпускать.


              Самое время создать еще один, не совместимый с существующими решениями? Все описанное на этой странице можно сделать на основе XMPP, затратив намного меньше усилий в серверной части.

              Протокол хотелось сделать таким, чтобы кривая обучаемости была пологой – не нужно знать всего, чтобы начать. Спецификация получилась очень компактной: 10 запросов клиента, 5 ответов сервера. Например, по сравнению с 200+ страницами только core XMPP, не считая extensions, это почти записка на салфетке.

              Представление данных отделено от сетевого протокола. Протокол лишь требует определенную структуру данных, но не требует, чтобы они передавались по сети каким-то определенным образом. Сейчас сервер поддерживает JSON по websocket и long polling, c TLS и без, плюс gRPC по TCP
              .

              Если бы Вы почитали более подробно о ХМПП то Вы бы знали, что для доставки сообщений в XMPP вполне можно использовать Websoket, http запросы. В вашем примере Вы дублируюте Ejabberd http api docs.ejabberd.im/developer/ejabberd-api/admin-api Это работает через JSON запросы.

              • 0
                Push уведомлений нет в стандарте XMPP и поэтому он не нужен, А XEPы кто поддерживает кто нет, фиг разберешься
                • 0
                  Push уведомлений нет в стандарте XMPP и поэтому он не нужен

                  Это очередное заблуждение. Протокол XMPP активно развивается. Чего не было лет 5 назад, теперь есть.
                  xmpp.org/extensions/xep-0357.html
                  Конкретно по серверам:
                  mod_push — в ejabberd.
                  mod_cloud_notify — Prosody.
                  В других серверах возможно тоже есть, не курсе

                  • 0
                    Основная проблема в том, что этого всего нет и никогда не будет в качестве обязательной части XMPP. Есть и будут тысячи и тысячи серверов, в которых нет и не будет ни mod_push, ни MAM, ни OMEMO, ни Message Carbons. А многие клиенты до сих пор даже банальное уведомление о доставке не поддерживают! Не говоря уже об общепринятом нынче уведомлении о прочтении. И всё это легаси не даёт XMPP развиваться. Нужно сделать новый протокол хотя бы потому, чтобы всё легаси спокойно выкинулось. (Про убогость устаревшего на десять лет XML-based протокола вспоминать в этом комменте не буду)
                    • +2
                      Основная проблема в том, что этого всего нет и никогда не будет в качестве обязательной части XMPP

                      Вы немножко неправильно понимаете смысл создания XMPP.
                      XMPP это не мессенджер. Это протокол. Его цель было объединить множество разных несовместимых друг с другом мессенджеров в одну сеть коммуникации.
                      Никто не обязан поддерживать тысячи расширений или навязанную технологию.
                      XMPP это как линукс. XMPP — это как конструктор, где каждый берет свое.
                      Как есть WhatsApp, Telegram, Yadex, Google, внутри XMPP своя вселенная из мессенджеров и серверов/ Gajim, Conversations, Dino im., 404, жаббер.ру, жаббер.ат, национальные сервера и т.д.
                      В ХМПП любой может написать свой XEP или даже не писать, а прикрутить молча прикрутить свое ( социальные сеть и веб-клиент Movim.eu, блоги juick.com )
                      XMPP это концепция расширяемого протокола для связи между разными, не полностью несовместимыми мессенджерами. Цель ХМПП создать универсальный канал общения. XMPP это не мессенджер, а над месседжерная структура.
                      • 0
                        Никто не обязан поддерживать тысячи расширений или навязанную технологию.

                        Именно поэтому разные реализации XMPP очень плохо совместимы друг с другом, и упомянутой вами цели — объединения — XMPP так и не достиг.


                        У линукса та же самая проблема, да.

                        • 0
                          упомянутой вами цели — объединения — XMPP так и не достиг.

                          Условно достигнута. Все мессенджеры поддерживающию XMPP, поддерживают общения между собой. В настоящее время решена, так же передача файлов между разными клиентами. Из жаббера сейчас даже можно отправить файл ссылкой, тому кто не жаббере.
                          Есть конечно устаревшие клиенты в которых нет новых функции, но с устареванием сталкиваются любые программы.
                          Большинство пользователей жаббера на мобильных используют conversations, который крайне неплох и вполне современный мессенджер.
                          Самая большая проблема хмпп это плохая информированность о нем. У большинства людей представление о жаббере из 2000 годов. С этих пор многое в ХМПП изменилось.
                          Картинки здесь не в почете, поэтому отправлю вам ссылку, как выглядит современный жаббер play.google.com/store/apps/details?id=eu.siacs.conversations.legacy
                          • 0

                            Ну давайте начнём по порядку с вашей же ссылки.


                            XHTML-IM не поддерживает — половину сообщений невозможно прочитать так, как задумал автор.


                            Ресурсы и приоритеты не показывает — кому куда откуда как идут сообщения, непонятно.


                            Не-legacy версия по умолчанию включает OMEMO (мне рассказывали) — сразу же отваливается совместимость с Psi+ и остальными, кто не поддерживает.


                            Подключаться по 3G может полминуты. Телеграм подключается за полсекунды.


                            Без поддержки MAM сервером регулярно теряет сообщения — неоднократно проверено лично мной, Conversations для меня основной джаббер-клиент. Для надёжности Carbons и SM недостаточно.


                            Звонков нет. А между теми клиентами, где есть, созвониться — целое достижение.


                            MUC — срисованное с IRC убожество, что вроде как признают даже сами авторы (где-то был XEP об этом). В конференциях файлы кроме как ссылками передавать невозможно. О звонках даже не мечтаем (привет от Skype, Discord и Mumble).


                            Это только из того, что сходу вспомнил. Если глубже копнуть, можно ещё десятки несовместимостей и проблем упомнить.


                            А простая передача plain текста без гарантий надёжности — единственная задача, с которой в XMPP справляются действительно все — никому нахрен не нужна в 2018-м. Такой XMPP нам не нужен.

                            • –1
                              XHTML-IM не поддерживает — половину сообщений невозможно прочитать так, как задумал автор.

                              Форматирование текста, есть в умеренном количестве. Можно сделать текст жирным, курсивом, исправить ошибку в уже отправленом сообщении.
                              Ресурсы и приоритеты не показывает — кому куда откуда как идут сообщения, непонятно.

                              В современном жаббере сообщения идут на все подключенные устройства и зашифрованные сообщения тоже. Ваш сервер действительно поддерживает
                              Не-legacy версия по умолчанию включает OMEMO (мне рассказывали) — сразу же отваливается совместимость с Psi+ и остальными, кто не поддерживает

                              Psi+ поддерживают уже омемо через плагин. Недавно добавили. Потом, омемо можно отключить или выставить по умолчанию в настройках другое значение. Кто ставит не легаси версию знает что он делает и ему это нравится. Зачем ограничивать людей в их пожеланиях?..
                              Подключаться по 3G может полминуты. Телеграм подключается за полсекунды.

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

                              Без поддержки MAM сервером регулярно теряет сообщения — неоднократно проверено лично мной, Conversations для меня основной джаббер-клиент. Для надёжности Carbons и SM недостаточно.


                              Если включенны 2 устройства, если одно то всегда почти доходит (В частности на сервере 404) В настройках можно поставить посмотреть статус доставки. Использовать сервер с хранением сообщений или нет, выбор конкретно каждого пользователя.

                              > Для надёжности Carbons и SM недостаточно
                              Если Ваш сервер действительно поддерживает Carbons, вопроса ниже не должно было быть.
                              >Ресурсы и приоритеты не показывает — кому куда откуда как идут сообщения, непонятно
                              Зайдите в настройках в информацию в о сервере и посмотрите поддержку хепов. Возможно вам необходимо сменить сервер. В жаббере важно выбрать хороший сервер и клиент, если это сделано, дальше все как по маслу. Многие по незнанию выбирают не обслуживаемые серверы и клиенты, что портит впечатление о ХМПП

                              Звонков нет. А между теми клиентами, где есть, созвониться — целое достижение

                              Можно отправить аудиосообщение
                              MUC — срисованное с IRC убожество, что вроде как признают даже сами авторы (где-то был XEP об этом). В конференциях файлы кроме как ссылками передавать невозможно.

                              Посмотри свои настройки. У меня показываются фотографии как фотографии. В настройках может быть лимит на размер загружаемой картинки
                              • 0

                                Ваша наивность зашкаливает.


                                Можно сделать текст жирным, курсивом

                                Вы сами-то пробвали это сделать хотя бы раз?


                                В современном жаббере

                                У моего собеседника может оказаться устаревший джаббер.


                                Кто ставит не легаси версию знает что он делает и ему это нравится.

                                Ничего подобного, не-легаси версия прилетела в обновлениях автоматически (мне тоже прилетала, но я заблаговременно отключил обновления). И простой пользователь не станет менять настройки по умолчанию.


                                Даже так: обычный пользователь слышал про шифрование максимум в новостях про телеграм, а OMEMO для него — какое-то незнакомое ругательство.


                                Может быть телеграм он и не отключается?

                                Отключается, подключение занимает максимум секунду-две даже после переподключения интернета, тыкания режима «В самолёте» или перезагрузки телефона.


                                если одно то всегда почти доходит

                                Опять неправда ваша: достаточно отрубить в Conversations интернет на 15 минут или более и попробовать отправить сообщение в течение этих 15 минут. На сервере без MAM сообщение безвозвратно потеряется, иногда отправителю даже не приходит сообщение об ошибке — я неоднократно это проверял и продолжаю иногда проверять до сих пор.


                                Использовать сервер с хранением сообщений или нет, выбор конкретно каждого пользователя.

                                Обычный пользователь не разбирается в подобных выборах. Клиент показывает историю — и нормально, а на сервере она или в клиенте — он даже не задумается.


                                Если Ваш сервер действительно поддерживает Carbons

                                А сервер собеседника не поддерживает. Как мне понять, поучил/получит ли собеседник сообщение, если у него ни Carbons, ни MAM, ни уведомлений о доставке?


                                Зайдите в настройках в информацию в о сервере и посмотрите поддержку хепов.

                                Обычный пользователь в ответ на это предложение выматерится и уйдёт в WhatsApp.


                                Многие по незнанию...

                                Сама необходимость какого-то там знания портит впечатление об ХМПП обычным пользователям. Я знаю всё то, о чём мы с вами беседуем, а мои родители — не знают и знать не хотят. Поэтому они сидят и будут сидеть в WhatsApp, Telegram и Skype, как бы мной внутренний швабодкофил ни возмущался.


                                Можно отправить аудиосообщение

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


                                Посмотри свои настройки.

                                Так-так, давайте не спешить. Начнём сначала: где в Conversations кнопка отправки файла в конференцию? В личке есть, в конференции не вижу.


                                Итого: пусть у меня даже будет правильно настроенный сервер и идеальный клиент с поддержкой всех XEP'ов — какой толк от всего этого, если мой собеседник будет использовать условный QIP и всё равно потеряет мои сообщения от банального случайного отключения роутера?


                                Именно из-за всего этого XMPP (кроме несовместимого WhatsApp) остаётся и всегда будет оставаться уделом небольшой кучки гиков вроде нас с вами. А наши родители будут сидеть в проприетарных мессенджерах.

                                • 0
                                  Вас и ваши собеседников никто не заставляет пользоваться плохими серверами и устаревшими клиентами!.. Если вы или ваш собеседник это используется пеняйте только на себя!
                                  Как вы не понимаете. Жабберу уже почти 20 лет. За это время изменилось множество технологий и появилось множество жаббер клиентов. Часть из них писали любители.
                                  У моего собеседника может оказаться устаревший джаббер

                                  Кто езаставил поставить его! У моих собеседников( это реальное использование), почти у всех новые версии! Потому что я просто им говорю, что этот лучше. Если кто-то отказывается переходить. Значит его ничего не раздражает. К сожалению я новый пользователь хабра, если бы я мог поставить минус, я бы поставил Вам минус, так же как и вы мне.

                                  Ничего подобного, не-легаси версия прилетела в обновлениях автоматически (мне тоже прилетала, но я заблаговременно отключил обновления). И простой пользователь не станет менять настройки по умолчанию.

                                  Почему то никто из моих собеседников не огорчился появление новой версии, наоборот обрадовались. Некоторые поставили легаси и теперь у них две версии Conversations (как и у меня также).
                                  Почему вы приувеличиваете, когда говорите об новом обновлении, как о какой-то глобальной проблеме?
                                  Процентов 99% обновление никак не затронуло. Опытные пользователи сейчас почти все на ОМЕМО (не в обиду вам), а те кто неразберается ничего даже не заметил.
                                  Опять неправда ваша: достаточно отрубить в Conversations интернет на 15 минут или более и попробовать отправить сообщение в течение этих 15 минут. На сервере без MAM сообщение безвозвратно потеряется, иногда отправителю даже не приходит сообщение об ошибке — я неоднократно это проверял и продолжаю иногда проверять до сих пор.

                                  Попробуйте сервер 404.city. Ваше сообщение 100% дойдет! Пробовал так делать и неоднократно
                                  А сервер собеседника не поддерживает. Как мне понять, поучил/получит ли собеседник сообщение, если у него ни Carbons, ни MAM, ни уведомлений о доставке?

                                  Да, в жаббере есть такая проблема, что люди регистрируются на заброшенных, любительски[ сервера и выбирают устаревший клиенты и после чего хейтят жаббер как технологию.
                                  Решается проблема довольно просто, информирование о том что такое хмпп, как им пользоваться, какие есть хорошие клиенты и сервера, о различиях в них.
                                  Обычный пользователь в ответ на это предложение выматерится и уйдёт в WhatsApp.

                                  Говорил и не раз. Люди удивленно и с интересом расматривали.
                                  Сама необходимость какого-то там знания портит впечатление об ХМПП обычным пользователям. Я знаю всё то, о чём мы с вами беседуем, а мои родители — не знают и знать не хотят. Поэтому они сидят и будут сидеть в WhatsApp, Telegram и Skype, как бы мной внутренний швабодкофил ни возмущался.

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

                                  Жаббер это не один мессенджер! Это несколько разных разговаривающий между собой

                                  Итого: пусть у меня даже будет правильно настроенный сервер и идеальный клиент с поддержкой всех XEP'ов — какой толк от всего этого, если мой собеседник будет использовать условный QIP и всё равно потеряет мои сообщения от банального случайного отключения роутера?


                                  В ХМПП не теряются сообщения. Это проблемы конкретно вашего устаревшего сервера. Смените его. Экпорт конктактов есть в мессенджере гажим.

                                  Именно из-за всего этого XMPP (кроме несовместимого WhatsApp) остаётся и всегда будет оставаться уделом небольшой кучки гиков вроде нас с вами. А наши родители будут сидеть в проприетарных мессенджерах.

                                  Мои родители знакомые и близкие друзья уже все в жаббере. Поставили Conversations и не жалуются. Друзьям и близким даже нравятся закрытые чаты внутри. Где они разговаривают только между собой

                                  • –1

                                    Я вам минусов не ставил, я вообще-то тоже не могу их ставить (а даже если бы мог, то всё равно бы не ставил — вас не учили, что ставить минусы за мнение и тем более за факты это неправильно?)


                                    Вас и ваши собеседников никто не заставляет пользоваться плохими серверами и устаревшими клиентами!..

                                    Так они вообще не в курсе, что используют что-то устаревшее!


                                    моих собеседников( это реальное использование), почти у всех новые версии!

                                    А у моих (это реальное использование) повсюду QIP'ы до сих пор. Если я предложу им поменять клиент и тем более сервер — меня просто пошлют.


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

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


                                    Опытные пользователи...

                                    Вот опять вы доказываете: XMPP — для небольшой кучки опытных пользователей.


                                    Попробуйте сервер 404.city

                                    Как мне заставить переехать все свои контакты на этот вот 404.city?


                                    Решается проблема довольно просто, информирование

                                    Ещё раз: обычным пользователям насрать, они не слышали и не желают слышать ни о каких SM, MAM, OMEMO и прочих непотребствах — они просто хотят брать и чатиться. Поэтому они берут WhatsApp, Viber и Telegram. Я активно занимался пропагандой джаббера ещё в 2008-2012 годах (ох уж эти школьные годы) и гарантирую вам, что всем насрать.


                                    Говорил и не раз.

                                    Я тоже (см. выше). Видимо, вы разговариваете с кучкой гиков/айтишников, а не, например, с бабушкой.


                                    Если людям сразу сообщаещь, каой сервер хороший и какой клиент хороший

                                    Им насрать, см. выше


                                    Это несколько разных разговаривающий между собой

                                    Да не разговаривают они между собой! Смотрите мою фотку — Conversations не осилил XHTML-IM. Про потерю сообщений тоже уже говорил.


                                    Смените его.

                                    Ещё раз: моим собеседникам насрать. Никто не станет менять сервер и JID ради меня.


                                    Экпорт конктакто

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


                                    и не жалуются

                                    Потому что вы им всё настроили и за ними следите. Обычный пользователь без помощи в лице знакомого тыжпрограммиста не осилит «стандартный» XMPP и пойдёт в WhatsApp.


                                    И вообще, смена сервера — это боль, которую экспорт контактов смягчает лишь отчасти.

                                  • 0
                                    image

                                    Так-так, давайте не спешить. Начнём сначала: где в Conversations кнопка отправки файла в конференцию? В личке есть, в конференции не вижу.

                                    Смените сервер на 404.city. Вы выбрали устаревший или не обслуживаемый сервер.Ваш сервер не поддерживает http upload. Из-за это у возникают проблемы с хмпп и не появляется кнопка. На фото доказательство, того что в конференциях можно отправлять картинки
                                    Эта ссылка отправлена из жаббера и актуальная только сейчас. Фаил автоматически удалится через 2 дня: Ссылка на фаил

                                    Не надо потом, ставить минусы из-за того что картинки больше нет.
                                    • 0
                                      Извиняюсь. Вот ссылка на скриншот жаббер-конференции, где видно что фотографии в ней прекрасно отправляются и доходят из Conversations Ссылка на скрин
                                      Вы выбрали плохой жаббер сервер из-за чего и испытываете трудности с использованием xmpp
                                      • 0
                                        Перезалил на файловый хостинг, для тех кто захочет посмотреть после того как файл сострется с жаббер сервера ibb.co/f10JJy
                                        • 0

                                          В том и проблема. При выборе WhatsApp не нужно задумываться плохой он или хороший, он просто работает.

                                          • 0
                                            В том и проблема. При выборе WhatsApp не нужно задумываться плохой он или хороший, он просто работает.

                                            Я хочу сказат вам тоже самое, но другими словами:

                                            В том и проблема. При выборе Conversations и 404 не нужно задумываться плохой он или хороший, он просто работает.


                                            Просто все знают о WhatsApp, а что такое жаббер и как им правильно пользоваться нет. (Если бы ватсап был свободным и федерализованным, за 20 лет, к нему бы тоже понаписали плохих клиентов и наделали плохих серверов.) В жаббере надо знать хороший клиент и сервер и тогда никаких проблем с ним нет
                                            • 0
                                              Просто все знают о WhatsApp, а что такое жаббер и как им правильно пользоваться нет.

                                              Проблема заключается в «и как им правильно пользоваться». Чтобы технология имела популярность в широких массах, она должна обладать одним важным свойством. Ей должно быть невозможно пользоваться неправильно.
                                              Конечно, жаббер это не мессенджер. Это протокол. Стандарт. Ну так давайте оценим его как протокол. Как стандарт.
                                              Как оценивать? Начнём, пожалуй, с результатов. А результаты не очень. Популярность низкая. Проблемы присутствуют. Попробуем разобраться в причинах.
                                              Вы вот выше доказываете, что проблемы, либо от «неправильного» клиента, либо от «неправильного» сервера. Ну, в определённом смысле это так. И выбрав «правильные» клиент и сервер, многих проблем можно избежать. Но почему всё именно так? Почему какие-то люди сидят, и пишут «неправильные» клиенты, держат «неправильные» сервера?
                                              Вопрос можно было бы назвать риторическим. Кто же их знает, верно? Однако, мы ведь пытаемся оценить не конкретные клиенты и сервера, а протокол. Что сделал жаббер, как протокол, чтобы предотвратить появление этих «неправильных» клиентов и серверов? Ничего. С точки зрения протокола эти клиенты и сервера не являются «неправильными». Они «неправильные» с точки зрения современного пользователя, но не с точки зрения стандарта. Стандарту они соответствуют. Это говорит о том, что стандарт не отражает потребностей современного пользователя. И это однозначно говорит о том, что он плох. Да, именно так. Жаббер плох. Плох как протокол. Как стандарт.
                                              Как так получается? Ведь вроде бы и развитие есть. И вроде бы даже реализуемые новшества вполне релевантны. На мой взгляд, всё дело в расширениях. Это гнилой подход. Это не годится для стандарта. Это не годится для протокола. В протоколах и стандартах важны гарантии. А когда всё на расширениях, то о каких гарантиях может идти речь? Когда какие-то функции вынесены в расширения — их поддержка не обязательна. Это равносильно отсутствию гарантий. А что, собственно, гарантировано стандартом без расширений? Тупо передача текста, который может будет доставлен, а может и нет. Что характерно, именно в таком виде это и работает, более или менее, везде, не зависимо от клиента или сервера. Что посеешь, то и пожнёшь.
                                              • 0
                                                И выбрав «правильные» клиент и сервер, многих проблем можно избежать. Но почему всё именно так? Почему какие-то люди сидят, и пишут «неправильные» клиенты, держат «неправильные» сервера?

                                                Причины:
                                                1. Устаревании ПО. Жаббер появился в 2000 году. С тех пор прошло почти 20 лет… Часть клиентов и серверов устарела и не обновляется. Нельзя заставить людей слезть с этих клиентов и обновить сервера. Человеческий фактор. Каждый делает, что хочет
                                                2. Любительские сервера и клиенты созданные и поддерживаемые не профессионалами. Да, большинства серверов и клиентов создают обычные пользователи, а не компании. Качество таких клиентов и серверов, как правило плохое
                                                3. Отсутствие финансирования и в следствии плохая информационная поддержка

                                                Основная проблема ХМПП:
                                                Высокая степень децентрализации создает хаос. В ХМПП децентрализованная разработка, децентрализованные сервера, децентрализованные расширение(стандарты), децентрализованное обновления, децентрализованные стандарты шифрования, но жаббер таким и задумывался.
                                                Что бы каждый из разработчиков мог слепить из хмпп свой идеальный мессенджер, такой каким он видит его сам, а не плясал под чужую дудку
                                                • 0
                                                  ХМПП пытается решить проблему совместимости несовместимых мессенджеров, сохранив при этом децентрализацию.
                                                  Если сделать его централизованным, конечно можно решить все проблемы, но тогда это будет уже не жаббер
                                                  • 0
                                                    жаббер таким и задумывался.

                                                    Поэтому он не взлетел и никогда не взлетит.)


                                                    а не плясал под чужую дудку

                                                    Пляска под чужую дудку — это как раз следование стандарту XMPP. Все по-настоящему независимые разработчики изобрели свои протоколы, не завися ни от кого (фейсбук, ВК, телеграм и т.п.) Один лишь WhatsApp оказался исключением, но много ли кастомных XMPP-клиентов подключаются и работают к WhatsApp-серверам?

                                                    • 0
                                                      Пляска под чужую дудку — это как раз следование стандарту XMPP.

                                                      В стандарте ХМПП можно свободно написать свой стандарт, поэтому я с этим не согласен.
                                                      ХМПП как и сделан так, что любой мог написать свой стандарт внутри стандарта. ХМПП как матрешка. Единственно что должен поддерживать, что бы считаться полноценным, это отправку сообщений в XMPP, через вебсокет, http это уже там неважно
                                                      • 0

                                                        И это будет уже ни с кем не совместимый ХМПП. От этого нет никакой пользы.

                                                        • 0
                                                          Единственно что должен поддерживать, что бы считаться полноценным, это отправку сообщений в XMPP, через вебсокет, http это уже там неважно


                                                          И это будет уже ни с кем не совместимый ХМПП. От этого нет никакой пользы.


                                                          Нет. Он будет совместимым. Протокол ХМПП это очень растяжимый термин.
                                                      • 0
                                                        Кратко философия ХМПП:
                                                        Пиши любой месенеджер который хочешь, но что он мог отправить сообщение в любой другой мессенджер с хмпп
                                                        • 0

                                                          WhatsApp это не позволяет. Conversations не понимает XHTML-IM, полученный от другого «любого мессенджера». Сообщения без MAM теряются на плохом интернете. Мессенджеры без поддержки шифрования не могут прочитать сообщения с шифрованием. Серверы, требующие шифрование, не позволяют передавать сообщения мессенджерам, не умеющим в шифрование.


                                                          Вывод: философия ХМПП не работает.

                                                          • 0
                                                            Согласен с Вами, не все так идеально как хотелось, но здесь довольно скопилась большая цепочка сообщений уже, поэтому предлагают продолжит обсуждение в конфе не работающего жаббера)
                                                          • 0
                                                            Так именно в этом и проблема. Стандарт говорит что этого достаточно, и может когда-то так и было, но запросы современных пользователей намного больше. Простая отправка сообщения это не уровень современного мессенджера. Это сгодится для интеграции мессенджера с каким-нибудь игровым чатом, или системой оповещений сайта. Но полноценному мессенджеру нужно больше функционала, и не должно быть серьёзной деградации этого функционала, при использовании пользователями разных мессенджеров.
                                                            В принципе, выходом могло бы стать создание некоего обобщающего стандарта, который бы собирал воедино XMPP и наиболее важные из его расширений, объявляя их обязательными. Это могло бы стать основой для создания современных мессенджеров, совместимых между собой. И в то же время это не нарушит философию XMPP, т.к. не добавляет новых, несовместимых сущностей.
                                                            • 0
                                                              В принципе, выходом могло бы стать создание некоего обобщающего стандарта, который бы собирал воедино XMPP и наиболее важные из его расширений, объявляя их обязательными. Это могло бы стать основой для создания современных мессенджеров, совместимых между собой. И в то же время это не нарушит философию XMPP, т.к. не добавляет новых, несовместимых сущностей.

                                                              Поддерживаю. Это простая и гениальная идея
                                                        • 0
                                                          > Да, большинства серверов и клиентов создают обычные пользователи, а не компании.

                                                          То есть, если появится компания, которая сделает приложение с функцией «прыгнуть с моста», это несомненно будет серьезным основанием взять и прыгнуть с моста? Ведь приложение наверняка писали сертифицированные профессионалы на зарплате, их инвесторы наверняка тоже прыгнули с моста… Почему контроль за данными, за стилем и поведением, за общением обязательно нужно отдать некоей корпоративной сущности?
                                                • 0
                                                  Вот так, выглядит просмотр возможностей xmpp-сервера в conversations ibb.co/kGYG5d
                                                  Я всегда заглядываю сюда, если смотрю новый сервер.
                                                  • +1
                                                    Я сегодня впервые на хабре, поэтому путаюсь в разметке. Вот скриншоты из клиента Conversations. Пруф, где работают картинки в групповых чатах и как можно посмотреть возможности хмпп-сервера

                                                    Lnju7 Fr ETpe UMMvq PVDxmw

                                                    Screenshot 20180514 114942 b2f94c69ec

                                                  • 0

                                                    Я проверял conference.jabber.ru — самый популярный сервер с джаббер-конфочками. Никакой другой сервер я проверять не собираюсь, потому что этот — самый популярный. Когда я смогу отправить файл в чатик на conference.jabber.ru — тогда и поговорим.


                                                    Чтобы не размазываться и не упираться в ограничение один коммент в пять минут, отвечу здесь на всё что ниже (точнее, выше относительно этого сообщения):


                                                    В том и проблема. При выборе Conversations и 404 не нужно задумываться плохой он или хороший, он просто работает.

                                                    Не работает же! Я не увидел XHTML-IM и не смог отправить файл в чатик conference.jabber.ru. И сообщения я регулярно теряю, потому что на моём сервере нет MAM, а менять сервер — это боль.


                                                    как им правильно пользоваться нет
                                                    В жаббере надо знать хороший клиент и сервер
                                                    как можно посмотреть возможности хмпп-сервера

                                                    Ещё раз: пользователям насрать, они ничего сложного изучать не хотят, им нужно просто взять и початиться. Хм, который десяток раз я это уже пишу? Вы своим родителям всё настроили, но в мире миллионы людей, у которых хорошего знакомого/родственника типа вас найдётся. И они просто возьмут WhatsApp.


                                                    От того, что этот ваш 404.city работает, пользователям jabber.ru и тысяч других серверов ничуть не легче. Вашей хвалёной совместимости и объединения на практике не существует.

                                                    • –1
                                                      Я проверял conference.jabber.ru — самый популярный сервер с джаббер-конфочками. Никакой другой сервер я проверять не собираюсь, потому что этот — самый популярный. Когда я смогу отправить файл в чатик на conference.jabber.ru — тогда и поговорим.

                                                      На скине фотография отправленная в чат bessonica2@conference.jabber.ru. Фотография в чат была отправленна с сервера 404.city. Я незнаю как с вами спорить, если вы отрицаете очевидный факт и не желаете разобратся в чем дело.

                                                      Вам нужно сменить хмпп-сервер на современный, что отправлять фотографии по http upload.Писать в чаты можно с любого сервера, а не только того на котором вы зарегистрованы. Jabber.ru самый крупный русский сервер, но далеко не самый лучший.
                                                      • 0
                                                        Вам нужно сменить хмпп-сервер

                                                        Я использую jabberon.ru, у которого есть HTTP File Upload согласно его диско (upload.jabberon.ru). На conference.jabber.ru всё работает, как вы заявляете.


                                                        Но кнопки отправки файла в чат на conference.jabber.ru у меня нет!


                                                        То есть условия поддержки сервером HTTP File Upload и использования клиента Conversations оказалось недостаточно. Что ещё я должен сделать, чтобы кнопка появилась и файл отправился?


                                                        Jabber.ru самый крупный русский сервер, но далеко не самый лучший.

                                                        Ещё раз: обычные пользователи об этом не знают и знать не желают.

                                                        • 0
                                                          Ваш сервер устал и не поддерживает http upload
                                                          • 0

                                                            Conversations заявляет, что XEP-0363 недоступен. А почему он это заявляет при наличии upload.jabberon.ru в диско — а фиг его знает. Может, загрузка файлов на этом сервере разрешена только избранным? Тогда почему бы не написать какую-нибудь внятную ошибку доступа?

                                                            • 0
                                                              Подтверждаю, что есть ошибка на данном сервере
                                                              Может, загрузка файлов на этом сервере разрешена только избранным?

                                                              Нет просто, админ неправильно настроил сервер. В жаббере можно отправлять картинки в чаты, если зайдете с 404 сами убедитесь в этом. На скрине мной отправленным последняя версия конверсатионс, аккаунт на сервере 404 и чат бессоница на jabber.ru
                                                            • 0
                                                              Я использую jabberon.ru, у которого есть HTTP File Upload согласно его диско (upload.jabberon.ru). На conference.jabber.ru всё работает, как вы заявляете.

                                                              Jabberon заброщенный сервер. Я проверил ваш сервер. Действительно, на вашем сервере включен http upload, но неправильно настроен администратором сервера. Вам лучше всего сменить сервер.
                                                              • +1

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


                                                                Ещё раз: обычные пользователи об этом не знают и знать не желают.

                                                                А также старательно забыли про нерабочий XHTML-IM в Conversations.

                                                        • 0
                                                          Никакой другой сервер я проверять не собираюсь

                                                          Вам нужно пересмотреть свой взгляд и не быть таким консервативным и у вас все работать отлично.
                                                          В хмпп есть сервера новой волны и мессенджеры новой волны, они радикально отличаются по возможностям от старых серверов.
                                                          В жаббер не ограничение на вход в конференции с других серверов. Можно в конференции на жаббер.ру хоть со своего сервера с http upload входить и постить там картинки.
                                                          Конкретно на вашем сервере Jabber.ru, админ обещал обновить ПО и включить http upload этим летом
                                                          • –1

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


                                                            И про http upload см. выше — на моём сервере он и так есть, как заставить его работать-то?

                                                            • 0
                                                              Вам нужно либо обратится к админу вашего сервера, либо сменить его на 404, либо поднять свой. Можете к примеру два сервера использовать. На 404 заходить в конфы и слать оттуда картинки, а на вашем старом общаться, как общались раньше. Это же жаббер, можно плодить аккаунты тысячами)
                                                              • 0
                                                                Это же жаббер, можно плодить аккаунты тысячами)

                                                                Умножаем эти тысячи на сотни контактов, которые должны ответить на presence type=subscribe, и получаем сотни тысяч проблем с переносом JID :)

                                                                • 0
                                                                  Если Вам будет нужно перенести аккаунту воспользуйтесь последней версий Gajim. В нем есть возможности быстро переноса контактов между серверами.
                                                                  На андроиде рекомендую заносить Jabber ID в адресную книгу, где номера телефонов.
                                                                  • 0
                                                                    быстро переноса контактов между серверами.

                                                                    А вот тут я уже на самом деле не в теме, как к этому отнесутся сотни серверов моих сотен контактов? Что-то я подозреваю, что presence type=subscribe им всё прилетит и побеспокоит их

                                                                    • 0
                                                                      Попробуйте и узнаете) Сотня это относительно небольшое число, если они разбросаны по разным серверам. Пока они не подтвердят подписку, можно и по старому серверу разговаривать.
                                                              • 0
                                                                А заставить всю сотню контактов переехать на новый протокол сможете?
                                                                Имхо это общая проблема всех ИМ. Те из которые поддерживают децентрализацию, шифрование и опен-сорс — недостаточно хорошо работают и не столь популярны как распиаренные проприетарные решения, которые увы рано или поздно оскайпиваются до такой степени когда пользоваться уже больше невозможно но и уйти нелегко.
                                                                • 0
                                                                  А заставить всю сотню контактов переехать на новый протокол сможете?
                                                                  У протокола Matrix есть мосты в другие сети, поэтому можно прямо из любого Matrix-клиента напрямую общаться с пользователями других сетей — уже реализованы мосты в Телеграм, Gitter, IRC, Slack и в процессе разработки — Skype, Facebook, Hangouts и т.п.

                                                                  Весь геморрой по переправке сообщений из Matrix в чужеродные сети и обратно берёт на себя Matrix-сервер, поэтому клиентское приложение не будет выжирать трафик, процессор и батарею.
                                                          • 0
                                                            Кстати, вот же ещё проблема — «удалится через 2 дня». В тех же телеграмах и ВК файлы хранятся вечно (хотя бы условно). В то время как далеко не каждый любительский джаббер-сервер типа этого вашего 404.city позволит себе вечное хранение файлов.

                                                            Я пролистал XEP-0363, но не увидел там никаких настроек про время жизни файла. То есть обычный пользователь даже не может прямо через клиент узнать, сколько его файл проживёт? Только ходить на сайт выглядывать едва заметную надпись «HttpUpload 1Gb & 2 day»?
                                    • +4
                                      В долгосрочной перспективе цель проекта – создать открытую альтернативу существующим проприетарным мессенджерам, повторить в отношении мессенджеров то, что сделал Android в отношении операционных систем для мобильных телефонов.

                                      Это сделал не android, а Google. Производителям мобильных устройств оказалось выгоднее использовать android который поддерживает огромный google, чем пилить каждые несколько лет свои собственные ОС не совместимые с друг другом. Сравниваем с apple у которой есть ресурсы на поддержания и развития своей собственной замкнутой экосистемы.

                                      Текущие лидеры в мессенджерах взлетели тоже не на пустом месте, а чуть ли не буквально сжигая мешки с деньгами. Примерно тоже самое твориться с браузерами, компании лишенные денежной поддержки сдуваются (opera\mozilla). Что бы новый мессенджер в текущих условиях мог захватить хотя бы часть рынка, у него должно быть что то новое, чего нет во всех остальных, или должны быть огромные денежные вливания.
                                      • 0
                                        Все правда, но прежде, чем Google популяризировал Андроид, Энди Рубин его создал.

                                        > Текущие лидеры в мессенджерах взлетели тоже не на пустом месте, а чуть ли не буквально сжигая мешки с деньгами

                                        Аналогично, в 2006 году Microsoft и Nokia сжигали мешки с деньгами, создавая свои мобильные операционные системы, а всех победил Андроид, с финансированием на два порядка меньше конкурентов.

                                        Сравнение с браузерами не вполне корректно, т.к. в браузере сетевые эффект слабые — мой выбор браузера никак не зависит от выбора браузера моих друзей.
                                        • +1
                                          Насчет лидеров — WhatsApp продемонстрировал ровно обратное, никакого сжигания мешков. Да и Skype с Viber не особо потратились, до момента их покупки. Значительно дороже рост стал обходиться с 2015 года, когда ведущие игроки сформировали индустрию и оказалось, что она весьма прибыльна. Здесь, кстати, кроется одна из причин провала WeChat на международном рынке.
                                          • 0
                                            Насчет лидеров — WhatsApp продемонстрировал ровно обратное, никакого сжигания мешков.

                                            Мы не знаем как все было на самом деле, но у WhatsApp была определено большая фора. В WhatsApp первыми додумались использовать номера телефонов, как Jabber ID-ы. Они загнали в ejabberd базу номера телефонов и делали подписки в зависимости от того, есть номер в адресной книги или нет.
                                            Далее пошла реклама: Бесплатные смс-ки! Налетайте все!
                                            • 0
                                              он стоил 1$ в год, а не «бесплатные СМСки»
                                        • +7

                                          IMHO без End-to-end шифрования, в т.ч. групповых чатов — точно не взлетит. Сложно или нет, но многие мессенджеры эту фичу уже осилили, кто-то лучше, что-то хуже, и пути назад уже нет. Что касается "что знают трое" — это, конечно, правда, но далеко не вся. Риск утечки увеличивается с ростом числа участников, но не становится равным 100% начиная с трёх человек. А вот число посторонних желающих получить информацию, которая их никак не касается — постоянно растёт. Пока это были только спец.службы — это было относительно терпимо, хотя в случае наших ещё и был шанс что информация от них уйдёт "налево" и попадёт к конкурентам. Но сейчас информацию хотя вообще все подряд, для показа рекламы, для продажи, просто на всякий случай чтоб было… End-to-end шифрование позволяет отсечь 99.999% любопытствующих, оставляя место только добровольному разглашению одним из участников (с чем можно бороться разными методами, от технических до юридических) либо утечке с заражённого малварью устройства одного из участников (с чем тоже можно бороться).


                                          Кстати, а чем не устроил Matrix?

                                          • 0
                                            IMHO без End-to-end шифрования, в т.ч. групповых чатов — точно не взлетит

                                            Никто не спорит, что шифрование нужно. Вопрос приоритетов. А приоритеты определяются соотношением потребности к потраченным силам на разработку. Потребность в шифровании, конечно, есть, но она не выглядит так, что нужна абсолютно всем и без нее никуда. Где-то видел статистику, что в Телеграме шифруется меньше 1% чатов.


                                            Или пример емейла. Из крупных игроков еще год назад TLS для межсерверной передачи данных был только в gmail. Не end-to-end шифрование, а эквивалент HTTPS для передачи почты между серверами. И что, все из-за этого ушли с mail.ru на ProtonMail?


                                            Кстати, а чем не устроил Matrix?

                                            Хороший проект, но с другими целями и приоритетами.

                                            • +1

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


                                              Что касается email, то TLS там никого не волнует вообще — кому нужна безопасность тот использует PGP/GPG.


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


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

                                              • 0

                                                Согласен, все верно. Вопрос ведь не в принципе, а в приоритетах — можно потратить время на OTR, а можно на что-то другое. Что важнее пользователям, на то и нужно тратить. Сейчас, например, больше всего запросов на повторение функционала Slack-а в каком-то виде.

                                                • 0

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

                                            • +5

                                              А поподробней можете описать чем ваши цели и приоритеты расходятся с Matrix.org?

                                          • +8
                                            В чем идеологическое и принципиальное технологическое отличие от упомянутого вами XMPP? (я не программист, если можно — объясните как «не-программисту»)

                                            Сейчас у меня ощущение, что вы переизобрели жаббер, а ваша простота API и компактные RFC — вещи, которые со временем превратятся в талмуды к какому-нибудь релизу «v2.0»
                                            • +5
                                              Поддерживаю вопрос. Почему бы не доработать в нужную сторону любой из зиллиона известных XMPP проектов?
                                              • 0
                                                Если доработать XMPP, то он перестанет быть XMPP. Например, WhatsApp использует «доработанный XMPP». Нет ни для кого никой пользы от того, что протокол WhatsApp-а основан на XMPP. А если нет пользы, то в чем смысл? Легче и удобнее начать с чистого листа.
                                                • +1
                                                  Если бы WhatsApp начинал с нуля, тогда бы значительные ресурсы были израсходованы на создание собственного ПО, а это годы и большие деньги. WhatsApp вполне мог обогнать какой нибудь другой мессенджер и никто о нем бы не знал. Что бы создать продукт не достаточно, его написать, но надо еще обеспечить рентабильность и высокую отказоустойчивость.
                                                  WhatsApp выбрал eJabberd из-за того что он обладает высокой отказоустойчивостью. 2 000 000 человек на одной ноде, из-за этого и любят XMPP(в особенности разработчики проприетарных мессенджеров). На дешевом VPS с eJabberd-ом можно расположить сервер с тысячами человек в онлайне
                                                  Стресс-тест Ejabberd. 2 000 000 в онлайне на одной жаббер-ноде blog.process-one.net/ejabberd-massive-scalability-1node-2-million-concurrent-users
                                              • 0
                                                На счет контактов на сервере не согласен.
                                                Во-первых, для отправки онлайн статуса не вижу в этом необходимости — это может сделать клиент, раз он онлайн. Тот же ping + timeout решит проблему offline.
                                                Во-вторых, может я не хочу иметь все контакты на всех устройствах. Может я хочу завести 2+ аккаунта (рабочий, личный, ...) Да и вообще не хочу делиться контактами хорошего сантехника с сервером. Было бы неплохо (да и оригинальная фича) сделать выборочную синхронизацию контактов. А еще интереснее, сделать разделение контактов на «Саша мобильный», «Саша компьютер», «Саша рабочий» с возможностью отсылать сообщения конкретному субконтакту (и не забыть сделать возможность отсылать себе «на мобильный»!) и контакту в целом (путь принимают все, кто онлайн).

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

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

                                                  Не может. Его Android просто убил т.к. память на телефоне кончилась.


                                                  Тот же ping + timeout решит проблему offline

                                                  Кто и по каким адресам его будет рассылать, если клиент уже убит операционной системой, а на сервере вы предлагаете контакты не хранить?


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

                                                  А это будет уже проблемой конкретного сервера/узла. Если из узла идет спам, то он потеряет репутацию и от него перестанут принимать сообщения.

                                                  • +1
                                                    Если его Android убил, то он уже offline. Ping делает клиент к клиенту, в крайнем случае сервер к клиенту. Если ping'а нет — значит offline.
                                                    Т.е. в рамках одного узла можно рассылать спам, затем подключаемся к другому узлу и рассылаем там.
                                                    • 0
                                                      если в фоне будет постоянный пинг, то батарейка будет жить недолго.
                                                      А в ios вообще невозможно такое сделать.
                                                      • 0
                                                        Ping нужен только если клиент реально online.
                                                        • 0
                                                          А пинг зачем если клиент онлайн?
                                                          Вы же как раз хотите пингом выяснять что он онлайн или я неправильно понял?
                                                      • 0
                                                        Понятия «online» и «offline» размазалось когда появились пуш-уведомления. Приложение не запущенно, но операционка может его запустить тем или иным способом при получении уведомления.
                                                        • 0
                                                          Самое интересное в этих пуш уведомлениях — каким образом мессенджеры, которые заявляют о том что у них сквозное end-2-end шифрование, могут шифровать пуш сообщения?
                                                          У того же вацапа или вайбера или телеграмма идет открытое сообщение через пуш сервис гугла и Эпла.
                                                          Ведь приложение в этот момент не работает, а сообщение можно прочитать.
                                                          Следовательно их енд-2-энд не работает.
                                                          Т.е. и гугл и эпл в курсе всей переписки всех мессенджеров.
                                                          По идее надо делать так чтобы приходило шифрованное пуш сообщение и только в момент запуска пользователем приложения оно бы расшифровывалось (кстати такие мессенджеры есть).
                                                          • –1
                                                            а у некоторых так сделано — появляется просто сообщение что что-то пришло, а забирается оно только тогда когда приложение запустилось и забирается напрямую с сервера мессенджера.
                                                            Вот так делать — совсем другое дело.
                                                            А так получается что все эти end-2-end на самом деле с гуглом и эплом посередине.
                                                            И почему-то никто на этот факт внимания не обращает.
                                                  • +3
                                                    Я думаю, что не надо хранить ничего на сервере. Сервер должен быть лишь stateless маршрутизатором и не знать ничего о клиенте. Должна быть возможность подключения к любому серверу, с сохранением своего аккаунта. Сервера должны создавать mesh-сеть. Должна быть возможность создания приватного сервера предприятия, который, тем не менее, мог бы посылать и получать сообщения с других серверов.
                                                    На сервере можно хранить и ростер и переписку, но только в виде шифрованного блоба.
                                                    Одна из проблем джаббера — если у меня есть аккаунт на gmail, я уже не могу переключиться на другого вендора. Если предприятие запускает свой сервер — это еще один бесполезный аккаунт, который я потеряю вместе со списком контактов, как только уйду с этого предприятия.
                                                    • 0

                                                      Не получится. Во-первых, невозможно надежно показывать онлайн статус без контактов на сервере. Во-вторых, web-клиент удобен, а web-client требует контактов на сервере. Не пробовали пользоваться web.wechat.com? Настолько неудобно, несколько вообще можно себе представить. А там просто сообщений старых нет.


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

                                                      • 0
                                                        если у меня есть аккаунт на gmail, я уже не могу переключиться на другого вендора

                                                        Кстати, Tinode как раз эту проблему и решит.

                                                      • 0
                                                        На сервере можно хранить и ростер и переписку, но только в виде шифрованного блоба.

                                                        Реквестирую больше конкретики: чем шифровать и кто, как и где расшифровывать будет?

                                                        • 0
                                                          Это тривиальная схема. Шифруете любым симметричным алгоритмом со случайным, длинным паролем. Пароль тоже шифруется — симметричным или несимметричным алгоритмом и прикладывается к блобу. В качестве мастер пароля, используемого на 2м этапе, можно использовать пароль для входа в систему или закрытую часть своего ключа.
                                                          Клиент подключается, аутентифицируется. Ни пароль пользователя, ни закрытая часть ключа при этом на сервер не попадет. Запрашивает блоб принадлежащий аутентифицированному аккаунту, сливает, расшифровывает и работает.
                                                          • 0
                                                            Вот на этом «аутентифицируется» поподробнее. Если пароль на сервер не попадает, то как аутентифицируется-то? Сразу предупреждаю, что таскать с собой закрытый ключ вместо пароля ни один обычный пользователь не станет.
                                                            • 0
                                                              Пара затяжек напечатанной и скрученной в небольшой косячок документации CRAM-MD5 сразу откроет глаза на то, как это можно сделать. Со следующей затяжкой приходит понимание, что это далеко не единственный вариант.
                                                              • 0

                                                                Spf

                                                        • 0
                                                          А если у вас собственный сервер, всё становится очень удобным. Вы храните у себя свой список контактов, свои сообщения и т.п.
                                                          • 0
                                                            Я зарегистрован на двух серверах. jabber.ru и 404.city.
                                                            Эти xmpp-сервера имеют разные подходы к доставке сообщений. На jabber.ru хранится история сообщений. На сервере 404.city сообщения не хранится. На 404.city сообщения напрямую передаются на онлайн устройства, как в описанном вами предложения.
                                                            Поскольку я на практике знаком с обоими подходами, что лучше хранить историю на сервере или нет, я сказать не могу.
                                                            С одной стороны, подход с отсутствием хранения истории на сервере большой плюс к приватности.
                                                            С другой стороны, когда два устройства включаются поочередно ( оставил включенным пк, а мобильная сеть пропадает на минут пять), сообщения приходят не туда.
                                                            На Jabber.ru, где есть серверное хранение истории, так не происходит. Приходится выбирать между большей приватностью или удобством (ну или просто отключать второе устройство)
                                                            К тому же, отсутствие хранения истории сообщений не удобно тем кто любит перечитывать старые сообщения (да, есть такие люди и их много)
                                                            Как раз эти проблемы разных вкусов и предпочтений и пытается решить XMPP, со множеством XEP-ов

                                                            Проблема переноса аккаунтов в жаббере, частично решена в клиентах.
                                                            В декстопном Gajim, есть возможноcть экспорта контактов из одного аккаунта в другой.
                                                            В мобильном Conversations, есть возможность хранить жаббер-контакты в адресной книге андроида, как номера телефонов.
                                                            Существует так же мобильный жаббер kontalkt, где JabberID это номера телефонов. Он работает по принципу добавления контактов так же как WhatsApp, Telegram и т.д
                                                            • 0
                                                              1)Можно позволить клиенту решать где хранить сообщения(причем как глобальным пунктом в меню, так и статусом «полуофлайн, посылать сообщения на другое устройство»)
                                                              2)Перечитывать можно и оффлайн. Особенно если предусмотреть удобную синхронизацию состояния(контактов\истории\etc) без участия сервера(по вафли в одной сети\через файл).
                                                          • –3
                                                            А можно инструкцию на русском языке? Как запустить-попробовать Ваш мессенджер?
                                                            • 0

                                                              translate.google.com решает проблему процентов на 90.

                                                            • +2
                                                              Я думаю, вам нужно подумать о том, чтобы можно было подключать контакты из скайпа, телеграма, воцапа и вайбера в ваш протокол. Я хочу заходить в ваше приложение, отправлять человеку из контакт-листа сообщение и не думать о том, какой у него мессенджер. Я один раз добавил Васю Пупкина как vasya в телеграме, а дальше пусть ваш мессенджер отправляет сам ему в телеграмм сообщение и принимает от него ответы. Вот это было бы круто и 100% взлетело бы.
                                                              • 0
                                                                Не настолько это нужно хомячкам. Стоит у них по 4 чатов и не жужат. А вот в реализации неофициальный гейт в 4 разных чата это мегагемор. А если они ещё и сопротивляться начнут…
                                                                • 0
                                                                  Но хотя бы просто запилить возможность создания гейтов в протоколе вполне можно. В том же XMPP гейты всегда делались независимыми разработчиками
                                                                • 0
                                                                  То есть пойти по пути Миранды и друзей? Спасибо, но не надо. Это другой продукт, с другими целями.
                                                                  • 0
                                                                    Почему сразу Миранды, по пути XMPP-транспортов же :)

                                                                    Ах да, это ещё одна фича, которую я считаю обязательной для кандидата в идеальные/универсальные мессенджеры
                                                                  • 0
                                                                    Тут к сожалению часто бывает проблема, скайпы, телеграмы и воцапы не очень то горят желанием, что бы к ним подключались по-сторонним мессенджерам. Пользователкая база это капитал для них.
                                                                    Задумка у XMPP была хорошая, как раз создать один такой единый стандарт коммуникаций для всех мессенджеров, а дальше пускай бы писали свои расширения, но она запнулась об это.
                                                                    Сегодня WhatsApp разрешит писать в него с жаббера, а завтра все кто недоволен WhatsApp, но вынужден его держать удалит его и компания потеряет часть пользователей.
                                                                    • 0
                                                                      На шлюзы маленького мессенджера никто внимания и не обратит. А когда обратят возможно это уже станет необязательной фичей мессенджера, он и без них проживет.
                                                                    • +1

                                                                      Был такой мессенджер, Meebo, ещё до воцапов с телеграмами — он делал именно так, как вы описали, позволял подключить кучу разных мессенджеров и объединял их все в обном удобном веб-приложении и приложении для телефона.
                                                                      Мои знакомые неудомевали, как это я в аське круглосуточно онлайн, даже когда лечу над Тихим oкеаном.
                                                                      А потом из купил Гугл и закрыл.

                                                                    • +3
                                                                      Зачем писать свой месенджер с открытым исходным кодом, если есть signal?
                                                                      • 0

                                                                        Зачем писать Postgres если есть MySQL? Зачем писать Mongo если есть Postgres и Mysql? Зачем писать Redis, если есть Mondo, Postgres и Mysql? Зачем писать RocksDB если…


                                                                        У каждого проекта свои цели и приоритеты. Signal про криптографическую безопасность. Tinode про федерацию, удобство пользователя и гибкость настроек.

                                                                        • 0
                                                                          Который привязан к телефону.
                                                                          • 0
                                                                            Код открыт, телефон можно заменить на что угодно, немного переписав пару классов. Телефон используется для высылки кода подтверждения и пушей. Если они вам не нужны — можно на никнеймы перейти за пару минут.
                                                                        • +3
                                                                          Еще один вариант matrix?
                                                                          • 0
                                                                            Ээ, федерации нету? Так неинтересно. Без федерации (и без p2p) любой школьник может наклепать мессенджер за неделю, а вот с федерацией сразу вылезает куча проблем (многие из которых не решены ни в XMPP, и в E-mail).

                                                                            И не забудьте решить проблему смерти серверов в федерации. А то мне уже приходилось разок эвакуироваться с умершего jabbus.org — это весьма неприятно.
                                                                            • +1
                                                                              В свете недавних событий с Телеграмом подумывал плотнее переходить на TOX. Да там свои проблемы, но просто еще один велосипед городить смысла тоже не вижу.
                                                                              • 0
                                                                                На мой взглят основная проблема в TOX, это то что сообщение не доходят если получатель офлайн.
                                                                                • 0
                                                                                  им просто блокчейна не хватает — для хранения ников и сообщений
                                                                              • +1
                                                                                Мне кажется суть этого проекта не совсем в этом, но лично мне был бы интересен софт, с помощью которого можно было просто сделать свой чат на своём сервере. А если бы на него уже будет готовый лаунчер для андройда и прочих систем, было бы совсем шикарно.
                                                                                Скачал в плеймаркете — ввел адрес сервера — авторизовался — и общаешься спокойно, не боясь рос******зора.
                                                                                • 0

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

                                                                                  • 0
                                                                                    Nextcloud Talk. Устанавливаете сервер, скачиваете клиенты из маркета. Федерируетесь с другими серверами.
                                                                                  • 0

                                                                                    Интересный проект, я бы попробовал… С чего лучше начать?

                                                                                    • 0
                                                                                      В начале марта на Geektimes были статьи от Mobile1 тоже про новый месенджер. Как было в момент публикации на Google.Play у них 5000+ установок, так и осталось сейчас. Отсутствует киллер фича чтобы даже просто установить попробовать, и тем более кого-то ещё уговаривать.
                                                                                      С 2002 года пользуюсь разными месенджерами. ICQ и клоны получили распространение, так как в те времена просто не было ничего подобного. Skype дал возможность бесплатно общаться голосом по всему миру, при этом требовал минимальных усилий от пользователя, легко пробивал всякие NATы, файрволы.
                                                                                      WhatsApp пришёл как бесплатная замена SMS и при этом тоже требовал минимальных усилий привязываясь к номерам телефонов, установил и всё. Телеграм акцентировался на безопасности и, конечно, личность Дурова играет большую роль.
                                                                                      Киллер фичей была бы возможность обмениваться трафиком между разными сервисами, но это не выглядит реалистичным, абсолютно.
                                                                                      Плюс ещё момент, что на месенджерах до сих пор никто не смог зарабатывать. Заработок происходил только в момент продажи предыдущими владельцами Майкрософт, Фейсбук и т.д.
                                                                                      • +1
                                                                                        Спасибо за упоминание нашего проекта.
                                                                                        Кстати, скоро будет 10000, но действительно, сделать массовым мессенджер нелегко.
                                                                                        Чтобы был виральный эффект, нужно набрать критическую массу, может быть 100 тыс, а может и 1 млн.
                                                                                        Т.е. на первом этапе нужно продвигаться в любом случае.
                                                                                        Мы этим пока не занимались, потому что допиливали видеозвонки и Live TV режимы, вот только на днях выложили версии со стабильными и качественными видео и Live.
                                                                                        Еще одна проблема — нужно сделать все теже самые фичи что например в WhatsApp и добавить свое, т.е. по сути в идеале нужно сделать продукт, который умеет все тоже самое и плюс на голову выше их по другому функционалу.
                                                                                        Вдобавок к этому мы попали под раздачу РКН в связи с блокировкой Телеграм, т.к. мы хостимся на Амазоне и возможно в РФ он не работает (по крайней мере несколько раз пользователи жаловались и в тоже время у них же через впн все работало).

                                                                                      • 0
                                                                                        Что мешает взять в качестве frontend-а телеграм и дорисовать свой backend? Исходники телеги лежат в гитхабе под GPLv3. Бери не хочу.
                                                                                        • 0

                                                                                          А если мы хотим сделать что-то, чего в Телеграме нет? А если Телеграм хочет сделать что-то, что мы считаем неправильным? Если если Дуров пришлет нам письмо "Прекратите использовать нашу интеллектуальную собственность"?

                                                                                          • +1
                                                                                            1) Ну для начала стоит сделать то что уже есть в телеграме.
                                                                                            2) это проблема — да.
                                                                                            3) ну это. пошлёте ему в ответ фоточку стольмана, поедающего козявку с подошвы ноги. ну или ещё что-нить смешное про gpl
                                                                                            • 0
                                                                                              > 3) — клиентское приложение — да, а серверное, даже если там чистый reverse engineering и нет ни строчки телеграмного кода — нет. Если пожелает, то прикроет или, как минимум, создаст большие проблемы.
                                                                                              • 0
                                                                                                Ну как минимум часть серверного телеграмного кода выложена под gpl (они так его прихватывали из ВК). Хотя они уже переехали на mtproto 2 и скорее всего ничего не осталось. mtproto защищен лицензией, но оно собственно и не надо. с клиентской стороны достаточно реализовать апи tdlib, а оно имеет открытую лицензию.
                                                                                            • 0
                                                                                              Форкнитесь и…

                                                                                              > А если мы хотим сделать что-то, чего в Телеграме нет?

                                                                                              … сделайте…

                                                                                              > А если Телеграм хочет сделать что-то, что мы считаем неправильным?

                                                                                              … выкиньте…

                                                                                              > Если если Дуров пришлет нам письмо «Прекратите использовать нашу интеллектуальную собственность»?

                                                                                              … сошлитесь на GPLv3.

                                                                                              Вроде сходится?

                                                                                              Код десктопной телеги — сравнительно простой и достаточно продуманный. Приличный современный C++. Чтобы сделать что-то подобное самим — придется сильно потрудиться. И это только fontend и только десктоп. А есть ещё мобайл во всех его красках без которого современный мессенджер обречен на смерть ещё не родившись.

                                                                                              Даже на приличный современный frontend нужно ресурсов. Потяните с нуля?
                                                                                              • +1
                                                                                                Форкнитесь и…

                                                                                                Разговор про "дорисовать свой backend". И какой смысл реверс-инженирить сервер, чтобы сделать из него несовместимый продукт? Профит в чем?


                                                                                                … сошлитесь на GPLv3.

                                                                                                Речь не про клиентские приложения, а про гипотетический сервер.


                                                                                                Код десктопной телеги

                                                                                                А вот интересно, насколько популярен десктопный клиент? Есть где-нибудь цифры?


                                                                                                С клиентскими приложениями тоже не все отлично, т.к. GPL затрудняет создание независимых коммерческих проектов.

                                                                                                • 0
                                                                                                  Разговор про «дорисовать свой backend». И какой смысл реверс-инженирить сервер, чтобы сделать из него несовместимый продукт? Профит в чем?

                                                                                                  Несовместимый с чем? Как раз наоборот, совместимый.
                                                                                                  С клиентскими приложениями тоже не все отлично, т.к. GPL затрудняет создание независимых коммерческих проектов.

                                                                                                  Это если брать код и делать свою коммерческую версию на его основе, если же пользовать ПО, то никаких трудностей нет. Насколько я понимаю, в этом проекте коммерции (на коде) не предполагается. Ну и к слову, Red Hat c Oracle что-то не жалуются на GPL.
                                                                                                  • 0
                                                                                                    > А вот интересно, насколько популярен десктопный клиент? Есть где-нибудь цифры?

                                                                                                    Если мы говорим за messender широкого плана, то наличие и десктопной и мобильной версий — это IMHO must have. В противном случае mobile only версия конечно наберет свою пользовательскую базу, но скажем для рабочих процессов это использовать уже не получится.

                                                                                                    Ну и голосовые конференции конечно же. Без возможности пообщаться голосом причем нескольким участникам — это ни о чем. Видео не так важно.
                                                                                            • 0
                                                                                              Возможно, blockchain (но не криптовалюта) может быть использован в качестве основы для построения распределенной системы репутации, хотя пока и не очевидно каким образом.

                                                                                              .
                                                                                              Блокчейн — не поможет, это централизованная и уязвимая структура.


                                                                                              Вам следует использовать распределённую сеть доверия.

                                                                                              • 0
                                                                                                Блокчейн — не поможет, это централизованная и уязвимая структура.

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


                                                                                                Вам следует использовать распределённую сеть доверия.

                                                                                                Скорее всего будет какая-то производная от https://en.wikipedia.org/wiki/EigenTrust


                                                                                                Возможно, стоит написать отдельную статью про распределенную систему учета репутации.

                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                  • 0
                                                                                                    Это уже есть и называется Perfect Dark. Используется для анонимного файлшаринга. Узкое место — скорость, и в случае p2p обмена с распределённым хранилищем это будет всегда так. Ну и несколько десятков гигов надо выделить под общее хранилище, да. Зато и сервера не нужны
                                                                                                  • 0

                                                                                                    Вот что-то не получается ни у кого сделать такое. Обычно, либо оно централизованное, либо очень неудобное и убогое. На Tox можно для примера посмотреть.

                                                                                                    • 0
                                                                                                      Не получится в эпоху мобильников сделать децентрализованное. Потому что мобильники сидят за NAT, имеют ограниченные ресурсы — аккумулятор, платный трафик, вычислительные.
                                                                                                      Каким образом предлагается обслуживать полтора миллиарда мобильных клиентов как, к примеру, у WhatsApp?
                                                                                                      Если не считать торренты, то децентрализация получилась только у раннего Скайпа. И то, в эпоху десктопов было немало жалоб на прокачку чужого трафика на клиентах выбранных супернодами.
                                                                                                      Плюс были проблемы массовых сбоев когда оказывалось, что суперноды не спешили обновлять клиента.
                                                                                                      Так же есть риски визита спецслужб, если вдруг окажется, что через ваш компьютер прокачивался какой-то не очень хороший трафик. А эти риски сейчас совсем не нулевой вероятности.
                                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                        • 0
                                                                                                          тут ведь можно сочетать.

                                                                                                          Сделать что-то централизованное, неудобное и убогое?
                                                                                                          А если серьёзно, прежде чем пытаться сочетать, надо тщательно проанализировать почему раньше ни у кого не получалось. Интуиция подсказывает, что тут мешает что-то фундаментальное. Совместить распределённость, синхронизацию, и эффективность кажется, если не невозможной, то очень сложной задачей. А каким должен быть оптимальный компромисс — не совсем понятно.
                                                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                            • 0
                                                                                                              Эти проблемы можно решить все вместе только тогда, когда каждый пользователь обзаведётся своим промежуточным сервером, который будет постоянно онлайн, и все подключения будут происходить через него.
                                                                                                              Эта стратегия, кстати, позволит решить множество других проблем, связанных с приватностью и анонимностью.
                                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                      • 0
                                                                                                        Опишите пожалуйста поподробнее — чем не устроил уже существующий открытый и активно развивающийся протокол Matrix?

                                                                                                        Практически всё, что вы описываете и планируете сделать, там уже реализовано на вполне юзабельном уровне. Есть даже уже несколько разных имплементаций клиентов на разных языках программирования matrix.org/docs/projects/try-matrix-now.html#clients и серверной части matrix.org/docs/projects/try-matrix-now.html#servers

                                                                                                        И даже есть рабочие шлюзы в Телеграм, Гиттер, IRC, Skype и другие мессенджеры.

                                                                                                        Мне кажется будет логичней и эффективней присоединиться к команде Matrix, чем изобретать свой велосипед.
                                                                                                        • 0

                                                                                                          Фиг с ним, с убогим REST, но — чё там с вебсокетами?)