Заметка по мотивам примерно полугода использования Telegram; решил сделать список фич, нетипичных (пока?) для jabber-клиентов, но которые встретил в Telegram.
В большинстве случаев в jabber’e уже есть соответствующее расширение и функция просто пока не реализована в клиентах или серверах – возможно, просто не особо востребована?
Итак:
- Пересылка сообщений – XEP-0297: Stanza Forwarding. В целом, ИНОГДА полезная функция – бывает нужно отправить одно сообщение нескольким участникам – обычно решается копипастой. В Telegram, правда, пересылка сохраняет источник, что не всегда нужно – в итоге иногда проще решать той же копипастой.
- Реакции – XEP-0444: Message Reactions. В целом, популярная функция. Уже реализована в Dino, видел упоминание поддержки в slixmpp, планируется в Conversations 3.
- Ответы – XEP-0461: Message Replies. Ок, да, соглашусь – одна из немногих удобных фич – это наличие тредов в обсуждениях. Пока, в основном, в клиентах есть цитирование без отсылки непосредственно на сообщение. Ответы уже реализованы в Dino – надо будет порассматривать при случае, как оно там выглядит. Планируется в Conversations 3.
- Стикеры. Бесполезная хрень, но ок – расширение есть и под это – XEP-0449: Stickers. Реализаций не видел.
- Удаление сообщений. В jabber’e это есть в виде расширения XEP-0424: Message Retraction. Есть, например, в Blabber (форке Conversations), Movim – возможно, где-то еще. Планируется добавить в Conversations 3. В Telegram это в уродливой форме в виде возможности удалять вообще все, в том числе не свою переписку.
- Модерация – XEP-0425: Message Moderation. Да, может быть полезно. В jabber’e это сейчас по принципу “что в интернет попало – остается там навсегда” и, например, зачистки последних 20 сообщений пустыми сообщениями через бота. Есть в задачах у Conversations.
- Состояние прочтения. Тут я пока плаваю. Есть XEP-0333: Chat Markers – да, что-то из этого я вижу в клиентах, в том же Conversations – “такой-то дочитал до этого сообщения”. Вроде как это должно синхронизироваться между отправителями и получателями. Т.е., в теории, если ты прочитал какое-то сообщение на одном устройстве – это должно синхронизироваться и на другое ТВОЕ устройство. Т.е., как минимум, должен сброситься счетчик непрочитанных. На деле этого нет и я вообще не уверен, является ли 333-й XEP нужным расширением. Я пробовал тестировать Conversations, Blabber, Gajim, при этом использовал как свой ejabberd, так и найденные на других серверах (jabbers.one и gajim.org) Prosody разных версий. Нигде нет того, что я хочу – сброс непрочитанных на 2-м устройстве при прочтении их на первом. Когда у тебя куча сообщений и больше одного устройства – это реально начинает напрягать. Ну или хотелось бы хотя бы функцию “пометить все чаты прочтенными” в качестве костыля.
- Блоги. Вроде пока не видел прямого аналога каналам, когда овнер пишет, а остальные только комментируют. С другой стороны, я мало знаком с микроблоггингом непосредственно в джаббере (т.е., не Juick и подобные), хотя местами видел какие-то реализации. В целом, похоже, что это все же XEP-0277: Microblogging over XMPP.
- Кнопки. Да, полезная функция для создания ботов. Такого пока нет, есть только набросок XEP’а: https://xmpp.org/extensions/inbox/buttons.html – хотя в jabber’e есть, например, ad-hoc-команды. Вспоминаем Isida и ее конфигурирование. Но это все же чуть-чуть не то…
- Возможность переходить к цитате и обратно к непрочитанным – должно быть завязано на ответы или хотя бы на цитаты, но в целом – может реализовываться по-большей части чисто на клиенте. Т.е., исключительно юзабилити.
- Кросс-девайсное редактирование. Да, этого нет. Фразу, набранную кое-как на мобилке, я не могу исправить с десктопного клиента. Или хотя бы с другой мобилки. Редактирование даже отдельных фраз (last message correction) жестко завязано на сессию клиента. Чуть в сторону – другой клиент начинает видеть новую фразу, а не редактирование старой:
[16:50:45] <rain> Так, Gajim забыл за возможность редактирования, как и ожидалось.
[16:54:34] <rain> В Conversations поправилось исходное сообщение, в Psi появилось новое.
[16:58:49] <rain> Да. 1) На втором телефоне тоже 2 фразы, а не одна поправленная. 2) опция правки так и не появилась.
[16:59:13] <rain> Т.е., правки в лучшем случае работают в рамках устройства, в худшем - в рамках сессии клиента
В целом – более-менее все. Еще вопрос вызывает список медиафайлов и ссылок – по-идее, это должна быть не чисто client-side-фича, а как-то завязана на сервер (или хотя бы использовать какое-то хранилище мета-информации)
Ну и из минусов / косяков, замеченных в TG (это если не цепляться к моментам, которые by design – например, привязку к телефону):
- Возможность удалить сообщения у собеседника – выше уже упомянул. Бесит, когда ты вкладываешься в написание текста, а потом какая-то истеричка гробит твои старания.
- Возможность удалиться у собеседника – фича, в общем-то, не новая и существовала задолго до TG, но я предпочитаю сам определять, что мне видеть в ростере. В куче в предыдущей функцией тоже вызывает раздражение: ты занят различными делами, не перечитываешь список контактов каждые 5 секунд – и тут спустя часы / дни понимаешь, что “что-то не то” и мучительно пытаешься вспомнить, что ж произошло, кто решил выпилиться и какого, собственно, черта это произошло?
- Поиск завязан на онлайн – любой запрос шлется на сервер. О, это особенно заметно было на нестабильной связи. Ты сделал запрос, вот тебе уже результаты поиска в диалоге, например – и ты даже не можешь на них ткнуть, чтоб посмотреть, что ж там было найдено. Без “доклада наверх” клиент ни на что не способен.
- Нет вменяемых vCard. Да, после jabber’а тут как-то куцо все.
- Отсутствие закладок на чаты. Ты или подписан и видишь счетчик непрочитанных, или удаляешь чат вообще. Ну, как костыль – можно написать сообщение (где-то куда-то) с адресом канала и добавить его потом в “избранное”.
- Отсутствие правки цитаты. Для тех, кто выражается короткими предложениями не более 5 слов по 3 буквы в каждом – наверное, не проблема, ибо всегда можно нажать “Ответ” на нужной фразе и будет понятно, про что речь. Если же фраза чуть сложнее по уровню, чем “я покакал”, то становится сложно понять, на что давался ответ.
И да. Жалобы на повышенный трафик из-за XML’а и на статусы в джаббере смешны после постоянного слежения за действиями пользователя и смены статуса “в сети / недавно был”, а также “прочитано / не прочитано” в TG в случае, если не шевелишь мышкой буквально 30 секунд.
Да и в целом – сейчас размер фото на мобилке равен покупаемому когда-то пакету трафику на GPRS’е (5 МБ, да), на котором я чатился в jabber’e, читал новости и флудил на форумах. Так что дело не в XML’е и статусах.
Update: как-то забылась еще одна фича, которая иногда попадается – голосования. Да, именно в таком виде в jabber’e их сейчас нет (в т.ч. нет расширений). Правда, для конференций элементарно реализуется ботами (особенно если добавить кнопки), так что надо ли это в протоколе?