Plugin ActivityPub

Beh, un utente di Mastodon lo vedrà nel contesto di una timeline, e le timeline sono generalmente limitate. Su Mastodon, per impostazione predefinita, una timeline totale non supera i 400 post. Se stai guardando l’originale, stai comunque guardando in Discourse. Quindi, sebbene sia vero in teoria, non credo che causi confusione nella pratica. Devi già essere un follower per vedere il contenuto; seguire un link all’originale ti porta in Discourse dove la confusione viene risolta.

Non è perfetto, ma forse un’opzione “meno peggio”?

Suppongo che, in alternativa, potresti federare una modifica che annota il post come superato da un trasferimento di proprietà, un po’ come aggiungere il link “discuti questo sul nostro forum”?

Certo, non sto sostenendo che non sia una differenza, solo dicendo che sembra una differenza accettabile, rispetto al blocco di una funzionalità utile e utilizzata di Discourse.

Eliminare l’originale renderà orfani i thread nel contesto di altre piattaforme a cui stai federando, poiché non puoi cambiare l’attore associato a un’attività in una modifica (per quanto ne so).

Un’alternativa potrebbe essere quella di smettere di federare le modifiche del tutto se il post in Discourse ha un autore diverso da quando è stato federato per la prima volta. Forse con un avviso? “Cambiare proprietario disabiliterà la federazione per questo post, vuoi davvero procedere?”

Sì. Questo è ciò che appare in Discourse a un utente normale, che potrebbe non sapere che può fare clic sull’icona della matita e rivedere le modifiche, o non avere i permessi. Questi sono radicati nell’uso normale di Discourse, come lo vedo io:

  • Rendere un post un wiki significa che accetti che le modifiche altrui appaiano nell’uso normale sotto il tuo nome.
  • Anche se non è un wiki, gli utenti sufficientemente privilegiati possono modificare il tuo post in Discourse, a seconda della configurazione del sito.

Dal mio punto di vista, questo è il più vicino possibile all’equivalente, date le differenze nel modello sottostante.

Per come la vedo io, il “clicca per vedere il post sul sito originale” mostra già contenuti diversi tra implementazioni che sono fediverse-first, anche ignorando questo plugin. Diversi commenti visibili, markup diverso, gestione diversa degli articoli. Quindi alcune differenze visibili attraverso questo plugin non mi sorprendono; penso che sia inevitabile.

(Grazie ancora per la tua attenta considerazione di queste idee. Riconosco che questi sono casi limite difficili, sono grato per il lavoro, non presumo che le mie idee siano le migliori e non intendo creare alcun senso di obbligo per questa fase o qualsiasi fase di lavoro su questo, né rispondere a qualcosa in particolare che sto scrivendo.)

1 Mi Piace

Come per il cambio di categoria, penso che dipenda davvero dallo scenario. Considera ad esempio

  1. Post 1 creato nella Categoria 1 dall’Utente 1 (Attore 1)
  2. Autore del Post 1 modificato dall’Utente 3 (un amministratore) in Utente 2 (Attore 2) 2 minuti dopo
  3. La Categoria 1 è seguita da 400 Attori su 20 domini e 5 diverse piattaforme software, ognuna con implementazioni leggermente diverse di timeline e scoperta di contenuti.
  4. Entro 2 minuti dalla creazione del Post 1 ci sono 2 Note con contenuto identico e Attori diversi POSTATE a quei 400 Follower.

Penso che ciò causerà confusione per un discreto sottoinsieme di follower, per non parlare del fatto che l’Utente 2 potrebbe non rendersi nemmeno conto che il suo nome è ora associato a questo contenuto duplicato che non ha scritto su 20 domini diversi. Potrebbe essere d’accordo con gli amministratori che fanno ciò su una singola istanza, è in qualche modo implicitamente acconsentito pubblicando su quell’istanza, tuttavia penso che dovremmo essere molto cauti nell’estendere quel consenso implicito all’intero fediverso, specialmente nelle circostanze imperfette di duplicazione del contenuto. Cambiare i proprietari dei post è una potente funzione amministrativa, specifica di Discourse, e implicitamente legata al “contratto sociale” di una singola istanza.

Penso che il caso dei wiki sia più forte, tuttavia osserverei ancora ciò a cui hai già alluso. I wiki sono un concetto radicato nell’uso normale di Discourse. Associare le modifiche di chiunque (non solo dello staff) all’autore originale è un concetto di Discourse, senza un analogo in ActivityPub. Dovremmo essere cauti nell’estendere quel concetto utilizzando i metodi standard di ActivityPub all’intero fediverso. Quelle attività di Aggiornamento verranno trattate come qualsiasi altra attività di Aggiornamento su molte istanze e piattaforme software diverse, decontestualizzate dal loro contesto wiki originale. Inoltre, come hai anche alluso, c’è già un potenziale problema in questo senso con la capacità dello staff e degli utenti altamente fidati di modificare i post altrui. Penso che quella domanda più limitata necessiti di maggiore considerazione prima di arrivare alla questione dei wiki.

Non sto cercando di impostare una scelta binaria tra Discourse e ActivityPub per queste funzionalità. Quello che sto dicendo è che non dovremmo semplicemente tentare di mappare funzionalità sensibili di Discourse sul Fediverso senza pensare attentamente alle conseguenze. L’impostazione predefinita dovrebbe essere che queste funzionalità più sensibili siano disabilitate sui post di ActivityPub finché non avremo un po’ più di fiducia sul fatto che non finiremo per danneggiare o sorprendere un discreto sottoinsieme di utenti o casi d’uso.

Personalmente, non sento che siamo ancora arrivati a quel punto con nessuno dei due, anche se il mio istinto è che il caso dei wiki abbia più potenziale in questa fase, anche se non vedo ancora una buona soluzione.

8 Mi Piace

Queste due voci sono state completate, ho appena unito la PR di Angus per la verifica dell’identità tramite OAuth. Salvo correzioni di bug e miglioramenti delle prestazioni, questa è la fase attuale delle funzionalità aggiunte al plugin.

Allo stato attuale, il plugin è piuttosto ricco di funzionalità. Per riassumere rapidamente le funzionalità principali, il plugin supporta:

  • Pubblicazione di post solo per follower in ActivityPub (l’impostazione predefinita è Pubblico)
  • Pubblicazione del primo post o dell’intero topic (l’impostazione predefinita è il primo post)
  • Sincronizzazione bidirezionale quando si utilizza la pubblicazione dell’intero topic, ovvero tutti i post creati da Discourse in un topic verranno pubblicati in ActivityPub e viceversa, le risposte in ActivityPub verranno pubblicate su Discourse
  • Opzione per pubblicare post come Note (per servizi di contenuti più brevi come Mastodon) o Articolo (più appropriato per servizi di contenuti lunghi)
  • verifica dell’identità

Successivamente lavoreremo sulla messa a punto delle funzionalità attuali e sul miglioramento dell’usabilità. Il feedback è ancora benvenuto, ovviamente. Sono particolarmente interessato a modi per spiegare come tutto ciò funziona agli utenti normali, non è un’impresa facile.

Sono sulla stessa lunghezza d’onda di @angus, il nostro obiettivo è fare ciò che è pratico e realizzabile con un ragionevole sforzo. A tal fine, siamo disposti ad accettare alcune funzionalità ridotte in Discourse in questo momento. Questa è la nostra migliore possibilità per scoprire se specifiche limitazioni sono importanti da affrontare o meno (ad esempio, gli utenti del plugin incontreranno spesso limitazioni wiki-ActivityPub?).

6 Mi Piace

Ho capito bene, allora, che siamo al punto in cui ha senso articolare le restrizioni?

Ciao :slight_smile:

Prima di tutto, grazie per aver sviluppato tutto questo.

Poi, sono molto interessato a collegare diversi servizi ActivityPub tra loro, e per quanto ho letto, si tratta principalmente di inviare messaggi avanti e indietro da Discourse a Mastodon.

Sono consapevole che il protocollo è agnostico rispetto al servizio, ma esiste una qualche documentazione per, diciamo, collegare diverse istanze di Discourse, o integrare Nextcloud, o Peer Tube, ecc.?

1 Mi Piace

Abbiamo disabilitato le modifiche all’autore dei post e le wiki negli argomenti ActivityPub per ora per le ragioni che ho già menzionato (le loro supposizioni non funzionano con ActivityPub out-of-the-box). Queste sono le uniche due funzionalità che sono state temporaneamente disabilitate negli argomenti ActivityPub in questo modo. Qualsiasi altra funzionalità ridotta dovrebbe essere segnalata come un problema.

Questo è un plugin ActivityPub che segue da vicino la specifica ActivityPub, quindi è progettato per funzionare con qualsiasi servizio che segua tale specifica, che include tutti quelli che hai menzionato (e altri). Mastodon è la prima piattaforma ActivityPub con cui ci siamo concentrati sull’integrazione perché, in pratica, devi garantire la compatibilità con un servizio alla volta ed è la più grande piattaforma ActivityPub.

4 Mi Piace

Provato due volte su https://meta.discourse.org/u/rokejulianlockhart/preferences/activity-pub

```json { "errors": ["Non sei autorizzato a visualizzare la risorsa richiesta."], "error_type": "invalid_access" } ```

Cosa devo fare?

2 Mi Piace

Ehi @rokejulianlockhart, grazie per il feedback. Come stai eseguendo il flusso di autorizzazione? Stai cliccando su “Autorizza” nello screenshot qui sopra in un browser (anche quale browser?) O stai copiando/incollando gli URL in qualche modo? Te lo chiedo perché li hai lì nel tuo post. Ecco un video del flusso standard che funziona per me su meta.discourse.org

Stai facendo qualcosa di diverso da quello?

2 Mi Piace

@angus,

  1. rokejulianlockhart@mastodon.social

  2. Stai per accedere al sito “mastodon.social” con il nome utente “rokejulianlockhart”, ma il sito web non richiede l’autenticazione. Questo potrebbe essere un tentativo di truffa.

    “mastodon.social” è il sito che desideri visitare?

    Qui clicco

  3. Log in - Mastodon

    Autorizzazione richiesta
    meta.discourse.org desidera l’autorizzazione per accedere al tuo account. È un’applicazione di terze parti. Se non ti fidi, non dovresti autorizzarla.
    Rivedi le autorizzazioni

    Account
    Accesso in sola lettura

    Qui clicco

    Autorizza

  4. Quindi appare il precedente

    “mastodon.social” è il sito che desideri visitare?

    prompt, e faccio lo stesso.

  5. https://meta.discourse.org/ap/auth/oauth/redirect?code=s2H3Og_3oLTb8cAsYN9Kmgeh8xPySeOaWSp2bdZ2sEE

    1. .JSON

      {"errors":["Non sei autorizzato a visualizzare la risorsa richiesta."],"error_type":"invalid_access"}
      
    2. Headers

      X-Firefox-Spdy: h2
      content-encoding: gzip
      content-type: application/json; charset=utf-8
      date: Mon, 25 Sep 2023 11:39:30 GMT
      referrer-policy: strict-origin-when-cross-origin
      server: nginx
      vary: Accept-Encoding
      x-content-type-options: nosniff
      x-discourse-route: o_auth/redirect
      x-discourse-username: rokejulianlockhart
      x-download-options: noopen
      x-frame-options: SAMEORIGIN
      x-permitted-cross-domain-policies: none
      x-request-id: 01276bd6-77ea-42ae-8f60-6fa365a70e1f
      x-xss-protection: 0
      
      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
      Accept-Encoding: gzip, deflate, br
      Accept-Language: en-GB,en;q=0.7,en-US;q=0.3
      Connection: keep-alive
      Host: meta.discourse.org
      Sec-Fetch-Dest: document
      Sec-Fetch-Mode: navigate
      Sec-Fetch-Site: cross-site
      Sec-Fetch-User: ?1
      Upgrade-Insecure-Requests: 1
      User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0
      

Ciao, dopo l’ultimo aggiornamento, sembra che i profili utente (/u/user) siano danneggiati. Il nome utente e l’immagine del profilo vengono visualizzati (oltre all’elenco delle offese dell’utente in alto).

Abbiamo esaminato il nostro elenco di plugin e disabilitato ciascuno uno per uno finché il problema non è scomparso. Ha funzionato anche con la modalità sicura abilitata. Ecco alcuni degli errori client che riceveremmo:

Cannot read properties of null (reading 'getBoundingClientRect')
at Object.offset (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:5104:37)
at e.scrolled (https://amcforum.wiki/assets/discourse-9756bc4a118ac228ac6ac3f2b29c7d4a7d60a9f16ece25de4a772f0055c6eb94.js:2347:106)
at p.invoke (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:4339:182)
at p.flush (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:4331:141)
at h.flush (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:4346:207)
at $._end (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:4410:9)
at $.end (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:4363:240)
at $._runExpiredTimers (https://amcforum.wiki/assets/vendor-db2360c46fde6d9039e575c45f307a3475f72fc389fad00414eaf0f83a1621a6.js:4417:192)

Ecco come appare con il plugin abilitato (per il tuo account)

Per un altro utente (in questo caso, 9pfs)

Ecco un altro bug divertente causato dal plugin:

Attualmente stiamo eseguendo la versione 3.2.0.beta2-dev da questo commit e stiamo eseguendo la versione 0.1.0 del plugin da questo commit.

1 Mi Piace

@rokejulianlockhart Hai i cookie disabilitati o qualche estensione per la privacy in esecuzione? Il flusso di autorizzazione si basa attualmente su un cookie di sessione sicuro per funzionare.

@aboutDavid Grazie per la segnalazione. Sebbene sia possibile, sembra improbabile che ciò che stai condividendo sia causato da un problema in questo plugin. Potresti condividere un link al tuo sito? Hai anche temi o componenti tematici abilitati?

2 Mi Piace

Dalla risoluzione dei problemi in modalità provvisoria, sappiamo quanto segue con certezza:

  1. È un plugin non ufficiale
  2. Non è un tema o un componente del tema.

Per quanto ne so, abbiamo due plugin non ufficiali:

  1. Animate avatars (confermato manualmente non essere il colpevole)
  2. ActivityPub

Per quanto riguarda un link al sito:

3 Mi Piace

L’interfaccia utente di aggiornamento mostra un segno di spunta accanto a tutti i plugin tranne quelli due (indicando che sono plugin ufficiali).

2 Mi Piace

Il problema sul tuo sito è probabilmente causato da qualcosa che utilizza l’outlet del plugin user-profile-avatar-flair. Questo plugin non utilizza tale outlet. Il plugin degli avatar animati, invece, lo fa.

Come hai confermato questo?

1 Mi Piace

@aboutDavid ha controllato e si è assicurato che il plugin non avesse JS lato client. Il problema è in parte lato server?

1 Mi Piace

No, il JavaScript lato client non significa necessariamente che non ci siano problemi lato client. In questo caso, il problema sembra derivare dal modo in cui viene utilizzato un plugin outlet, possibilmente in un template. Potresti provare a rimuovere il plugin degli avatar animati e comunicarmi il risultato?

(A parte questo, il plugin degli avatar animati ha JavaScript lato client. Vedi ad esempio).

1 Mi Piace

Sono appena andato a modificare una categoria qui su Meta (per cambiare alcune autorizzazioni di accesso ai gruppi). Non ho modificato alcuna impostazione relativa ad activitypub, ma ci siamo ritrovati con queste tre voci nel log dello staff:

Immagino che tecnicamente siano passati da nil al loro valore predefinito, quindi non c’è stato alcun cambiamento effettivo nel comportamento? Tuttavia, sarebbe bene evitare questo tipo di logging per evitare confusione.

2 Mi Piace

Grazie per il rapporto David, ci darò un’occhiata presto.

1 Mi Piace

Ops, oggi sono un po’ stupido, mi scuso

modifica: sì, sono molto probabilmente avatar animati, scusa per averti fatto perdere tempo lol

3 Mi Piace

@angus, non che io sappia.

e mi sono assicurato di aver disabilitato uBlock Origin, anche se non uso le liste per la privacy.


Tuttavia, oggi ho riscontrato un problema diverso durante il test.

Log in - Mastodon

L’autenticazione del client non è riuscita a causa di un client sconosciuto, nessuna autenticazione del client inclusa o metodo di autenticazione non supportato.

Google Search.