Matrix (протокол)
Matrix — це відкритий протокол для спілкування у реальному часі. Основною метою створення є досягнення високої інтероперабельності, подібної до стандартних протоколів типу SMTP. З технічної точки зору — це протокол прикладного рівня, федеративного типу, що дозволяє обмінюватися повідомленнями у реальному часі між окремими серверами.[1][2]
Повідомлення у JSON форматі поширюються серед федерації публічних серверів. Протокол також інтегрується з вебсервісами за допомогою WebRTC та забезпечує можливість здійснення відео-дзвінка, VoIP та онлайн чату.
Подібними ініціативами є протоколи XMPP та IRCv3.[3]
Історія[ред. | ред. код]
Початковий проект був створений в Amdocs під час створення інструменту чату під назвою «Amdocs Unified Communications»[4] Метью Ходжсоном і Амандін Ле Пап. Потім Amdocs фінансував більшу частину розробки з 2014 по жовтень 2017[5]. Матрікс виграв нагороду Innovation award at WebRTC 2014 Conference & Expo[6] та нагороди «Best in Show» на WebRTC World in 2015[7]. Після того як протокол був запущений у 2014 році, від рецензентів він отримав похвалу разом з деякими застереженнями. Було відзначено, що інші спроби створення відкритого протоколу обміну миттєвими повідомленнями або мультимедійні протоколи такого типу мали труднощі з набуттям широкого поширення — наприклад, XMPP та IRCv3. У 2015 році Amdocs було створено дочірню компанію «Vector Creations Limited», куди перейшли співробітники Matrix.
У лютому 2019 року спільнота KDE оголосила про плани застосувати Matrix для своїх внутрішніх комунікаційних потреб як децентралізовану альтернативу іншим серверам обміну миттєвими повідомленнями, таким як Telegram, Slack і Discord, і керувати власним екземпляром сервера[8].
У грудні 2019 року міністерство оборони Німеччини оголосило про пілотний проект під назвою BwMessenger для безпечного інструменту обміну миттєвими повідомленнями на основі протоколу Matrix, сервера Synapse та програми Riot. Це змодельовано за французьким проектом Tchap. Довгостроковою метою федерального уряду є безпечне використання служб обміну повідомленнями, що охоплює всі міністерства та підпорядковані органи[9].
У грудні 2019 року Mozilla оголосила, що почне використовувати Matrix як заміну IRC . В оголошенні вони сказали, що завершать переміщення наприкінці січня 2020 року. Сервер Mozilla IRC, irc.mozilla.org, буде видалено «не пізніше березня наступного року [2020]»[10]. У березні 2020 року IRC-сервер було вимкнено, і користувачам було запропоновано приєднатися до chat.mozilla.org, екземпляру Mozilla Element[11].
У травні 2020 року Matrix увімкнув наскрізне шифрування за замовчуванням для приватних розмов[12].
У жовтні 2020 року Element придбав Gitter у GitLab[13]. Це означало, що всі користувачі Gitter будуть переведені на Matrix[14].
У березні 2021 року matrix.org оголосив, що у всьому світі існує 28 мільйонів видимих облікових записів[15].
У червні 2021 року Fourth Estate оголосила про розробку Ceriph, пілотного проекту, який створює службу безпечного обміну повідомленнями та комунікації для новинних організацій і журналістів на основі протоколу Matrix[16].
Розробка[ред. | ред. код]
Основне коло розробників працює у неприбутковій організації Matrix.org, що базується у Великій Британії.[17] Метою організації є створення відкритого, децентралізованого, стійкого протоколу з високою інтероперабельністю для комунікації у інтернеті. Типове застосування: відеотелефонія, VoIP, швидкий обмін повідомленнями, IoT, синхронізація даних.
Огляд[ред. | ред. код]
Платформа для організації децентралізованих комунікацій Matrix розвивається як проект, який використовує відкриті стандарти і приділяє велику увагу забезпеченню безпеки і приватності користувачів. В якості транспорту застосовується HTTPS+JSON з можливістю використання WebSockets або протоколу на базі CoAP + Noise. Система формується як співдружність серверів, які можуть взаємодіяти між собою і об'єднуються у загальну децентралізовану мережу. Повідомлення реплікуються по всіх серверів, до яких підключені учасники обміну повідомленнями. Повідомлення поширюються по серверам по аналогії з тим, як коміти поширюються між Git-репозиторіями. У разі тимчасового відключення сервера повідомлення не втрачаються, а передаються користувачам після відновлення роботи сервера. Підтримуються різні варіанти ідентифікаторів користувача, включаючи email, номер телефону, обліковий запис в Facebook тощо.
У мережі відсутня єдина точка відмови або контролю за повідомленнями. Всі сервери, які охоплює обговорення, рівноправні між собою. Будь-який користувач може запустити власний сервер і підключити його до загальної мережі. Можливе створення шлюзів для взаємодії Matrix з системами на базі інших протоколів, наприклад, підготовлені сервіси для двосторонньої відправки повідомлень в IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp і Slack.
Крім миттєвого обміну текстовими повідомленнями і організації чатів, система може використовуватися для передачі файлів, відправки повідомлень, організації телеконференцій, здійснення голосових і відео-дзвінків. Matrix дозволяє використовувати пошук і необмежений перегляд історії листування. Підтримуються також такі розширені можливості як повідомлення про набір тексту, оцінка присутності користувача в онлайн, підтвердження прочитання, push-повідомлення, пошук на стороні сервера, синхронізація історії та стану клієнтів.
Протокол[ред. | ред. код]
Специфікація Matrix окреслює RESTful HTTP APIs для захищеної передачі та реплікації даних формату JSON між сумісними серверами, клієнтами та сервісами. Дані підписані у стилі git для усунення можливості підміни. Механізм реплікації відповідає моделі узгодженості в кінцевому рахунку, що дозволяє відновити повідомлення через повторну синхронізацію з інших серверів.
Клієнти[ред. | ред. код]
Для протоколу Matrix існує багато клієнтів в web, стільниковій та мобільній реалізації:
- Element — офіційний платформонезалежний клієнт, є зразком для інших втілень
- Weechat/Matrix — скрипт на python для клієнту командного рядку Weechat
- Quaternion — платформонезалежний стільниковий клієнт, що базується на Qt5/QML
- Nheko — стільниковий клієнт, що базується на Qt5
- Фрактал[en] — офіційний клієнт для середовища GNOME написаний на Rust
- QuickMedia Matrix — клієнт написаний на C++ та OpenGL
- NeoChat — платформонезалежний клієнт
- Thunderbird
- AgentSmith
- Cinny
- FluffyChat — платформонезалежний клієнт
- gomuks — клієнт для командного рядку написаний на Go
- Hydrogen
- kazv — клієнт qml/kirigami, що базується на libkazv
- Koma
- [chat]
- matrix-client.el — клієнт Matrix для Emacs
- matrix-client-legacy-el
- matrix-commander
- matrix-ircd
- matrix-static
- matrixcli
- Miitrix — клієнт для Nintendo 3DS
- Mirage
- mm — мінімалістичний клієнт написаний на Go
- mnotify
- mycete
- Neo
- Nio — клієнт для iOS на SwiftUI
- noti.py — простий скрипт на python для публікації сповіщень у кімнатах
- purple-matrix — плагін для libpurple
- Rambox — міжплатформова багатопротокольна програма обміну повідомленнями, яка поєднує веб-програму в одну
- SchildiChat
- Spectral — клієнт написаний на QtQuick Controls 2 та C++
- Syphon
Сервери[ред. | ред. код]
- Conduit — сервер написаний на Rust
- Construct — сервер написаний на C++
- Dendrite — сервер написаний на Go
- Ligase — сервер написаний на Golang
- Maelstrom — сервер написаний на Rust
- Synapse
SDK[ред. | ред. код]
- Trixnity — платформонезалежне SDK написане на Kotlin
- maubot — система ботів на основі плагінів, написана на Python
- opsdroid — з'єднувач для opsdroid для відправки повідомлень і отримання відповідей
- MatrixAPI — бібліотека Matrix для C# UWP
- botkit-matrix — з'єднувач Botkit для Matrix
- dial-phone — Matrix клієнт-серверне SDK для JVM, написане на Kotlin
- jmsdk — Java SDK
- libkazv — клієнтська бібліотека sans-io C++ (gnu++17)
- matrix-appservice-bridge
- Matrix-ClientServer-API-java
- Matrix C# SDK
- Matrix .NET SDK
- Matrix on Haxe
- matrix-bot-sdk
- matrix-kt
- matrix-nio
- matrix-rust-sdk
- Matrix.org Android SDK
- Matrix.org AS Node SDK
- gomatrix
- Matrix.org iOS SDK
- Matrix.org JS SDK
- Matrix.org Python SDK
- Matrix.org React SDK
- mautrix-go
- mautrix-python
- µtrix
- [(програмне забезпечення)|Matrix::Client]
- Quotient
- Ruby Matrix SDK
- Ruma
- Simple-Matrix-Bot-Lib
- smallbot-matrix
Боти[ред. | ред. код]
Існує окремий публічний сервер з ботами і мостами Matrix, що використовуються у багатьох спільнотах[18].
Крім того офіційно підтримуються наступні боти, які можуть бути запущені на власному сервері:
- finzzz / bucktrix
- FAQBot
- Go-NEB
- Hemppa — універсальний модульний бот Matrix, надзвичайно проста платформа для написання функцій бота Matrix на Python
- hwittenborn / matrix-faq
- ivar2 Matrix/IRC Bot
- matrix-email-bot
- matrix-eno-bot — особистий помічник і інструмент адміністратора
- matrix-feeder — це матричний бот, який відстежує медіафайли на певних каналах і розміщує їх на іншому каналі
- Matrix-Grep-Bot — бот Matrix, який використовує grep для пошуку у великих повідомленнях
- matrix-monitor-bot
- Matrix-remind-me-bot
- Matrix Registration Bot
- Matrix Stats
- matrix-trello-bot — взаємодія з Trello в матриці
- matrix-voyager-bot — створює карту виявлених кімнат мережі Matrix
- Matrix Webhook — публікує повідомлення в кімнаті Matrix за допомогою простого HTTP POST
- matterbridge — бот для з'єднання Matrix і Mattermost, IRC, XMPP, Gitter, Slack, Discord, Telegram, Rocket.Chat, Hipchat (через xmpp), Steam
- maubot
- maubot / CommitStrip — плагін maubot для перегляду CommitStrips
- maubot / dice — плагін maubot, який кидає кубики
- maubot / echo — простий плагін maubot, який виконує ping та інші команди
- maubot / github — клієнт GitHub, що приймає вебхуки для maubot
- maubot / gitlab — клієнт GitLab, що приймає вебхуки для maubot
- maubot / karma — плагін maubot, який відстежує карму користувачів
- maubot / reminder — плагін maubot, щоб нагадувати вам про щось
- maubot / rss — RSS плагін для maubot
- maubot / xkcd — плагін maubot для перегляду коміксів xkcd
- opsdroid
- poll-bot
- silvy-matrix
- tiny-matrix-bot
- Vøgg
- GoHubsBot
- Matrix Zulip Bridgebot
Мости[ред. | ред. код]
Matrix підтримує передачу повідомлень з інших програм обміну повідомленнями в кімнати Matrix. Це мости — це програми, які працюють на сервері та обмінюються даними з серверами, які не в мережі Matrix. Мости можуть діяти як маріонетки або ретранслятори, де в першому чаті обліковий запис окремого користувача видимо публікує повідомлення, а в другому чаті бот розміщує це повідомлення для облікових записів користувачів, які відсутні в першому чаті.
На даний момент офіційно підтримуються мости з:
Спільнотою підтримуються мости з:
- Apple iMessage
- Discord[23]
- Facebook Messenger[24]
- Google Hangouts
- GroupMe
- Mastodon
- RSS/Twitter
- Signal[25]
- Skype[26]
- Telegram[27]
- SMS
- Whatsapp[28]
- LinkedIn[29]
Українські простори в мережі matrix[ред. | ред. код]
Станом на червень 2022 року існує щонайменше один український простір у мережі matrix:
- Патріотична Україна — український простір matrix, що об'єднує кімнати різної тематики з кількох серверів matrix.
Українські сервери у мережі matrix[ред. | ред. код]
Сервери dComms[ред. | ред. код]
В зв'язку з початком бойових дій і пов'язаних з цим ризиків аварій або відключення українських провайдерів від глобальної мережі, канадською організацією eQualitie[30] в Україні було запущено сервіси децентралізованого зв'язку, серед яких сервери matrix у великих містах. Реєстрація на локальному сервері дозволить користувачам спілкуватися між собою без підключення до зовнішньої мережі інтернет.
- matrix.kyiv.dcomm.net.ua — Київ.
- matrix.odessa.dcomm.net.ua — Одеса.
- matrix.kharkiv.dcomm.net.ua — Харків.
- matrix.lviv.dcomm.net.ua — Львів.
- matrix.lviv2.dcomm.net.ua — Львів.
- matrix.rivne.dcomm.net.ua — Рівне.
- matrix.kherson.dcomm.net.ua — Херсон.
- matrix.mykolayiv.dcomm.net.ua — Миколаїв.
Приватні сервери[ред. | ред. код]
- opulus.space — українській приватний проект по популяризації вільних засобів спілкування, що включає сервер matrix.
Примітки[ред. | ред. код]
- ↑ Matrix: a new specification for federated realtime chat [LWN.net]. lwn.net. Архів оригіналу за 5 травня 2018. Процитовано 27 травня 2018.
- ↑ Matrix.org Reloads Inside "Illusion of Control" Vortex. Dr. Dobb's. Архів оригіналу за 29 березня 2019. Процитовано 27 травня 2018.
- ↑ Weinberger, Matt. Matrix wants to smash the walled gardens of messaging. ITworld (англ.). Архів оригіналу за 5 травня 2018. Процитовано 27 травня 2018.
- ↑ Amdocs | Products | Unified Communications. web.archive.org. 3 жовтня 2014. Архів оригіналу за 3 жовтня 2014. Процитовано 14 липня 2022.
- ↑ Who is Matrix.org? | Matrix.org. web.archive.org. 29 березня 2019. Архів оригіналу за 29 березня 2019. Процитовано 14 липня 2022.
- ↑ Award Winners of the WebRTC 2014 Conference & Expo - Upperside Blog. web.archive.org. 15 березня 2015. Архів оригіналу за 15 березня 2015. Процитовано 14 липня 2022.
- ↑ WebRTC World Miami Wrap Up and Review. www.webrtcworld.com. Процитовано 14 липня 2022.
- ↑ KDE To Support Matrix Decentralized Instant Messaging. www.phoronix.com (англ.). Процитовано 14 липня 2022.
- ↑ online, heise. Open Source: Bundeswehr baut eigene verschlüsselte Messenger-App. heise online (нім.). Процитовано 14 липня 2022.
- ↑ Synchronous Messaging at Mozilla: The Decision. Mozilla Discourse (амер.). 19 грудня 2019. Процитовано 14 липня 2022.
- ↑ Moznet IRC is dead; long live Mozilla Matrix!. Matrix.org (англ.). Процитовано 14 липня 2022.
- ↑ Cross-signing and End-to-end Encryption by Default is HERE!!!. Matrix.org (англ.). Процитовано 14 липня 2022.
- ↑ Gitter is joining Element. Element Blog. 30 вересня 2020. Процитовано 14 липня 2022.
- ↑ Welcoming Gitter to Matrix!. Matrix.org (англ.). Процитовано 14 липня 2022.
- ↑ FOSDEM 2021: Building massive virtual communities in Matrix (uk-UA). Процитовано 14 липня 2022.
- ↑ Fourth Estate® | Democratizing News | Official Site. https://www.fourthestate.org/ (амер.). Процитовано 14 липня 2022.
- ↑ Matrix | Crunchbase. Crunchbase (англ.). Архів оригіналу за 31 липня 2018. Процитовано 27 травня 2018.
- ↑ t2bot.io. t2bot.io. Процитовано 15 липня 2022.
- ↑ matrix-org/matrix-appservice-gitter. matrix.org. 22 квітня 2021. Процитовано 14 липня 2022.
- ↑ matrix-org/matrix-appservice-irc. matrix.org. 14 липня 2022. Процитовано 14 липня 2022.
- ↑ matrix-appservice-slack. matrix.org. 11 липня 2022. Процитовано 14 липня 2022.
- ↑ matrix-bifröst. matrix.org. 5 липня 2022. Процитовано 14 липня 2022.
- ↑ Matrix Discord Bridge. matrix.org. 13 липня 2022. Процитовано 14 липня 2022.
- ↑ mautrix-facebook. mautrix. 13 липня 2022. Процитовано 14 липня 2022.
- ↑ mautrix-signal. mautrix. 3 липня 2022. Процитовано 14 липня 2022.
- ↑ skype-bridge. matrix-hacks. 3 лютого 2022. Процитовано 14 липня 2022.
- ↑ mautrix-telegram. mautrix. 13 липня 2022. Процитовано 14 липня 2022.
- ↑ mautrix-whatsapp. mautrix. 12 липня 2022. Процитовано 14 липня 2022.
- ↑ Beeper / LinkedIn · GitLab. GitLab (англ.). Процитовано 14 липня 2022.
- ↑ dComms. dComms (ua). Процитовано 5 червня 2022.
Посилання[ред. | ред. код]
- Офіційний вебсайт [Архівовано 26 січня 2021 у Wayback Machine.]
- Список клієнтів Matrix [Архівовано 28 травня 2018 у Wayback Machine.]
- Еталонний сервер Synapse [Архівовано 6 серпня 2018 у Wayback Machine.]
- Сховище коду на GitHub [Архівовано 8 грудня 2018 у Wayback Machine.]
- Специфікація протоколу Matrix [Архівовано 31 січня 2021 у Wayback Machine.]
- Офіційний сайт eQualitie.
|