Rozproszone social media, co z nimi jest nie tak?

Opublikowano: 11.01.2021

Ostatnia modyfikacja: 07.02.2024

distributed

programowanie

socialmedia

Wiele osób uświadomiło sobie niedawno, jak wielką władzę nad wolnością wypowiedzi posiadają niewybieralne encje, takie jak Twitter, Google, Apple czy Amazon. Proponowanym przez niektórych rozwiązaniem jest rozproszenie platform publikacji tak, by uwolnić się spod władzy gigantów tego świata. Idea fantastyczna, ale co się z tym wiąże?

Lemons and your life

Urządzamy zrzutkę wśród znajomych i za 40 zł miesięcznie (teoretycznie +VAT, ale jeden z nas bierze to na firmę) wykupujemy sobie abonament na VPS u dostawcy. Na tej jednej maszynce z 2 rdzeniami i 4 GB RAM postawimy sobie instancję czegoś, co dostarcza właśnie rozproszone social media. W sumie będzie ze 20 kont, ruch przeciętny, maszynka uciągnie. Na razie jest super.

W tym momencie wszystkie wyprodukowane przez użytkowników treści znajdują się w jednym miejscu, w bazie danych naszego serwera. Użytkownik może zmienić widoczność materiału np dodając kolejną osobę która może go obejrzeć - lub odbierając komuś to uprawnienie. Może również usunąć treść którą wyprodukował, bo po zastanowieniu się jednak zmienił zdanie na jakiś temat. A wreszcie po tym jak się na wszystkich obraził i usunął konto, jego treści zniknęły razem z nim (a przynajmniej przestały być widoczne dla innych). A co jeśli treści te zostaną udostępnione innym użytkownikom na innych, podobnych do naszego serwerach?

Zagadnienie to było podnoszone już wielokrotnie i dotyczyło wielu projektów. Wspominałem o nim w przypadku ActivityPub, ale to samo się dotyczy np Secure Scuttlebutt. Decentralizacja komunikacji sprawdza się bardzo dobrze w przypadku, gdy przekaz ma charakter efemeryczny, np rozmowa telefoniczna. Komunikacja przez media społecznościowe z kolei jest przekazywaniem wiadomości o charakterze trwałym. Twórca wiadomości przestaje mieć nad nią kontrolę zaraz po jej wytworzeniu, ale tu wiadomość może żyć długo, a jej atrybuty mogą być zmieniane przez wszystkich w łańcuchu przekazujących ją dalej.

Wyobraźmy sobie, że twórca wiadomości zmienia jej widoczność z publicznej na ograniczoną. Wszyscy ci, którzy otrzymali tę wiadomość muszą zaktualizować jej właściwości wyświetlania (lub usunąć ją z lokalnego zasobu). W idealnym świecie zapewne by to zrobili, ale świat jest daleki od ideału. Oprócz takich zwykłych przypadków jak awarie sieci czy oprogramowania istnieją również ludzie o zamiarach niekoniecznie w pełni zgodnych z zamysłem twórcy wiadomości. Wiadomość, która nie powinna być widoczna dla niektórych osób, będzie dla nich nadal widoczna - do czasu usunięcia awarii, lub co gorsza na zawsze. Złe intencje szkodzą najbardziej, gdy przejawia je zarządzający systemem, ale w systemach zdecentralizowanych tych zarządzających jest zwyczajnie dużo więcej. Żaden z proponowanych systemów nie chroni przed złymi intencjami zarządzającymi końcówkami sieci. Żaden również nie jest w stanie wymusić aktualizacji atrybutów raz rozproszonej wiadomości - to musi polegać na dobrej woli operatorów końcówek. W końcu mechanizm blokowania czarnych owiec zadziała, ale zanim zadziała, to mleko zdąży się rozlać. Jest takie powiedzenie, że co trafi do internetu to pozostanie już w nim na zawsze. Łatwo jest sobie wyobrazić sytuację, w której jeden z serwerów zostaje odłączony od sieci tych, z którymi wymieniał wiadomości, jego stan oglądu rzeczywistości zostanie zamrożony, a dalej będzie trwał jako enklawa.

Tutaj nie sposób pominąć milczeniem rozwiązania technicznego, które zapewnia integralność danych z systemów rozproszonych - jest to Blockchain i jego wersje rozwojowe zebrane w projekcie Hyperledger. W kontekście social mediów ma ono jednak poważne mankamenty, przede wszystkim dane w nich umieszczone są absolutnie niezmienne. Inny problem to rozmiar przechowywanych danych - oryginalnie były to kilkudziesięciobajtowe identyfikatory transakcji, natomiast zawartość social mediów jest znacząco większa. Aby było to użyteczne i zapewniało integralność danych ten portfel musiałby być jeden i wspólny, co szybko doprowadziłoby do jego fragmentacji (przechowywanie 2 GB danych na telefonie jest do przyjęcia, ale 200 już raczej nie). Wracamy do centralizacji systemu, na razie na poziomie danych, ale jednak centralizacji. Sądzę, że ostatnie zajścia przyspieszą prace nad wykorzystaniem tego rodzaju technologii, ale nie spodziewam się, by efekty pojawiły się szybko.

Tak naprawdę nie przychodzi mi do głowy nic, co mogłoby rozwiązać ten problem. W sytuacji systemu scentralizowanego zaufanie wymagane jest tylko pomiędzy 2 stronami - zarządcą i użytkownikiem. W systemie zdecentralizowanym tych stron może być nieskończenie wiele, a o większości nie wiadomo nic. W czystej teorii dałoby się określić poziom zaufania na podstawie zbioru różnych maszynowych asercji, ale… no właśnie, odpowiedzi na te asercje musiałyby być całkowicie odseparowane od warstwy ludzkiej w tym systemie. Wyobrażam to sobie jako zbiór maszynowych pytań, które mają dać ostatecznie wyobrażenie kim jest ta druga strona, która zadaje pytanie. Nie czego chce, tylko kim jest, łącznie z nieujawnionymi intencjami zarządcy. Coś takiego jeszcze nie istnieje i wątpię, bym za swego życia doczekał powstania czegoś takiego. Aby social media były naprawdę rozproszone, konieczny jest nieosiągalny na dzień dzisiejszy poziom zaufania.

Z tych rozważań niestety wniosek płynie niewesoły. Naprawdę rozproszone social media są na chwilę obecną mrzonką. Jedyne co można robić, to decentralizować je, tworząc kolejne małe getta. Zapewne znajdą się i tacy, którym to nie będzie przeszkadzać, ale nie spodziewam się by przemówiło to do większości użytkowników serwisów, które teraz określa się jako ogrody za murami. Dla większości jednak ważniejsza jest szeroka audiencja, niż gwarancja wolności wypowiedzi, a takiej publiczności nie zapewniają małe getta - do tego potrzebne jest duże getto. Chciałbym się mylić, ale to wszystko czyni rozproszone social media czczą mrzonką.