Witamy w Fediwersum: Zdecentralizowane media społecznościowe

Jeśli szukamy mediów społecznościowych, w których użytkownik ma większą kontrolę, w Fediwersum znajdziemy wiele możliwości, a między nimi popularnego Mastodona.


Paul Brown

Chociaż wydawałoby się, że jest inaczej pomimo obietnicy nieograniczonych możliwości komunikacji i założenia, że ci, którzy nie mieli takiej możliwości, mogą się teraz wypowiedzieć, dzisiejsze media społecznościowe to w najlepszym razie hermetyczna bańka, chociaż lepszym opisem byłoby szambo z kratownicą na górze. Problemem jest to, że platformom takim nie zależy na interesie ich użytkowników. Działania właścicieli portali społecznościowych to między innymi wprowadzanie coraz większej ilości zapisów do warunków świadczenia usług, zbieranie danych o użytkownikach i sprzedawanie ich innym firmom oraz rządom czy implementacja niejasnych algorytmów. Początki Możemy zrezygnować z portali społecznościowych i wieść życie pustelnika, ale czemu wylewać dziecko z kąpielą? Fediwersum [1] to odpowiedź społeczności FOSS na zamknięte, zbierające prywatne dane, własnościowe media społecznościowe. Ściśle mówiąc, Fediwersum może obejmować wszystkie usługi mediów społecznościowych (oraz niektóre niezwiązane z mediami społecznościowymi), które nie opierają się na scentralizowanej, kontrolującej wszystko jednostce (jak na przykład Facebook, Twitter czy Google), ale umożliwiają użytkownikowi uruchomienie własnego serwera (często określanego jako „pod”) i połączenie go z siecią podobnych serwerów, aby dzielić z nimi zawartość. Dzięki temu użytkownik A może publikować na podzie X, a użytkownik B odczytywać tę publikację na podzie Y. Fediverse powstał na bazie projektów takich jak Diaspora* [2] czy Identi.ca [3], będących wcześniejszymi próbami stworzenia rozproszonej sieci mediów społecznościowych. Usługi te ewoluowały, a twórca Identi.ca, Evan Prodromou opracował pump.io [4], czyli framework, na którym deweloperzy mogą budować usługi społecznościowe. Następnie okazało się, iż W3C widziała, że pump.io było dobre. Organizacja wzięła więc esencję projektu i tchnęła w niego nowe życie, przekształcając go w ActivityPub [5] i publikując rekomendację. Tak narodziło się współczesne Fediwersum. Niech staną się wpisy! ActivityPub to protokół oraz API, które pozwalają korzystającym z nich usługom komunikować się w obrębie Fediwersum z węzłami dostarczającymi tego samego typu usług, a nawet z węzłami innych usług. Przykładowo możemy opublikować zdjęcie na koncie na Pixelfed [6], usłudze do dzielenia się zdjęciami (Rysunek 1) i pojawi się ono u tych, którzy śledzą nas na Mastodonie [7], najbardziej popularnym serwisie mikroblogowym Fediwersum (Rysunek 2). f01-pixelfed Rysunek 1: Co opublikujemy na Pixelfed... f02-mastodon Rysunek 2: ... pojawi się u ludzi, którzy śledzą nas na Mastodonie. Fediwersum nie tylko współdzieli wpisy, ale też zasoby. Dodatkowo, korzystając z technologii P2P, potrafi to robić nie tylko między węzłami, ale też pomiędzy klientami. Powiedzmy, że chcemy otworzyć pod PeerTube na naszym własnym serwerze. Oczywiście będziemy potrzebowali sensownej przepustowości sieci, ale nie tak dużo, jakby się wydawało, gdyż klienci usługi wideo oglądający ten sam film współdzielą obciążenie. Oprócz Mastodona, PeerTube’a oraz Pixelfeda istnieje też w Fediwersum platforma mediów społecznościowych skierowana do muzyków i twórców podcastów, nazwana Funkwhale [8] oraz Hubzilla [9], która opisuje sama siebie w następujący sposób: „potężna platforma do tworzenia wzajemnie połączonych stron internetowych z frameworkiem charakteryzującym się rozproszoną tożsamością, komunikacją i uprawnieniami, zbudowana z wykorzystaniem powszechnej technologii serwerów internetowych” – czyż nie jest to federacyjny Facebook? Hubzilla nie jest do końca dopracowana i nie opanowałem jej jeszcze do końca. Prawdę mówiąc, większość Fediwersum wymaga jeszcze dopracowania. Pixelfed nie ma aplikacji na telefony, która by była zintegrowana z kamerą, co jeśli dobrze rozumiem, sprawiłoby, że będzie bardziej atrakcyjną propozycją dla użytkowników Instagrama. Na PeerTube nie ma możliwości sprawdzenia, kim są nasi prenumeratorzy, a interfejs Hubzilli nie jest zbyt nowoczesny i wprowadza ActivityPub jedynie jako wtyczkę, więc jak zgaduję, łączenie z innymi usługami przez jego sieć może być niestabilne. Jednak nie jest to nic niezwykłego: wiele z usług Fediwersum dopiero się rodzi i często nie mają użytkowników oraz wpisów. Mastodon jest tu wyjątkiem. Podstawy Mastodona Mastodon jest tematem wielu artykułów, które przewidują jego upadek, co świadczy o tym, że raczej zdoła przetrwać. I rzeczywiście: po zliczeniu kont okazuje się, że liczba użytkowników Mastodona w szybkim tempie zbliża się do 3,4 milionów i jest on najpopularniejszą, niewłasnościową platformą mediów społecznościowych. Jednym z powodów jego popularności może być interfejs – Mastodon wygląda po prostu dobrze (ponownie Rysunek 2). Jest też prosty w konfiguracji i użytkowaniu. Interfejs Mastodona opiera się na kolumnach. Pierwsza od lewej to miejsce, w którym wprowadzamy swoje wpisy (tzw. tooty mające do 512 znaków długości). Możemy też dodawać załączniki: do czterech zdjęć oraz plik wideo lub audio. Dostępne są ankiety, możemy decydować o poziomie prywatności wpisu (publiczny, dla tych, którzy nas śledzą, wiadomość bezpośrednia itp.) oraz ustawić zawartość jako ukrytą pod ostrzeżeniem, co jest idealne w przypadku treści zdradzających na przykład fabułę filmu lub potencjalnie obraźliwego materiału. Druga kolumna przedstawia obserwowane treści (czyli feed). Znajdziemy tu własne oraz pochodzące od ludzi, których obserwujemy, tooty. W trzeciej kolumnie widoczne są powiadomienia, czyli informacje o tym, że ktoś lubi lub promuje nasze tooty, wiadomości do nas przesłane, komentarze itd. Czwarta kolumna jest troszkę nieokreślona. Domyślnie pokazuje menu, w którym możemy wybrać kolejność przedstawiania treści według lokalnej osi czasu (czyli wszystkie tooty wysłane do naszego poda zgodnie z chronologią), globalnej osi czasu lub tooty opublikowane w naszej sieci podów zgodnie z chronologią. Możemy przekształcić ją w skrzynkę odbiorczą i pokazywać tu wiadomości albo wyświetlać tooty, które polubiliśmy, czy też stworzyć listę kont, które śledzimy. Możliwa jest też konfiguracja, w której po kliknięciu na profil użytkownika w tym miejscu zobaczymy informacje na jego temat. Jego najnowsze statystyki i tooty również pojawią się w tym miejscu. Możemy też zmienić treść wyświetlaną w czwartej kolumnie, korzystając z paska narzędzi nad pierwszą kolumną. Przycisk Rozpocznij zabierze nas z powrotem do oryginalnego menu czwartej kolumny, a Lokalna oś czasu i Globalna oś czasu służą do przełączania widoków linii czasu w czwartej kolumnie. Przycisk Preferencje pozwala skonfigurować wszystko, co dotyczy naszego konta, od wyświetlanej nazwy i wrażenia, jakie ono sprawia, po specjalne aplikacje, za pomocą których możemy wydobywać informacje z Mastodona (więcej na ten temat za chwilę). Tak w ogóle to w Preferencjach możemy też włączyć opcję umożliwiającą dodanie większej liczby kolumn do interfejsu. W tym celu przechodzimy do Preferencje | Wygląd i zaznaczamy Włącz zaawansowany interfejs użytkownika. Opis jest następujący: „Jeśli chcesz użyć pełną szerokość swojego ekranu, zaawansowany interfejs użytkownika pozwala Ci skonfigurować wiele różnych kolumn, by zobaczyć jak najwięcej informacji kiedy tylko chcesz. Strona główna, Powiadomienia, Globalna oś czasu, dowolna ilość list i hasztagów”. Irytujące jest to, że nie wynika z tego, jak dodać kolejne kolumny. Oto nasz sposób: powiedzmy, że chcemy dodać nową kolumnę z globalną osią czasu. Przechodzimy do czwartej kolumny, klikamy na Globalna oś czasu. Pojawią się treści z tej właśnie osi czasu, przykrywając menu Rozpocznij. Na górze z prawej strony osi czasu znajduje się przycisk konfiguracji. Wygląda jak trzy małe suwaki. Klikamy na niego i wybieramy + Przypnij. Kolumna zostanie z nami na stałe, a panel Rozpocznij pojawi się po prawej, dając nam możliwość dodania kolejnych kolumn. f03-columns Rysunek 3: Dodawanie nowych kolumn pozwala jednocześnie śledzić kilka osi czasu i wpisy według hasztagów. f04-fedilab Rysunek 4: Fedilab umożliwia zarządzanie wieloma kontami Mastodona i PeerTube’a z poziomu telefonu. Wkrótce aplikacja wspierać też będzie Pixelfeda. f05-register Rysunek: Kopiujemy i wklejamy klucz Sekret do naszej aplikacji, aby zarejestrować ją w sieci. Jeśli interesuje nas dany temat, klikamy na jego hasztagu i oś czasu w kolumnie Rozpocznij wypełni się tootami go zawierającymi. Możemy ponownie kliknąć na przycisk konfiguracji na górze prawej kolumny i przypiąć ją, aby śledzić rozwój danego tematu (Rysunek 3). Korzystając z pola wyszukiwania, które znajduje się w pierwszej kolumnie z lewej strony, zaraz pod paskiem narzędzi, możemy wyszukiwać wpisy po hasztagach (oraz użytkownikach i wielu innych rzeczach). Kodowanie na potrzeby Mastodona Wraz ze wzrostem popularności Mastodona pojawiło się kilka programów klienckich dających nam dostęp do konta z telefonu. Osobiście skłaniam się ku Fedilab [10] pozwalającemu zarządzać kontami z Mastodona, PeerTube’a, a wkrótce też Pixelfeda – wszystko z jednej aplikacji (Rysunek 4). Jeśli nie możecie znaleźć klienta, który by się wam spodobał, nie rozpaczajcie: kodowanie na potrzeby Mastodona jest łatwe. Jego API jest dobrze udokumentowane i dostępnych jest wiele hooków w kilku językach programowania. Skorzystajmy z Pythona, aby w prosty sposób odczytać dane z konta. Moduł, który musimy pobrać, to Mastodon.py [11], a dokumentację znajdziemy w Internecie [12]. Mastodon.py instalujemy poleceniem:

sudo pip install Mastodon.py

Stwórzmy teraz krótki skrypt, który rozwiąże rzeczywisty problem. Sieć Mastodona przestaje pokazywać dokładną liczbę śledzących powyżej tysiąca. Na przykład przy 2,734 lub 2,755 śledzących zobaczymy jedynie 2.7K. Z tego powodu weryfikacja popularności konta jest utrudniona. Nasza pierwsza aplikacja korzysta z numeru identyfikacyjnego toota, aby wyświetlić nazwę konta i liczbę śledzących je użytkowników. Zanim nawet zaczniemy pisać kod programu, musimy nadać naszej aplikacji nazwę i zarejestrować ją w sfederowanej sieci podów Mastodona, którą to sieć będziemy odpytywać. Aby to zrobić, logujemy się na nasze konto Mastodona. Przechodzimy do Preferencje | Tworzenie aplikacji i klikamy na przycisk Nowa Aplikacja. Uzupełniamy pole tekstowe i wybieramy zakres dla aplikacji. W tym przypadku wystarczy, że zostawimy zaznaczenie przy polu read, gdyż wszystko, co będziemy robić, to odczytywanie danych z sieci. Klikamy na przycisk Wyślij na dole strony i dzięki temu nasza aplikacja zarejestruje się w sfederowanej sieci. Teraz, jeśli klikniemy na aplikacji, na górze strony zobaczymy trzy klucze. Ten, który jest oznaczony jako Sekret, wymagany jest do zakończenia rejestracji aplikacji w sieci (Rysunek 5). Aby zakończyć rejestrację, tworzymy naszą aplikację, korzystając z kodu z Listingu 1.

Listing 1: liczbasledzacych.py (Część Pierwsza)

01 from mastodon import Mastodon

02 

03 Mastodon.create_app(

04      'liczbasledzacych',

05      api_base_url = '[ADRES INSTANCJI MASTODONA]',

06      to_file = '[SEKRET]'

07 )

W wierszu 5 umieszczamy adres instancji Mastodona, w której zarejestrowaliśmy naszą aplikację. Wygląda to mniej więcej tak:

api_base_url = 'https://mastodon.xyz/'

W wierszu 6 wklejamy klucz oznaczony jako Sekret, o którym pisaliśmy wcześniej. Wyglądać to może tak:

to_file = 'HHssuwd_AhTot4LlyMaDEUpK3y_aEJHjjIWJj2289usQsjSJqiw-d'

 
Po jednym uruchomieniu tej wersji aplikacji możemy zakomentować lub usunąć kod rejestracji. Ostateczna wersja naszej aplikacji odczytuje listę adresów tootów (patrz ramka „Pobieranie Toota”) z wiersza poleceń i przetwarza je, aby odkryć konta pochodzenia i liczbę śledzących, jakie to konto posiada. Program przedstawiliśmy w Listingu 2. Działa to w następujący sposób: 1. W wierszach 1 i 2 importujemy moduły: sys, aby móc odczytywać parametry z wiersza poleceń i mastodon, do funkcji związanych z Mastodonem. 2. W wierszu 4 usuwamy pierwszy element z listy parametrów przekazywanych z wiersza poleceń, gdyż jest to nazwa skryptu, a my potrzebujemy jedynie odnośników. 3. W wierszu 5 definiujemy pętlę, w której sprawdzamy odnośniki. 4. W wierszach od 6 do 8 dzielimy adres każdego wpisu, wyodrębniając pod, na którym został opublikowany, nazwę konta oraz ID samego toota. Jeśli mamy adres wpisu, tak jak poniżej:

https://mastodon.technology/@kde/102455343978152552

tinstance zawierać będzie nazwę mastodon.technology, do taccount zapisane zostanie @kde, a do tid, numer 102455343978152552. 5. W wierszach od 10 do 13 tworzymy obiekt mastodon, który umożliwi aplikacji połączenie z instancją i identyfikację za pomocą kodu klienta (klucz o nazwie Sekret). 6. W wierszu 15 wyświetlamy na konsoli nazwę użytkownika. 7. W wierszach 16 i 17 korzystamy z funkcji status() z Mastodon.py, aby odczytać dane z instancji Mastodona. Funkcja status() [13], kiedy otrzyma numer ID, odczytuje danego toota (znanego w żargonie ActivityPub jako status). Zwraca słownik toot [14], który zawiera wszystko, co chcemy wiedzieć na temat wpisu. Znajdziemy w nim mniejszy słownik znany jako account [15], który zawiera informacje na temat konta, z którego wysłany został toot, wraz z numerem id (wiersz 16 Listingu) oraz liczbą śledzących go użytkowników (wiersz 17). Pobieranie Toota Aby przechwycić adres pojedynczego toota, klikamy na godzinie jego publikacji. Znajdziemy ją w prawym górnym rogu ramki z tootem. Wpis otworzy się w nowym oknie/karcie z adresem, który będzie wyglądał mniej więcej tak:

https://framapiaf.org/@davidrevoy/102552017830926864

Mamy tu po kolei: framapiaf.org, czyli instancję Mastodona (pod), na której znajduje się toot, dalej jest @davidrevoy, użytkownik. Końcowy numer 102552017830926864 to unikalne ID przypisane do tego wpisu.

Listing 2: liczbasledzacych.py (Część Druga)

01 import sys

02 from mastodon import Mastodon

03 

04 sys.argv.pop(0)

05 for eachToot in sys.argv:

06     tinstance = eachToot.split("/")[2]

07     taccount = eachToot.split("/")[3]

08     tid = eachToot.split("/")[4]

09 

10     mastodon = Mastodon (

11         client_id = '[SEKRET]',

12         api_base_url = 'https://' + tinstance

13     )

14 

15     print ("Użytkownik:" + taccount)

16     print ("ID: " + str(mastodon.status(tid)['account']['id']))

17     print ("Śledzących: " + str(mastodon.status(tid)['account']['followers_count']))

18     print ("===")

Skrypt możemy wywołać w następujący sposób:

python liczbasledzacych.py https://mastodon.technology/@kde/102455343978152552 https://mastodon.social/ @fsfe/102563322717544968

Zarówno słownik toot, jak i account zawierają dużo więcej informacji. Możemy z ich pomocą uzyskać zawartość toota, czy sporządzić listę kont, które dany użytkownik śledzi. Generalnie, interakcja z Mastodonem z poziomu skryptu jest naprawdę prosta. Wnioski Pomimo że Fediwersum opiera się na wspaniałych pomysłach, a dla programistów jest proste i eleganckie, brutalna prawda jest taka, że usługa społecznościowa jest tak dobra jak ludzie, którzy z niej korzystają. Czyż nie myślimy czasem o portalach takich jak Facebook, Twitter i LinkedIn: „Ten portal jest fatalny, ale nie opuszczę go, bo chcę utrzymywać kontakt z ludźmi, którzy tu są”? Faktem jest, że czas, kiedy media społecznościowe przyciągały nowych użytkowników swoimi funkcjami, już minął. Jednak Fediwersum ma wiele do zaoferowania. Jedną z ciekawszych kwestii jest to, że użytkownicy różnych serwisów mogą tworzyć razem jedną publiczność dla naszych wpisów. Może dzięki ciekawym funkcjom pomysł ten utrzyma się na rynku. Info [1] Fediwersum: https://fediverse.party/ [2] Diaspora*: https://diasporafoundation.org/ [3] Identi.ca: https://identi.ca/ [4] Pump.io: http://pump.io/ [5] ActivityPub: https://www.w3.org/TR/activitypub/ [6] Pixelfed: https://pixelfed.org/ [7] Mastodon: https://joinmastodon.org/ [8] Funkwhale: https://funkwhale.audio [9] Hubzilla: https://zotlabs.org/page/hubzilla/hubzilla-project [10] Fedilab: https://fedilab.app/ [11] Mastodon.py: https://github.com/halcy/Mastodon.py [12] Dokumentacja Mastodon.py: https://mastodonpy.readthedocs.io/stable/ [13] status(): https://mastodonpy.readthedocs.io/stable/#reading-data-statuses [14] Słownik toot: https://mastodonpy.readthedocs.io/stable/#toot-dicts [15] Słownik account: https://mastodonpy.readthedocs.io/stable/#user-dicts

Zaloguj się, aby dodać komentarz

Nie masz konta? Zarejestruj się »

Zobacz także

Skuteczne narzędzia do wykrywania uszkodzonych podzespołów

pobierz

Wykrywanie i usuwanie niechcianych programów

pobierz

Polecane artykuły

Array ( [docId] => 50145 )

Array ( [docId] => 50145 )