Ten poradnik kierujemy nie tylko do tych, którzy mają iPhone’y niewspierające iOSa 15.1 — w zasadzie grupą docelową są ci, którzy chcą wyrwać się z macek Big Techów i przenieść swoją komunikację w bezpieczniejsze miejsce. A XMPP to jeden z dobrych przykładów — ponieważ ten protokół, podobnie jak Matrix, jest zdecentralizowany. Mimo tego, że pierwsza wersja tego protokołu pojawiła się w 1999 roku, to jest on wciąż rozwijany na bieżąco.
Żeby wyjaśnić decentralizację, posłużę się kilkoma przykładami z życia codziennego:
- Możesz dzwonić do kogoś niezależnie od tego, w jakiej sieci komórkowej jesteście — zarówno Ty, jak i Twój rozmówca.
- Możesz wysłać e-maila do kogoś niezależnie od tego, gdzie swoją skrzynkę posiada Twój adresat.
- Możesz wysłać pieniądze do kogoś niezależnie od tego, w jakim banku Twój adresat ma konto — dzięki standardowi SWIFT.
- Lub — wykraczając poza internet — możesz wysłać list do kogoś, kto mieszka na innej ulicy. (Może i na pierwszy rzut oka brzmi to głupio, ale z drugiej strony, gdybyśmy ograniczyli działanie poczty do ulicy nadawcy, to w pewnym stopniu straciłaby ona sens istnienia.)
Przykłady można w zasadzie mnożyć przez długi czas, ale wystarczającym są 4 powyższe przykłady. Rolę firm pocztowych, banków czy usług telekomunikacyjnych z powyższych przykładów w XMPP odgrywają serwery. Niezależnie od tego, jaki wybierzesz celem założenia konta, masz możliwość komunikacji z dowolną osobą, posiadającą konto na dowolnym innym serwerze.
Stąd zachodzi potrzeba, aby w nazwie użytkownika uwzględniać domenę, która wskazuje na serwer macierzysty konta, podobnie jak ma to miejsce w adresie e-mail. Zatem, jeżeli klient1 założył konto na serwerze example.com, to jego adres XMPP wygląda tak: klient1@example.com.
Chcąc się skomunikować się z kimś na innym serwerze — dajmy na to klient2@example.net — użytkownik o pseudonimie klient1 wysyła za pośrednictwem swojego serwera (example.com) zapytanie do example.net, żeby ten poinformował osobę o pseudonimie klient2 o wiadomości pochodzącej od osoby klient1@example.com.
Mimo wymienionych powyżej różnic konstrukcyjnych, to idea protokołu XMPP się nie różni zauważalnie od pozostałych, popularniejszych komunikatorów. Rejestrujesz się, ściągasz dowolną aplikację (a nie narzuconą przez tzw. „ojców założycieli”), zapraszasz znajomych i konwersujesz.
To jest wersja mocno skrócona — pora teraz na wersję pełniejszą, żeby móc bardziej wyczerpująco odpowiedzieć na pytania, jakie potencjalnie moglibyście zadać przed skorzystaniem, lub w trakcie korzystania z XMPP.
Jaką aplikację muszę pobrać, żeby być na XMPP?
To zależy od tego, jaką posiadasz platformę. Tak jak napisałem wyżej, nie ma jednej, konkretnej aplikacji narzuconej z góry dla wszystkich. Niezależnie od tego, kto z czego korzysta, komunikacja może lać się strumieniami z różnych stron.
Poniżej zamieszczam tabelę polecanych aplikacji, o których wiem i które działają podobnie do popularniejszych komunikatorów:
| Jeżeli posiadasz… | …najlepiej jest skorzystać z: | 
|---|---|
| iOSa | Monala (minimalna wspierana wersja iOSa to 14) | 
| Androida | Monocles Chat (na F-Droidzie znacznie rzadziej otrzymuje aktualizacje, warto więc jest obserwować repozytorium na Codebergu) | 
| Linuxa lub FreeBSD | Dino, Gajim (jeżeli preferujesz graficzny interfejs) lub Profanity (jeżeli preferujesz tekstowy interfejs) | 
| macOSa | tego samego, co w przypadku iOSa | 
| Windowsa* | Pidgin z wtyczkami lurch (wspierającymi szyfrowanie OMEMO) oraz Amazon Chime (audio/wideokonferencje), lub jeżeli połączenia audio/wideo nie są istotne, Gajim | 
* Potencjalnie nieprawdziwe informacje; nie posiadam Windowsa. Zamiast tego, najlepiej jest zainteresować się nawet Linux Mintem czy Fedorą Workstation. PS: Usuwanie inwazyjnej telemetrii Microsoftu z Windowsa to dosłownie leczenie dżumy cholerą (no i przy okazji ten system jest czasami okropnie niestabilny).
Jak założyć konto na XMPP?
First things first: XMPP nie jest komercyjnym komunikatorem, tylko protokołem do komunikacji. Gdyby był tym pierwszym, to albo Google, albo Facebook by go wykupił i „zneutralizował” — żeby nie powiedzieć gorzej. Co ciekawe, Google Chat jak i Facebook Messenger ten protokół w przeszłości wspierali.
Podobnie jak w przypadku e-maila, przez „rejestrując się na XMPP”, tak naprawdę dokonujemy rejestracji na jednym z wybranych serwerów. Nie jest to jednak przeszkodą w komunikowaniu się z ludźmi z innych serwerów. Po rejestracji konta nasz identyfikator (w żargonie XMPP zazwyczaj będziemy mieli do czynienia z pojęciem „Jabber ID”) przybierze formę pseudonim@example.com, gdzie „pseudonim” to oczywiście nasz pseudonim, a „example.com” jest serwerem, na którym dokonaliśmy rejestracji. Nasz identyfikator wygląda dokładnie tak samo jak adres e-mail.
Pamiętajmy, że pseudonimu — czyli tej części przed „małpą” — na XMPP nie da się zmienić — wybierzmy więc ten, który nie będzie nas zawstydzał w jakimkolwiek odstępie czasu. Najprościej jest przystać na coś, z czym się najbardziej identyfikujemy — możemy (lub też nie) użyć imienia i nazwiska, naszego pseudonimu… w skrócie, czegokolwiek, z czym nasi znajomi nas łatwo zidentyfikują.
Poniżej prezentuję przykłady aplikacji na Monalu, Monocles Chacie, oraz Dino.
Instalacja i konfiguracja Monala na iOSie
Mimo tego, że mam sporą awersję do telefonów z iOSem na pokładzie, to tę sekcję wciąż publikuję, bo moja dziewczyna — która jest jednocześnie czytelniczką tego serwisu — posiada właśnie iPhone’a (i przy okazji zgodziła się kontrybuować do tego poradnika dość sporą liczbą zrzutów ekranu, za co bardzo dziękuję). Pamiętajmy, że każdy ma swoje preferencje co do tego, jaki logotyp znajduje się na telefonie i jaki system jest tam zainstalowany.
⚠️ Uwaga!
Niektóre części Monala mogą nie być przetłumaczone na język polski. Dorzuciłem jednak swoją część i mam nadzieję, że wspólnymi siłami uda się nam dokończyć tłumaczenie aplikacji na nasz rodzimy język.

Po odnalezieniu Monala w Apple App Store (plakietka powinna nosić nazwę „Monal — XMPP Chat” oraz logo ptaka z kopertą na jasnoniebieskim tle), klikamy na przycisk „Pobierz”. Potwierdzamy instalację i czekamy na jej ukończenie. Po jej ukończeniu uruchamiamy Monala — pierwsze, o co nas zapyta aplikacja, to o uprawnienia do wysyłania powiadomień. W zależności od tego, czy lubimy zalew powiadomień czy też nie, możemy albo zablokować, albo dopuszczać powiadomienia z tej aplikacji. Kto co woli.

Po przeklikaniu się przez wprowadzenie do Monala, naszym oczom ukażą się najpierw ustawienia, które warto przejrzeć przed kontynuacją. Sprawdź podpisy zdjęć, żeby się dowiedzieć więcej, na czym one polegają:


Dotarliśmy do formularza logowania. Klikamy na „Potrzebuję konta”, żebyśmy mogli zarejestrować swoje konto. Domyślnie aplikacja nam zasugeruje rejestrację na yax.im, ale możemy także wybrać jakikolwiek inny serwer, klikając na przycisk prezentujący nazwę serwera. Potem wpisujesz swój pseudonim i hasło — jak w większości usług internetowych. Skorzystaj z poniższego obrazka, żeby się wspomóc w trakcie rejestracji:

⚠️ Uwaga!
Hasło do Twojego konta powinno mieć co najmniej 16 znaków, a w nim małe i duże litery, cyfry oraz znaki specjalne. Przechowuj te hasło w bezpiecznym miejscu — na kartce lub w wybranym przez siebie menedżerze haseł. Jeżeli nie masz ani tego, ani tamtego — wymyśl sobie tzw. passphrase składający się z co najmniej sześciu słów oddzielonych spacjami, który będziesz w stanie łatwo zapamiętać. Passphrase’y są nawet uznawane za mocniejsze od zwykłych haseł.
Po wypełnieniu formularza klikamy na „Zarejestruj”, czekamy aż serwer dokończy rejestrację, i… widzimy pusty ekran główny.

A to dlatego, że jeszcze do nikogo nie napisaliśmy! Żeby to zmienić, klikamy w prawym górnym rogu na ikonę dwóch ludzików, potem na ikonę plusa, i wpisujemy identyfikator XMPP osoby, z którą chcemy się skontaktować, po czym klikamy na „Add” („Dodaj”).

A co z bezpieczeństwem komunikacji? Monal domyślnie aktywuje szyfrowanie konwersacji poprzez OMEMO, więc nie musisz niczego dodatkowego robić ze swojej strony. Możesz sprawdzić to w menu ustawień, i stamtąd przechodząc do sekcji General Settings > Security. Ustawienie o nazwie „Enable encryption by default for new chats” powinno być zaznaczone.
⚠️ Uwaga!
Pozostaw to ustawienie włączone. Warto szyfrować komunikację internetową. Naprawdę. Tak samo Twoje połączenie z internetem jest szyfrowane, gdy się np. logujesz do jakiegoś serwisu czy wykonujesz operacje bankowe. O szyfrowaniu możesz więcej przeczytać w tym artykule od Fundacji Panoptykon — nawet jeżeli sam artykuł jest z 2014 roku, tak wciąż pewna część informacji jest aktualna także dzisiaj.
I to tyle — pozostaje mi życzyć miłego konwersowania ze swoimi bliskimi! A co, gdy ktoś nie posiada iPhone’a, a np. Androida? Żaden problem, bo tam również jest odpowiedni klient — a jest nim Monocles Chat.
Instalacja i konfiguracja Monocles Chat na Androidzie
Monocles Chat jest aplikacją pochodzącą od aplikacji Conversations — jednak mimo wszystko polecam korzystać właśnie z Monocles Chat z tego względu, że posiada on szerszą funkcjonalność, niż jego aplikacja macierzysta.
Co niektórych może zainteresować, to to, że… na Monocles Chacie można np. grać w proste gry i konkurować ze znajomymi. A osiągalne jest to dzięki standardowi WebXDC, który jest rozwijany przez twórców komunikatora Delta Chat. Ci, którzy pamiętają gry na Facebook Messengerze sprzed lat, szybko się zadomowią na XMPP, a przynajmniej ci, którzy posiadają Androida.
Jest też dokument, który ma na celu ewentualną standaryzację tych widżetów — jednak nie został on jeszcze poddany formalnej akceptacji na czas pisania tego poradnika.
Po instalacji aplikacji z F-Droida, lub Codeberga (moim zdaniem warto skorzystać z tego drugiego kanału dystrybucji, ponieważ jest on częściej aktualizowany), uruchommy ją i przeklikajmy się do trzeciego ekranu we wprowadzeniu do Monocles Chatu. Znajdują się tam najważniejsze ustawienia, które — podobnie jak w przypadku Monala — warto przejrzeć przed kontynuacją:

Możecie sobie ustawić tak, jak ja to zrobiłem, pozostawić to, co sugeruje aplikacja, lub stworzyć własną konfigurację. Oczywiście te ustawienia można w dowolnym późniejszym momencie zmienić.
Przy każdym z ustawień są dostępne wyjaśnienia, co one robią. Na ich podstawie można potem podjąć decyzję, czy chcemy je mieć włączone, czy wyłączone. Po tym zostaniemy zapytani, czy chcemy się zarejestrować, czy zalogować na istniejące już konto.
W przypadku rejestracji, wybieramy opcję „I need to sign up” („Potrzebuję się zarejestrować”) i naszym oczom ukaże się propozycja rejestracji swojego konta na serwerze zarządzanym przez twórców Monocles Chat. Jeżeli nie chcemy skorzystać z ich propozycji, klikamy na „Choose another below”.
⚠️ Uwaga!
Monocles Chat sugeruje rejestrowanie nowych kont na swoją usługę XMPP lub na conversations.im. Nie byłem w stanie znaleźć prostego ustawienia, które zmienia to na jakikolwiek inny serwer (a jeżeli ono istnieje, to nie jest ono łatwo widoczne). Formularz logowania wspiera praktycznie każdy serwer XMPP, ale to nie jest to samo, gdy chcemy się… zarejestrować z poziomu aplikacji.
Zostaniemy potem poproszeni o wpisanie naszego pseudonimu, a po potwierdzeniu Monocles Chat wygeneruje nam hasło — które warto zapisać w bezpiecznym miejscu. Następnie klikamy „Next” i to wszystko, gdy chodzi o zarejestrowanie sobie konta.

Jeżeli chcemy kogoś dodać, możemy to zrobić na dwa sposoby. Pierwszym z nich jest kliknięcie na ekranie głównym ikony ludzika z plusem i pozwolenie naszym znajomym na zeskanowanie kodu QR, który pozwala na dodanie naszego konta na XMPP do listy kontaktów naszych znajomych. Drugim z nich jest wejście do zakładki kontaktów, kliknięcie plusa w prawym dolnym rogu, i wybranie opcji „New Contact or Channel” („nowy kontakt lub kanał”).


Warto w trakcie dodawania nowego kontaktu zaznaczyć „Save as contact / bookmark” („Zapisz kontakt / zakładkę”), żeby można było szybko powrócić do świeżo dodanego kontaktu w razie potrzeby.
Instalacja i konfiguracja Dino na Linuxie/FreeBSD/OpenBSD
Ostatnim klientem, który omówię na łamach tego poradnika, jest Dino — klient na różne odmiany Linuxa i FreeBSD/OpenBSD.
Warto przy tym nadmienić, że dystrybucji Linuxa jest dość sporo, więc w zależności od tego, jaką posiadasz dystrybucję (lub odmianę systemu BSD), nazewnictwo paczki odpowiedzialnej za aplikację może się różnić. Dla przykładu na Arch Linuxie może się ona nazywać dino, na Debianie i Debianopodobnych (Ubuntu, LMDE itd.) dino-im, itp., zaś na np. FreeBSD net-im/dino. Jeżeli mamy wątpliwości, co jest „pod maską” komputera, w terminalu możemy wpisać komendę neofetch lub fastfetch, który w odpowiedzi poda nam m.in. nazwę uruchomionego systemu.
Po tym, gdy już uruchomimy Dino, ukaże się nam okno zachęcające nas do zalogowania (lub zarejestrowania) się:

Klikamy na „Set up account”, żeby otworzyć okno logowania się. Zostaniemy poproszeni o wpisanie naszego identyfikatora XMPP. Jako iż jeszcze go zapewne nie posiadasz, kliknij na „Create account”.



Klikamy na „Register”, czekamy na potwierdzenie, i gdy wszystko pójdzie dobrze — to nasze konto zostało zarejestrowane.
A co, gdy chcemy do kogoś napisać? Po zarejestrowaniu się klikamy w lewym górnym rogu na ikonę plusa i potem na „Start Conversation” (lub klikamy skrót klawiszowy Ctrl+T), żeby pokazało się nam okno wyboru kontaktu, i wciskamy Start.

I teraz najważniejsze: przynajmniej do wersji 0.5 aplikacji OMEMO nie było domyślnie włączane. Jeżeli tak jest, można to zmienić, klikając na kłódkę z prawej strony pola tekstowego do pisania wiadomości i wybierając stąd OMEMO:

Tylko w ten sposób nasze wiadomości będą szyfrowane od końca do końca w trakcie konwersowania z naszymi znajomymi. Możemy też sprawdzić, czy przyszłe konwersacje będą szyfrowane, wchodząc do ustawień (trzy kreski tuż przy ikonce plusa w lewej części głównego okna Dino > „Preferences” > „Encryption”). Upewnij się, że opcja „OMEMO by default” jest zaznaczona, tak jak pokazano na poniższym zrzucie ekranu.

Podsumowanie
Nauczyliśmy się korzystać z trzech klientów do XMPP – Monala, Monocles Chat oraz Dino. Choć jest ich zdecydowanie więcej, to na pokrycie ich wszystkich zwyczajnie by nie starczyło czasu. Najważniejszym jest jednak to, że pokazałem nawet na tych 3 przykładach, że korzystanie z XMPP nie jest wcale trudne. Oczywistym jest fakt, że XMPP się różni konstrukcyjnie od popularnych w Polsce komercyjnych komunikatorów od firmy Meta Platforms (Facebook Messenger / WhatsApp), ale — jak to mówi stare, chińskie (może nie do końca chińskie, ale zmyśliłem to na potrzeby artykułu) przysłowie — dla chcącego nic trudnego.
Co więcej, protokół przetrwał dość spory kawał czasu — czy znacie jakikolwiek inny protokół do komunikacji, który przetrwał prawie 30 lat, nie pochodzi od wielkiej firmy technologicznej i dalej ma się dobrze dzięki dodawanym na bieżąco ulepszeniom? Przynajmniej ja nie jestem w stanie takiego wymienić.
Niemniej chciałbym Was zachęcić do eksploracji tego protokołu, niezależnie od tego, czy dopiero go poznaliście, czytając „Kontrabandę”, czy chcecie na nim się ustatkować na nowo.
Źródła
Zdjęcie tytułowe zostało zrobione własnoręcznie przez autora artykułu (z wyłączeniem logotypu XMPP), i jest ono dostępne na licencji CC BY-SA 4.0 International do pobrania w serwisie Wikimedia Commons.


