Federation support for Discourse

Un aggiornamento. Pavilion e CDCK (Discourse.org) stanno discutendo la creazione di un plugin ActivityPub per Discourse. Dopo alcune discussioni, siamo giunti alla specifica sottostante. Qualsiasi commento o suggerimento è benvenuto prima di finalizzarla. Si noti che

  • Il supporto per i contenuti in entrata (ad es. post su Mastodon, ecc. importati in Discourse) è intenzionalmente escluso. Sarà possibile aggiungerlo in una versione successiva.

  • Il supporto per seguire gli utenti (a differenza delle categorie) è anch’esso intenzionalmente escluso. Sarebbe anche possibile aggiungerlo in una versione successiva.

  • Parti sostanziali della specifica seguono l’approccio adottato da Lemmy.

  • Pavilion costruirà il plugin MVP (ci lavorerò io) e CDCK lo gestirà e ospiterà (ovvero, sarà un plugin CDCK, non un plugin Pavilion).

Panoramica

Un plugin ActivityPub (AP) per Discourse.
L’obiettivo del plugin è un’implementazione MVP delle specifiche ActivityPub, ActivityVocab e ActivityStreams in Discourse con un’integrazione dimostrata della funzionalità MVP per una piattaforma conforme ad AP, ovvero Mastodon. Per quanto possibile, l’implementazione sarà costruita per supportare ulteriormente i protocolli e qualsiasi estensione.

Questa specifica riguarda l’abilitazione del supporto AP su base per categoria, dove solo il primo post di ogni topic in una categoria abilitata per AP viene federato (“solo primo post”).

Utenti

L’utilizzo del plugin sarà documentato in modo completo su meta in un topic del plugin.

Utente Normale

  1. Si iscrive (o “segue”) una categoria Discourse abilitata alla federazione (FDC) su Mastodon (o qualsiasi altro servizio fediverso) utilizzando l’handle della categoria, ad es. @announcements@meta.discourse.org.

  2. Vede un estratto del primo post di tutti i topic FDC (pubblicati dopo l’iscrizione) nel proprio feed Mastodon, ognuno con un link al topic associato, ad es. “Discuti sul nostro forum”.

  3. Qualsiasi azione relativa al post su Mastodon non appare in Discourse.

  4. Qualsiasi azione relativa al post in Discourse non appare su Mastodon.

  5. Gli estratti dei post federati possono essere controllati dall’autore del post utilizzando markup simile a quello utilizzato per controllare gli estratti dei topic, ad es. <div>{text}</div>

Amministratore

  1. Abilita la federazione su base per categoria utilizzando un’impostazione della categoria. La federazione può essere abilitata solo in categorie visibili a “tutti” su istanze pubbliche.

  2. Imposta il nome utente federato della categoria tramite l’interfaccia utente delle impostazioni della categoria (non può essere modificato).

  3. Imposta elenchi di domini consentiti e negati tramite le impostazioni del sito da cui l’attività viene automaticamente accettata o rifiutata.

  4. Imposta un “blocco” di nomi utente federati da includere in un Oggetto/i di blocco nella casella di posta in uscita del server.

  5. Imposta la lunghezza massima dei caratteri di una nota federata utilizzando un’impostazione del sito, ad es. activitypub_note_excerpt_maxlength.

  6. Imposta il testo associato al link incluso nel primo post di un topic Discourse federato in “Personalizza > Testo”.

  7. Imposta se il link di ritorno (e il testo) al forum è incluso nei post federati su base per categoria.

  8. Aggiunge una coppia di chiavi tramite le impostazioni del sito per firmare i contenuti federati.

Tecnico

  1. Il plugin includerà test completi (unitari / di integrazione e test js).

  2. La categoria è un Attore ActivityPub automatizzato all’interno di Discourse (come un Gruppo ActorType). Il preferredUsername federato viene impostato dall’amministratore quando abilita la federazione e memorizzato in un campo personalizzato della categoria. Il nome federato (noto anche come nome visualizzato) è il full_name della categoria.

  3. Gli utenti sono Attori nel contenuto federato dall’Attore della categoria. Il preferredUsername federato è il nome utente Discourse dell’utente al momento della federazione. Il preferredUsername di un utente è memorizzato in un campo personalizzato dell’utente nel caso in cui l’utente cambi il proprio nome utente Discourse. Il nome federato (noto anche come nome visualizzato) è il nome Discourse dell’utente.

  4. In generale, gli oggetti ActivityPub saranno associati ai loro oggetti Discourse equivalenti utilizzando campi personalizzati ove appropriato (ad es. ID oggetto o attore) e nuove tabelle ove appropriato (ad es. inbox e outbox).

  5. L’attività principale di ActivityPub da implementare è Follow e le attività e i modelli associati necessari per implementarla, ovvero inbox, outbox e Azioni e Collezioni associate richieste.

  6. I post di Discourse verrebbero federati come Note di ActivityStream, con il contenuto come HTML.

  7. L’autenticazione verrà gestita utilizzando firme HTTP, vedere qui e qui. Tutte le altre Considerazioni sulla sicurezza nella specifica ActivityPub saranno affrontate come appropriato.

  8. Gli endpoint di federazione saranno protetti come appropriato per la specifica, ovvero assicurarsi che redirect_to_login_if_required venga utilizzato nei controller, aggiungere guardian per il permesso che la categoria sia visibile a tutti.

34 Mi Piace