Jeśli planujesz tworzyć aplikacje lub usługi integrujące się z Fediwersum, pierwszym krokiem jest określenie, czy chcesz budować aplikacje klienckie wykorzystujące istniejące serwery, czy może wdrożyć protokół ActivityPub we własnym rozwiązaniu. Co ciekawe, często najlepsze wyniki przynosi połączenie obu podejść1.
Tworzenie aplikacji klienckich
W tej sekcji skupiamy się na niezależnych, otwartoźródłowych platformach w Fediwersum. Pomijamy komercyjne rozwiązania takie jak Threads czy Flipboard, które oferują bardzo ograniczone API lub nie udostępniają go wcale.
Jeśli zamierzasz tworzyć aplikacje klienckie, narzędzia do planowania publikacji lub inne rozwiązania współpracujące z istniejącymi serwerami w Fediwersum, najlepszą strategią jest zapoznanie się z dokumentacją konkretnych platform. Większość platform mikroblogowych w Fediwersum — takich jak Mastodon, Pleroma czy popularne forki Misskey — implementuje API Mastodona, które oferuje rozbudowaną dokumentację oraz gotowe biblioteki w wielu językach programowania. Inne platformy, jak PeerTube, Lemmy czy Wafrn, udostępniają własne API. Co istotne, większość platform wykorzystuje te same API w swoich oficjalnych aplikacjach, co oznacza, że programiści mogą zaimplementować pełną funkcjonalność we własnych projektach.
Przypomina to czasy, gdy portale takie jak Facebook, Twitter czy Reddit oferowały programistom kompletne API, a użytkownicy mogli korzystać z różnorodnych nieoficjalnych interfejsów. Udostępnianie pełnych API przez platformy społecznościowe umożliwiało pojedynczym programistom i małym zespołom tworzenie innowacyjnych rozwiązań rozszerzających funkcjonalność tych serwisów2. W ostatnich latach API te stały się jednak coraz bardziej ograniczone, często wprowadzano także wysokie opłaty za ich wykorzystanie. W rezultacie tworzenie aplikacji korzystających z API tradycyjnych portali społecznościowych stało się trudniejsze i mniej opłacalne. Tymczasem największe innowacje dokonywane przez te platformy w tym samym czasie to kopiowanie Snapchata, kopiowanie TikToka i wskrzeszanie Adolfa Hitlera.
Częścią standardu ActivityPub jest specyfikacja API Client-to-Server. Nie jest ona jednak szeroko implementowana — większość platform w Fediwersum korzysta z własnych, dedykowanych API. Mimo to stanowi podstawę dla niektórych zaawansowanych funkcji ActivityPub, takich jak rozszerzenie umożliwiające pełną migrację konta między serwerami czy specyfikację komunikacji szyfrowanej E2E.
Jeśli tworzysz aplikację implementującą API Mastodona w JavaScript, polecamy zapoznać się z biblioteką pl-api tworzoną przez autorkę portalu Fediverse.pl. Wyróżnia ją szerokie wsparcie dla różnych platform implementujących API Mastodona, nie tylko samego Mastodona.
Implementacja protokołu ActivityPub
Jeżeli rozwijasz usługi internetowe — takie jak portale społecznościowe, blogi czy platformy do udostępniania multimediów — warto rozważyć implementację protokołu ActivityPub. Dzięki temu Twoja usługa stanie się częścią Fediwersum i umożliwi interakcje z innymi platformami wykorzystującymi ten standard.
ActivityPub to protokół opracowany przez grupę roboczą W3C Social Web Working Group, stanowiący od 2018 roku oficjalną rekomendację W3C. Określa sposób, w jaki zdecentralizowane platformy społecznościowe mogą komunikować się ze sobą, oraz sposób komunikacji między klientami a serwerami. W ActivityPub użytkownicy reprezentowani są jako obiekty Actor posiadające skrzynkę nadawczą i odbiorczą, służące do przesyłania aktywności z innych serwerów.
Protokół ActivityPub jest zwykle implementowany w połączeniu z innymi standardami. Najważniejszym z nich jest WebFinger — standard adresowania profilów w formacie przypominającym adres e-mail (np. @[email protected]). Bez implementacji WebFinger odnalezienie profilu na Twoim serwerze nie będzie możliwe na platformach takich jak Mastodon. Dlatego implementując ActivityPub, warto kierować się konwencjami przyjętymi przez najpopularniejsze platformy w Fediwersum — nie ogranicza to jednak możliwości wykorzystania pełnego potencjału ActivityPub.
W implementacji ActivityPub pomogą zasoby dostępne na stronie https://activitypub.rocks/. Szczególnie polecamy dokument ActivityPub for developers skupiony na praktycznych aspektach implementacji protokołu. Istnieje również narzędzie ActivityPub.Academy, które — bazując na Mastodonie — umożliwia interaktywną naukę protokołu poprzez wyświetlanie aktywności wysyłanych i odbieranych przez serwer w czasie rzeczywistym.
Dostępne są również gotowe biblioteki ułatwiające implementację serwerowego API ActivityPub we własnej aplikacji, takie jak Fedify (TypeScript).
Jeśli potrzebujesz wykroczyć poza podstawową specyfikację ActivityPub, zapoznaj się z dokumentacją dotyczącą rozszerzania Activity Streams 2.0 oraz repozytorium Fediverse Enhancement Proposals. FEP-y to miejsce, w którym rozwijane są nowe rozszerzenia protokołu ActivityPub, ale przede wszystkim opisują one stan faktyczny wdrożeń protokołu, jak FEP-c0e0 dotyczący reakcji emoji czy FEP-044f dla cytatów.
Forum SocialHub to główne miejsce dyskusji na temat rozwoju protokołu ActivityPub i jego rozszerzeń, gdzie można zadawać pytania dotyczące implementacji. Wiele istniejących projektów implementujących ActivityPub oferuje plik FEDERATION.md, w którym dokumentują szczegóły swojej implementacji — co może być pomocne przy tworzeniu własnej usługi. Projekty te mają też zwykle grupy na komunikatorach takich jak zdecentralizowany Matrix.org czy Discord, gdzie również można uzyskać pomoc i porozmawiać z innymi programistami.
Footnotes
-
Przykładowo, aplikacja agregatora newsów Flipboard pozwala na zalogowanie się na swoje konto na Mastodonie, a jednocześnie platforma rozwija własną implementację ActivityPub, co pozwala na obserwowanie zewnętrznego Fediwersum przez Flipboarda czy (obecnie tylko wybranych) profilów i Magazynów z Flipboarda z poziomu Fediwersum. ↩
-
Przykładem może być TweetDeck, stworzony przez niezależnego programistę i wydany w 2008 roku, który później został przejęty przez Twittera. W następstwie przejęcia, w 2012 roku z TweetDecka zniknęły funkcje umożliwiające publikowanie na LinkedIn, MySpace i Google Buzz, a w 2013 wycofano wsparcie dla Facebooka. Interfejs TweetDecka stanowił inspirację m.in. dla pierwszej aplikacji webowej Mastodona. Więcej: TweetDeck (en.wikipedia.org) ↩