LINUX.ORG.RU
ФорумTalks

Убийца XMPP по имени Matrix — никто не пробовал?

 , , ,


3

1

$subj. Имеем очень интересный IM по имени matrix (https://matrix.org), который я бы описал как «взяли концепции электронной почты и без изменений перенесли в IM». Есть т. н. homeserver'ы (== «почтовые серверы»), на которых хранится история; есть клиенты, которые к ним подключаются.

«Комнаты» могут быть раскиданы по нескольким серверам. Есть адекватная синхронизация истории, есть адекватный мультилогин. Ах да, это всё немного похоже на Git: ведётся обмен не сообщениями, а состоянием и историей.

Есть референсный homeserver с веб-клиентом (synapse), есть клиенты для iOS и Android. Деплоить они его предлагают через б-гомерзкий virtualenv, но я опакетил под арч.

Anyone interested? Или, может быть, кто-то уже юзает?

UPD: join us at #lor:matrix.org.

★★★★★

Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от zloelamo

XEP-0313. Мультилогин с рождения хорош. Почти все проблемы из этого списка решаются правильным выбором сервера. Трафикопотребление с XEP-0198 умеренно, остальные пункты (проверено экспериментально) рядовому пользователю непонятны.

xmpp это замена irc.

zloelamo такое zloelamo.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

XEP-0313

Нуу... Как тебе сказать. Ejabberd научится его для комнат только через пару месяцев. Клиенты тоже не дай бог как умеют.

kirk_johnson ★☆
()
Ответ на: комментарий от t184256

Почти все проблемы из этого списка решаются правильным выбором сервера.

Да нах никому не надо пытаться эти сорта говна различить. Кроме того сложно переезжать с одно на другой.

zloelamo ★★★★
()
Ответ на: комментарий от Lordwind

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

4.2.

DeadEye ★★★★★
()
Ответ на: комментарий от Lordwind

автодополнения при вводе ника нет

Опять 4.2. Ты года из 2005?

DeadEye ★★★★★
()
Ответ на: комментарий от Lordwind

Я все плагины пиджина перерыл, не нашел.

В дефолте есть у всех клиентов. Кроме QIP, правда.

DeadEye ★★★★★
()

2015 год
Продолжают писать на Python 2

Зря мелочатся, надо было паскаль какой-нибудь взять или фортран, чо.

Deleted
()
Ответ на: комментарий от t184256

Мультилогин с рождения хорош.

2all, чтобы два раза не вставать: вотпрямщас, два клиента с одинаковым приоритетом (равным 0) и я получаю хрен, сообщения приходят только на телефон.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от DeadEye

когда есть готовый к использованию (причем полностью, с годными клиентами и кучей ХЕР) XMPP/Jabber?

Не так всё просто. Ты попробуй найди одновременно чтобы и годный клиент и сервер поддерживали нужный ХЕР. Я вот искал, результат такой: Клиенты не умеют ХЕР-0313, а сервера уже почти все выпилили ХЕР-0136. В итоге выбор либо использовать Gajim(не не нравится он мне, но единственный с поддержкой), либо пользоваться тухлыми(старыми версиями) серверами.

Loki13 ★★★★★
()
Ответ на: комментарий от DeadEye

И да, потому я и держу свой сервер.

Я тоже держу свой сервер, на нем mongooseIM, который поддерживает только XEP-0313. Из клиентов его поддерживает толкьо Gajim, но он мне не нравится. У меня выбор: установить древнюю аки гомно мамонта версию ejabberd(новая тоже не умеет XEP-0136) или пользоваться нелюбимым Gajim'ом.

Я же просто пример привел, когда XEP'ы нифига не реализованы и ждать нормальной ситуации еще фиг знает сколько.

Loki13 ★★★★★
()
Ответ на: комментарий от Loki13

Я же просто пример привел, когда XEP'ы нифига не реализованы и ждать нормальной ситуации еще фиг знает сколько.

А я что, возражаю? Я просто говорю, что с ХЕР такое встречается редко. Обычно если и забрасывают, то совсем уж говно мамонта (например, в Prosody выкинут HTTP Polling).

DeadEye ★★★★★
()
Ответ на: комментарий от vurdalak

Там кто-то выше мне доказывал, что при равных приоритетах сообщения приходят на оба клиента.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

Да, это я некорректно настроил свой homeserver.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от leave

Что конкретно тебя не устраивает в старой версии ejabberd, кроме цифры в номере версии?

То что оно работает как-то нестабильно. У меня MongooseIM еще ни разу не отвалился, а ejabberd на прошлом серваке(такой же был, но не продлил) постоянно то транспорты терял, то просто подвисал\отваливался.

Кстати в новой Prosody тоже XEP-0136 выкинули.

А претензии конкретно к XMPP у меня в том что XEP-0313 до сих пор Draft, а XEP-0136 уже Deprecated. Вот такая блин стандартизация.

//Самый ужас - OpenFire. Зависал стабильно раз в неделю и при этом еще и памяти отжирал дикое количество.

Loki13 ★★★★★
()

что за гомик на твоей аватарке?

rogerw
()

Так, ну я потыкал. Из замеченного:

1) Я не нашёл списка контактов.

2) Конфы настраиваются по наркомански.

3) Лички тоже не нашёл. Если ткнуть в юзверя, создаётся конференция и он туда приглашается.

4) В конфе на 600 пользователей адово тормозит и может повесить браузер. Поди наговнокодили там скриптов.

Это всё про веб-клиент. Протокол оценить не могу, так как смотрю с точки зрения пользователя. Будет десктопный клиент — можно будет попользоваться активнее и оценить, а пока я вебным клиентом немного недоволен. Надо как минимум дизайн упростить и вёрству, а также порефакторить эти скрипты. Я вообще не понимаю, где можно наговнокодить на странице чата, где все действия реализовуются скриптом в пару сотен строк (говорю, так как сам нечто подобное писал).

vurdalak ★★★★★
()

ТС, добавь плиз адрес нашей конфы в ОП. Может кто зайдёт.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Я не нашёл списка контактов.

Его нет.

Конфы настраиваются по наркомански.

Это бета первого релиза референсного (читай отладочного) клиента.

Лички тоже не нашёл. Если ткнуть в юзверя

Это и есть личка.

В конфе на 600 пользователей адово тормозит

Если ты про свойства конференции, то оно итерирует по всей истории.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от intelfx

В конфе на 600 пользователей адово тормозит

Если ты про свойства конференции, то оно итерирует по всей истории.

UPD: нет, я не прав, получение свойств — O(1) относительно объёма истории, это и вправду у них что-то с ангуляром.

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Контактов и лички нет в этом клиенте или вообще в протоколе? Если вообще, то это стоило заранее оговорить, в таком виде оно как im неюзабельно.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Список контактов вообще не имеет никакого отношения к протоколу. Его можно просто хранить на homeserver'е. Сейчас в synapse этого нет.

Что касается личных сообщений — не понимаю, чего ты хочешь. Есть конференции 1:1. Чем они тебя не устраивают? Приведи пример IM, который в этом плане тебя устраивает.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Список контактов вообще не имеет никакого отношения к протоколу.

Его надо синхронизировать между клиентами, у контактов есть статусы и прочее, что прописано в протоколе.

Что касается личных сообщений — не понимаю, чего ты хочешь. Есть конференции 1:1. Чем они тебя не устраивают?

Тем что на конференции и лички распространяются разные правила. Зачем права доступа в конференции «1 на 1», например?

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Его надо синхронизировать между клиентами

Нет, его не надо синхронизировать между клиентами. Напомню, что у каждого клиента есть homeserver. Это не P2P.

Тем что на конференции и лички распространяются разные правила. Зачем права доступа в конференции «1 на 1», например?

Незачем. Их можно просто не использовать. Правила конференций — надмножество правил в личках, поэтому вторые можно реализовать с помощью первых.

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Напомню, что у каждого клиента есть homeserver.

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

Незачем. Их можно просто не использовать.

Это оверхед, а оверхед — это проблемы в будущем.

vurdalak ★★★★★
()
Ответ на: комментарий от intelfx

Ничего, я хотел просто кекнуть.

Обсуждают мессенджер с хттп вместо протокола, мега-кек.

Deleted
()
Ответ на: комментарий от vurdalak

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

Впрочем, я догадываюсь, чего ты хочешь: https://matrix.org/docs/spec/#presence-lists

Это оверхед, а оверхед — это проблемы в будущем.

Хранить и сравнивать друг с другом пять чисел (напомню, что речь о 1:1 конференциях) — это оверхед, способный создавать проблемы?

intelfx ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Список контактов конкретного пользователя в состояние комнаты не входит. Очевидно, да?

Нет, неочевидно. Какой смысл часть информации синхронизировать, а часть нет? Либо пользователь привязан к серверу, либо не привязан, но не что-то среднее.

Хранить и сравнивать друг с другом пять чисел (напомню, что речь о 1:1 конференциях) — это оверхед, способный создавать проблемы?

Да. Любой оверхед создаёт проблемы всё больше по мере разработки. Если сейчас их нет, то дальше появятся.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Какой смысл часть информации синхронизировать, а часть нет?

Ты не понимаешь, как устроена эта инфраструктура. Пользователь зарегистрирован только на одном homeserver'е и всегда связывается только с ним. Зачем ему пересылать свой список контактов на какой-то другой homeserver?

Да. Любой оверхед создаёт проблемы всё больше по мере разработки. Если сейчас их нет, то дальше появятся.

Я, разумеется, не собираюсь тебя переубеждать, но ты говоришь чушь.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Пользователь зарегистрирован только на одном homeserver'е и всегда связывается только с ним.

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

Я, разумеется, не собираюсь тебя переубеждать, но ты говоришь чушь.

Я достаточно участвовал в разработке проектов, чтобы видеть, к чему приводят даже незначительные оверхеды в проектировании. Подход «всё универсально, личка и конфа это одно и то же» я тоже уже видел и видел, что это потом приходится переписывать нормально.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Я имел в виду синхронизацию его между клиентами.

Это не «между клиентами», а «между каждым клиентом и одним и тем же сервером». Более того, такая синхронизация будет односторонней. Впрочем, да, мы говорили о разных вещах: я говорил о межсерверном протоколе, а ты — о протоколе обмена данными между клиентом и сервером.

В спеке это есть, в текущих реализациях клиентов, видимо, ещё нет.

Подход «всё универсально, личка и конфа это одно и то же» я тоже уже видел и видел, что это потом приходится переписывать нормально.

Поясни. Что значит «нормально» и почему подобное обобщение — это ненормально?

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Это не «между клиентами», а «между каждым клиентом и одним и тем же сервером».

Да.

Более того, такая синхронизация будет односторонней.

Почему? Клиент должен иметь возможность изменять список контактов и отдавать изменения серверу. А сервер — другому клиенту.

В спеке это есть

Ага, вот это я и хотел узнать.

Что значит «нормально» и почему подобное обобщение — это ненормально?

«нормально» значит личка, заточенная на личку (никаких прав доступа, одна личка на всех (т.е. не будет создаваться новая «конференция» 1 на 1, если я вышел из одной лички, а будет использоваться одна и та же), там надпись «xxx печатает текст» должна быть явно видна (в отличие от конференции, где флудить списком всех печатающих посреди окна нерационально)).

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

никаких прав доступа

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

Оверхед же важен только тогда, когда он меняет асимптотику.

одна личка на всех

Т. е. ты хочешь e-mail? Его уже изобрели. Или я тебя не понимаю. Скажем так: та личка, которая в жаббере, тебя устраивает?

надпись «xxx печатает текст» должна быть явно видна

Это делается на уровне UI, а не протокола.

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

С инженерной т. з. рациональнее взять уже существующие механизмы и адаптировать их

Но не пытаться натягивать существующий механизм на совсем отличную сущность.

Скажем так: та личка, которая в жаббере, тебя устраивает?

В жаббере два вида личек: личка в конференции и прямое общение между контактами. Обе меня устраивают, но в данном случае мне было бы достаточно второй.

Это делается на уровне UI, а не протокола.

Если протокол не различает конференцию и личку, то UI никак не сможет их отличить и сделать различное отображение. Предвосхищая твой вопрос: нет, по количеству участников не получится. Конференция с двумя участниками и личка с двумя участниками это не одно и то же.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

личка в конференции

Ни разу не видел.

в данном случае мне было бы достаточно второй

Именно такая и есть в matrix.

Если протокол не различает конференцию и личку

https://matrix.org/jira/browse/SPEC-17, хотят впилить. В любом случае, это впиливается с сохранением двусторонней совместимости.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

на совсем отличную сущность

У сущностей «комната» и «1:1-переписка» гораздо больше общих свойств, чем различий. При этом большинство последних относятся к способу представления, а не ко внутреннему устройству.

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Ни разу не видел.

Зайди в конфу и попробуй написать кому-то из присутствующих в личку. Разница в том, что конфа может скрывать jid участников, и ты не сможешь добавить их в контакты, если они сами тебе не дадут эту инфу. А в рамках конфы в личку написать можешь. Это очень удобно.

Именно такая и есть в matrix.

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

vurdalak ★★★★★
()
Ответ на: комментарий от intelfx

У сущностей «комната» и «1:1-переписка» гораздо больше общих свойств, чем различий.

Для этого придумали наследование. Общие свойства выделить в отдельную сущность «абстрактная переписка», от неё отнаследовать конфу и личку. Но не наследовать личку от конфы, держа кучу ненужных метаданных. Основы проектирования, первый класс.

vurdalak ★★★★★
()
Ответ на: комментарий от DeadEye

определи уже штуки три-четыре годных клиентов и только их и юзай.

Реквестирую список годных клиентов по твоей версии. А то я платонически жаббер люблю, а на практике как-то не сложилось.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Psi+ (из Git, текущая 0.16.451), Gajim, Vacuum-IM (альфа 1.3.0 до ревизии 2371 - в ней клиент изгадили, до этого - отличный клиент).

DeadEye ★★★★★
()
Ответ на: комментарий от DeadEye

А psi+ от просто psi принципиально отличается? Насколько я помню, тот, что без плюсика, я как-то пробовал...

hobbit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.