LINUX.ORG.RU

another.im 0.8.0 - кроссплатформенный Jabber-клиент

 , ,


0

1

Команда another.im, ранее поддерживавшая форки Conversations и Dino, рада сообщить о первом публичном релизе XMPP-клиента another.im 0.8.0, основанный на библиотеке libtacky.

Что такое libtacky?

Это state-of-art высокоуровневая библиотека для создания соверменных XMPP-клиентов (и компонентов), написанная на Rust и Tcl. Она представляет стандартный JSON API, по аналогии с tdlib для Telegram.

Библиотека берёт на себя всю работу с XMPP на низком уровне: управление соединением, сессией, архивом сообщений (MAM), E2E шифрованием (поддерживается OMEMO версий 0.3 и 0.9, Olm/Megolm и MTProto), работой с аудио/видео (используя WebRTC либо libdatachannel в качестве медиа-бэкенда), а также безопасным хранением самой базы данных приложения с помощью sqlcipher.

Библиотека поддерживает около 130 XEP и покрыта Unit-тестами на >=95% и интеграционными тестами к серверам Prosody и ejabberd, а также постоянно тестируется на совместимость с стандартами XMPP и совместимостью с существующими Jabber-клиентами.

Оригинальным автором является @wusspuss (XMPP-клиент на Tcl/Tk, который заводится даже на Android), затем библиотека стала развиваться в рамках проекта another.im.

Лицензирована под GNU GPLv3.

Эталонный клиент anotherim-js

Клиент написан на TypeScript с использованием Tauri.rs и компилируется в нативное приложение для Linux, Android, Windows и macOS.

Что умеет:

  • чаты 1:1 и групповые чаты (MUC);
  • поддержка OMEMO версий 0.3 (axolotl) и 0.9 («OMEMO 2») одновременно;
  • голосвые и видеозвонки;
  • передача файлов;
  • работа с Push-уведомлениями (поддерживаются Google и unified push);
  • обзор доступных XMPP сервисов (Service Discovery);
  • управление ростером и закладками;
  • база данных приложения зашифрована, ключ хранится в системном кейчейне.

Нестандартные вещи для Jabber-клиента:

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

И наверняка многое другое — читайте полное описание в репозитории anotherim-js

Есть готовые сборки под все платформы (под macOS будет чуть позже).

Лицензирован под MPL (совместим с GPLv3 для слинкованной libtacky)

Другие клиенты на libtacky

Энтузиасты в качестве эксперимента и just for fun также создали клиент на Motif: anotherim-motif и консольный клиент anotherim-tui.

Также в разработке нативный клиент для iPhone (и macOS): anotherim-swift.

Однако последнее слово остаётся за Apple — обработка заявок в AppStore у них невероятно долгая.

tackygram

tackygram — это полноценный транспорт в сеть Telegram с отличной интеграцией в Jabber.

Поддерживается авторизация по QR-коду или номеру телефона, чаты, групповые чаты, стикеры, файлы, звонки и даже секретные чаты.

Заслуживает отдельной статьи.

Искусственный интеллект

В данном проекте использовался так называемый «искуственный интеллект» (LLM) и команда этого не стесняется: без использования AI-агентов релиза пришлось бы ждать ещё несколько лет.
Мы живём в 2026 году, и воспользоваться современными инструментами вкупе с многолетним опытом разработки в XMPP, авторы считают не зазорным.

В связи с этим, просим понять и простить отвратительные нейрослопные комментарии в коммитах и релиз-ноутсах: на правку некоторых вещей просто не хватает человеческих ресурсов (но эта новость написана без применения ИИ).

Основные ресурсы команда потратила на библиотеку libtacky, а совместимость с стандартами RFC и XEP (а также взаимодействие с другими клиентами на любых серверах) проверяют живые люди.
Используется test-driven разработка: кода тестов (unit- и интеграционных) больше, чем кода библиотеки.
Библиотека протестирована с серверами Prosody, ejabberd и MongooseIM.

Предупреждение

Проект находится на ранней стадии разработки и предоставляется «как есть».
Читайте документацию и исходный код, и никому не верьте.

anotherim-js изначально планировался как демонстрация возможностей библиотеки, однако уже сейчас это полноценная и более функциональная замена Conversations на Android и Dino на десктопе, при этом сохраняя с ним обратную совместимость.

>>> Исходный код и готовые сборки: dev.another.im

anonymous

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 3)

Вещь похоже хорошая. Но зачем же на rust?? Он же не с чем не совместим кроме самого себя… И хрен ты изделие на rust нормально в deb пакет положишь. Это огромная проблема.

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

И хрен ты изделие на rust нормально в deb пакет положишь. Это огромная проблема.

Класть в deb-пакет скомпилированные бинарники - очень просто. Для особо ленивых сделали даже cargo-deb, хотя оно и ручками неплохо собирается.

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

Что мешает? Это же бинарник. В убунте прекрасно бинарники на расте в деб-пакетах живут.

Потому что deb-пакету предшествует deb-src-пакет, плюс пакеты с зависимостями. (Я же говорю про нормально, а не про запихнуть бинарник в .deb) И вот тут начинается АД!

shaplov ★★★
()

Смотрю Jabber активно возрождают

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

Больше напоминает попытки поставить припарки мёртвому. Сам последний раз заходил с полгода назад, наверное (после годового отсутствия, да). В ростере — тишина и мёртвые с косами.

sn4il ★
()

Поставил- вся система начала моргать. Есть куча клиентов!

dsalin ★
()

Нестандартные вещи для Jabber-клиента:
стикеры и реакции.

А почему? Оно ж описано в расширениях.

голосвые и видеозвонки;

Muji есть? :)

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

А в контексте развития ИИ тут вообще удобно. Jabber - это несколько сотен расширений; четкий набор правил, по которым должна реализовываться та или иная функция. В итоге остается только «Эй, ИИ, реализуй мне фичу X согласно спецификации по ссылке Y. Хочу такие и такие кнопочки ...».

Я за последние 2 месяца, что пилил свой клиент, проникся этим.

Попутно, например, разобрался в Whiteboarding, по исходникам Psi ИИ сделал спецификацию, потом тот же ИИ обновил ее для соответствия обновленным расширениям и с нужными оптимизациями. Дальше по новой спецификации доску обновили в Пси; я сделал у себя + сделали в моде Monocles. Теперь (наконец-то!) может быть одинаковая реализация везде, а не очередные «лебедь, рак и щука».

https://upload.jabberworld.info/u/ec27dcda43c1bdb422cd46afa492a43811cee88a/j1...

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

Muji есть? :)

да

А почему? Оно ж описано в расширениях.

спроси у авторов dino и conversations, почему там нет стикеров

@dsalin

Поставил- вся система начала моргать.

скорее всего, проблема в libastral.so (или libastral.dll, или libastral.dylib - проблемы возникли ещё на этапе определения ОС, не то что видеодрайвера и тд)

ZakritiyNarcist
()
Ответ на: комментарий от nuxster

конечно, ИИ рулит в таких вещах, которые

а) как никак описаны и стандартизированны (RFC/XEP)
b) можно проверить тестами, развернув песочниу в виде Jabber-серверов, виртуалок с клиентами итд

всё остальное это вопрос ресурсов/токенов

ZakritiyNarcist
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.