ActivityPub è un protocollo federato che definisce un insieme di interazioni interoperabili di social network attraverso API specifiche. Ogni server che implementa questo protocollo può comunicare con il resto della rete. Esso
ha raggiunto lo status di raccomandazione W3C nel 2018. È una delle diverse specifiche correlate prodotte dal Social Web Working Group.
ActivityPub consiste di due strati: Un protocollo di federazione server-to-server e un protocollo client-to-server. In per federarsi con l'ecosistema ActivityPub, un servizio deve solo implementare il protocollo server-to-server.
Gli utenti in ActivityPub sono concettualizzati come oggetti attore. La comunicazione da attore ad attore ha una somiglianza alla posta elettronica. Per essere conforme alle specifiche, ogni attore deve avere un "inbox" e un "outbox" endpoint, come URL che sono accessibili sul server. Dovrebbero anche avere "following" e "followers". Possono avere "mi è piaciuto" e molte altre possibilità predefinite.
Anche se non fa parte delle specifiche di ActivityPub, in pratica WebFinger è usato per scoprire i profili degli attori.
La federazione da server a server è autenticata usando le firme HTTP. Il server crea una coppia di chiavi pubbliche e private per ogni attore e un documento JSON-LD accessibile pubblicamente e recuperabile via HTTP che contiene la sua chiave pubblica. Ogni messaggio che il server invia per conto di un attore è firmato dalla sua chiave. Quando un server remoto
riceve un POST alla sua casella di posta, verifica la firma sulla richiesta HTTP. Per verificare l'integrità degli oggetti, le firme dei dati collegati vengono utilizzate per firmare l'oggetto con la chiave pubblica dell'attore che lo ha creato.
Un documento della conferenza Rebooting the Web of Trust del 2017 descrive come le identità crittografiche distribuite crittografiche potrebbero essere aggiunte ad ActivityPub.
ActivityPub è un protocollo federato da server a server che passa messaggi tra sistemi.
I server ActivityPub non si collegano proattivamente tra loro, quindi non sono a conoscenza della presenza l'uno dell'altro finché un utente non trova e segue qualcuno su un altro server. I server mantengono una lista di account remoti che i loro utenti seguono e si iscrivono ai loro messaggi.
I messaggi di ActivityPub non sono limitati al solo HTTP. Questo gli permette di essere potenzialmente esteso in più direzioni P2P direzioni.
I messaggi ActivityPub sono oggetti avvolti in una "attività", che indica di cosa si tratta. C'è un'attività Vocabolario che definisce i tipi di attività, oggetti e attori comuni alle applicazioni del social web.
ActivityPub non ha opinioni su come i messaggi sono persistiti sul server finché ogni server segua i requisiti del protocollo dei messaggi. Le implementazioni dei server possono mettere in cache le richieste frequenti, come gli oggetti attore follower, le chiavi pubbliche di altri server, e le immagini e gli allegati dei post.
La moderazione è gestita principalmente dalle implementazioni del server. Gli amministratori del server possono bloccare individui o intere istanze. Bandire le istanze può portare all'isolamento di un'istanza del server ActivityPub se questa è bandita da molti altri, limitando la comunicazione tra i suoi utenti.
ActivityPub definisce un'attività di "blocco" per aiutare gli utenti a controllare la loro esperienza.
L'adozione di ActivityPub ha raggiunto una soglia in cui lo spam e le molestie sono diventati problemi continui che gli sviluppatori del protocollo attualmente cercano di affrontare. Tenere i messaggi indesiderati fuori dal Fediverse contiene una lista di soluzioni suggerite. OcapPub, una proposta di aggiornamento di ActivityPub basato sulle capacità degli oggetti, è una direzione perseguita da uno degli autori di ActivityPub.
I messaggi sono indirizzati ad un utente nel suo server domestico o pubblicati in una casella di posta pubblica. I normali DNS e IP sono usati per trovare il server indirizzato.
Se i messaggi sono limitati nella visibilità (solo i seguaci, messaggio diretto), saranno consegnati alla casella di posta di un utente, come https://example.com/users/alice. La "posta in uscita" è un URL dove le attività recenti di un attore possono essere recuperate da cui si possono recuperare le attività recenti di un attore.
I server possono anche accettare la consegna di messaggi indirizzati come "pubblici" ad una casella di posta condivisa disponibile a tutti sul server, ma non sono obbligati a farlo. Le implementazioni di social network con feed pubblici possono pubblicare messaggi nella casella di posta pubblica, come https://example.com/inbox.
I "Like" e i "Follow" possono essere usati dai server per determinare quali messaggi pubblici accettare/recuperare.
Non c'è una capacità di ricerca globale, poiché ogni server monitora un diverso insieme di messaggi.
Mastodon sta attualmente aggiungendo la crittografia E2E ad ActivityPub. In precedenza, i messaggi non erano criptati sul server.
Qualsiasi servizio che implementa il protocollo server-to-server ActivityPub può interoperare con l'ecosistema. A servizio come Twitter avrebbe bisogno di aggiungere WebFinger e rappresentazioni JSON-LD di utenti e tweet.
Il protocollo client-to-server definisce un modo standard per il software client dell'utente di connettersi ai server ActivityPub ai server ActivityPub. In pratica, è usato raramente. Nessuno dei principali servizi Fediverse lo implementa. La visione di come funzionerebbe se fosse ampiamente usato è che un'applicazione utente potrebbe mescolare e combinare diversi server come Mastodon, Pleroma, PixelFed, e qualsiasi nuovo servizio che lo implementa.
Bridgy Fed è un progetto per collegare i siti IndieWeb con le reti federate ActivityPub e OStatus.
Diaspora, un altro social network federato, ha scelto di non adottare ActivityPub.
L'ecosistema ActivityPub cresce aggiungendo più capacità di server alla rete. Questo studio sull'ecosistema Mastodon analizza l'emergere di punti di centralizzazione man mano che la rete si espande.
the-federation.info mantiene le statistiche del Fediverse OStatus/ActivityPub conosciuto.
Implementazioni e applicazioni
Rapporto di implementazione W3C
Lista di controllo per le applicazioni ActivityPub
- Mastodon (la più grande rete federata costruita su ActivityPub) ha 2699 nodi e 2.6M utenti al 5/2020.
- Pleroma è un altro social network federato. Secondo le statistiche di the-federation.info, Pleroma ha 620 nodi con 35K utenti al 5/2020.
- Pixelfed è una piattaforma di condivisione di immagini basata su ActivityPub.
- Friendica è una rete sociale decentralizzata con supporto per ActivityPub, così come i protocolli OStatus e Diaspora.
- PeerTube è una piattaforma video gratuita e decentralizzata.
- Plume è un'applicazione di blogging federato.
ActivityPub eredita da alcuni altri protocolli che non saranno trattati per intero, ma sono brevemente riassunti qui.
ActivityPub è basato su pump.io e ActivityStreams. Concettualmente, questi sono stati preceduti da OStatus.
Pump.io è un server di social networking con flussi di attività. OStatus è uno standard aperto per il microblogging microblogging e descrive come una suite di protocolli può essere usata insieme.
I protocolli e la comunità IndieWeb sono anche legati ad ActivityPub attraverso una visione condivisa di federazione sociale sviluppata nello stesso periodo. IndieWeb è stato ispirato dal Federated Social Web
Summit del 2010 e si è formato intorno all'idea di interconnettere siti web individuali piuttosto che federare piattaforme sociali. Un co-fondatore ha descritto la visione come "qualcuno dovrebbe essere in grado di prendere il proprio sito web ed essere in grado di utilizzare il proprio sito web per partecipare alla stessa rete sociale distribuita - federated social network".
Link
- Spec. W3C ActivityPub
- SocialHub, forum di discussione su ActivityPub
- Note di un implementatore di ActivityPub
- Leggere ActivityPub