Заметка по мотивам примерно полугода использования 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 их сейчас нет (в т.ч. нет расширений). Правда, для конференций элементарно реализуется ботами (особенно если добавить кнопки), так что надо ли это в протоколе?