Element X — когда Matrix решил стать быстрым
Обычно связка Element + Matrix работает не так быстро, как хотелось бы — и особенно на аккаунтах с большим количеством чатов и сообщений. Element X — это попытка разработчиков сделать федеративный мессенджер быстрым. Спойлер: получилось, но не без компромиссов.
Element X — это не апдейт старого Element, а полностью новый клиент, написанный с нуля на Rust. Разработчики заявляют ускорение в 6000-20000 раз. Достигается это за счёт протокола Sliding Sync, который загружает только те данные, которые нужны прямо сейчас. Первичные синхронизации теперь не такие долгие.
Детали
~ полностью новая архитектура на matrix-rust-sdk
~ нативные UI: SwiftUI для iOS, Jetpack Compose для Android
~ в 5-6 раз быстрее криптография из-за обновления библиотеки и многоуровневое кэширование
~ требует сервер с поддержкой Sliding Sync (Synapse 1.114+)
~ end-to-end шифрование сохранено
~ прошёл аудит безопасности от Least Authority
Есть нюанс, о котором Element не особо распространяется. Sliding Sync потенциально передаёт серверу больше метаданных о вашей активности (в том числе внутри самих чатов). Содержимое сообщений остаётся зашифрованным, но паттерны использования становятся более прозрачными для операторов серверов. А Matrix и без этого собирает неплохой такой набор метаданных.
Из косяков: в версиях 0.4.1-0.4.11 для Android была весёлая "фича" CVE-2024-34353, когда приватные ключи резервного копирования попадали в логи и отправлялись на серверы Element. Затронуло 156 пользователей. Исправили быстро, пользователей уведомили, но факт остаётся фактом. Ну, бывает.
Источник: github.com/element-hq/element-x-android и github.com/element-hq/element-x-ios