
Dzisiaj pojawiła się zdecentralizowana platforma komunikacyjna Jami, która jest rozpowszechniana pod kodową nazwą Together. Wcześniej projekt rozwijał się pod inną nazwą — Ring, a jeszcze wcześniej — SFLPhone. W 2018 roku zdecentralizowany komunikator został przemianowany, aby uniknąć potencjalnych konfliktów z znakami towarowymi.
Kod komunikatora jest rozpowszechniany na licencji GPLv3. Jami jest dostępny dla GNU/Linux, Windows, MacOS, iOS, Android i Android TV. Można wybrać jeden z interfejsów opartych na Qt, GTK lub Electron. Jednak najważniejsze jest to, że Jami umożliwia wymianę wiadomości bez konieczności korzystania z zewnętrznych serwerów.
Zamiast tego między użytkownikami ustanawiane jest bezpośrednie połączenie z wykorzystaniem szyfrowania end-to-end. Klucze są obecne jedynie po stronie klienta. Procedura autoryzacji opiera się na certyfikatach X.509. Oprócz wiadomości, platforma umożliwia przeprowadzanie rozmów audio i wideo, tworzenie telekonferencji, wymianę plików, a także organizację wspólnego dostępu do plików i treści ekranu.
Początkowo projekt był pozycjonowany i rozwijany jako programowy telefon SIP. Następnie jednak twórcy postanowili rozszerzyć funkcjonalność projektu, zachowując kompatybilność z SIP i umożliwiając wykonywanie połączeń przy użyciu tego protokołu. Program obsługuje różne kodeki, w tym G711u, G711a, GSM, Speex, Opus, G.722, a także protokoły ICE, SIP, TLS.
Wśród funkcji komunikacyjnych znajduje się anulowanie przekierowania, wstrzymywanie połączeń, nagrywanie rozmów, historia połączeń z wyszukiwaniem, automatyczna kontrola głośności, integracja z książkami adresowymi GNOME i KDE.
Wyżej wspomniano o solidnym systemie autoryzacji użytkowników. Mechanizm opiera się na blockchainie — książka adresowa działa na podstawie Ethereum. Można jednocześnie łączyć się z kilku urządzeń, kontaktując się z użytkownikiem niezależnie od tego, które z urządzeń jest aktywne. Książka adresowa, która odpowiada za translację nazw w RingID, została zrealizowana z wykorzystaniem węzłów wspieranych przez różnych uczestników. Dzięki nim można uruchomić własny węzeł, aby utrzymać lokalną kopię globalnej książki adresowej.
Jeśli chodzi o adresowanie użytkowników, deweloperzy wykorzystali do rozwiązania tego zadania protokół OpenDHT, który nie wymaga stosowania scentralizowanych rejestrów z informacjami o użytkownikach. Podstawą Jami jest jami-daemon, odpowiedzialny za przetwarzanie połączeń, organizację komunikacji oraz obsługę wideo i dźwięku.
Interakcja z jami-daemon zrealizowana jest na podstawie biblioteki LibRingClient. Jest ona kluczowa do budowy oprogramowania klienckiego i zapewnia niezbędną funkcjonalność, która nie jest uzależniona od interfejsu użytkownika ani platform. A już na podstawie LibRingClient opracowywane są aplikacje klienckie.
Podczas przekształcania P2P-messenger w platformę telekomunikacyjną deweloperzy nowe i zaktualizowali istniejące funkcje. Oto one:
- Poprawiono działanie w sieciach o niskiej przepustowości.
- Zredukowano ilość używanych zasobów podczas pracy na Androidzie i iOS.
- Przepisano klienta dla Windows. Może działać również w trybie tabletowym.
- Pojawiły się narzędzia do przeprowadzania telekonferencji z wieloma uczestnikami.
- Dodano możliwość zmiany trybu transmisji w konferencji.
- Aplikację można jednym kliknięciem przekształcić w serwer (może to być potrzebne, na przykład, do przeprowadzenia konferencji).
- Wdrożono serwer zarządzania kontami JAMS.
- Istnieje możliwość podłączenia wtyczek, które rozszerzają możliwości podstawowego komunikatora.
Źródło: habr.com
