Plugin ActivityPub

Esaminerò il supporto esplicito di Pixelfed dopo aver esaminato (di nuovo) Lemmy e Wordpress :+1:

Sebbene tutte le piattaforme ActivityPub dovrebbero, in teoria, essere interoperabili, richiede quasi sempre qualche aggiustamento per ottimizzare ogni integrazione. Soprattutto perchĂŠ utilizziamo gli argomenti e la maggior parte delle altre implementazioni sono solo flussi di post.

1 Mi Piace

Wordpress? Ha una sua soluzione da Automattic. Un po’ strano con tutte quelle cose sugli amici, però. O intendi quella cosa del profilo utente?

1 Mi Piace

Ottimo lavoro. Grazie!

Sto cercando di far funzionare correttamente questo, da quando ho pubblicato ad agosto e penso che il mio problema possa essere piĂš semplice di quanto pensassi inizialmente.

Potrei essere bloccato dal seguire l’attore sull’istanza Mastodon.

In quel periodo, ho reinstallato Discourse, il plugin, spostato il sito su un server diverso e poi oggi, ho cambiato il nome di dominio pensando che potesse essere quello.

Sono stato in grado di seguire da un account mastodon.social e da un account di un’istanza Sharkey, ed entrambi hanno funzionato bene.

Non credo che l’istanza sia bloccata sul server (di nuovo, ho cambiato provider di server e nomi di dominio), ma vorrei avere una seconda opinione.

[Discourse Activity Pub] GET request to https://mastodon.ie/users/padraig failed: Expected([200, 201, 202, 301, 302, 307, 308]) <=> Actual(401 Unauthorized)
[Discourse Activity Pub] Failed to process https://mastodon.ie/users/padraig: Could not resolve actor
[Discourse Activity Pub] Failed to process https://mastodon.ie/b35f6088-19b9-472d-a277-e0310fed585f: Could not create actor
[Discourse Activity Pub] DiscourseActivityPub::AP::Handlers::Warning

Se hai bisogno del backtrace e/o dell’ambiente, fammelo sapere :slight_smile:

mastodon.ie è consentito qui activity pub allowed request origins? E potrebbe essere necessario abilitare o disabilitare activity pub require signed requests.

Ho disabilitato questa opzione e non ci sono voci nelle seguenti opzioni (quindi chiunque dovrebbe essere in grado di seguire @general@gamersandgeeks.net, giusto?):

Ciao a tutti,

Ho diversi forum Discourse collegati utilizzando il plugin ActivityPub. Se installo Discourse AI su uno di questi forum, il bot AI può accedere e utilizzare contenuti da altre istanze federate per rispondere alle domande nella sua interfaccia di chat?

Grazie!

@Crakila Per favore, controlla i passaggi e la discussione in questo argomento e continua lĂŹ se questi suggerimenti non risolvono il tuo problema:

Se il contenuto è federato a un’istanza, un bot AI su quell’istanza può utilizzarlo. Tutto il contenuto “remoto” su un’istanza ha lo stesso stato del contenuto “locale” ai fini di altre funzionalità.

1 Mi Piace

Mi stavo solo chiedendo… ci sono delle domande dietro le quinte?

Grazie. Bel globo visibile :smiling_face_with_three_hearts:

2 Mi Piace

Cos’è questo :thinking:

`skip_email_validation=' per un'istanza di Categoria
Message (46 copies reported)

Job exception: undefined method `skip_email_validation=' for an instance of Category

Backtrace

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activemodel-7.2.2.1/lib/active_model/attribute_methods.rb:512:in `method_missing'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/attribute_methods.rb:491:in `method_missing'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/actor_handler.rb:150:in `update_user'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/actor_handler.rb:47:in `block in update_or_create_user'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:359:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:415:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/actor_handler.rb:45:in `update_or_create_user'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/actor_handler.rb:82:in `update_or_create_user'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:782:in `block (2 levels) in activate!'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:76:in `block in apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:74:in `all?'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:74:in `apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:873:in `block (2 levels) in activate!'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:76:in `block in apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:74:in `all?'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:74:in `apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:24:in `apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:64:in `perform_activity'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:38:in `block in perform_transactions'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:613:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:361:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:34:in `perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity/announce.rb:26:in `process'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:12:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread'

Questo è il mio account. Sembra che non abbia verificato la mia email nell’istanza o in qualche modo nella categoria, e ActivityPub non sa come gestire quella situazione?

Tutto sembra funzionare normalmente, però.

1 Mi Piace

C’è in programma di rendere anche gli utenti di Discourse degli attori?

Vedendo ActivityPub come un protocollo per lavorare apertamente, questo sembra un passo mancante per usare Discourse come un luogo seguibile per i propri pensieri.

Espandere Discourse per funzionare come un’istanza di razza pura? Ci sono pro e contro, se ora è anche tecnicamente possibile.

Grazie per la segnalazione. Non dovrebbe influire materialmente su nulla. VerrĂ  affrontato a breve.

1 Mi Piace

Gli utenti di Discourse sono già attori di ActivityPub. Semplicemente non puoi seguirli. Il plugin è costruito per consentire tale possibilità. La domanda è se sia saggio.

2 Mi Piace

Non mi piace. Cambia l’idea fondamentale dei forum verso una pura istanza di Mastodon, e per questo abbiamo già una scelta, Mastodon. C’è ancora una grande differenza tra seguire argomenti e seguire persone.

La condivisione di contenuti tramite ActivityPub è una cosa totalmente diversa.

Ucciderebbe almeno il mio forum all’istante. Anche ora le condivisioni di ActivityPub sono un grande no per alcuni miei utenti. E una situazione in cui alcuni utenti userebbero Mastodon completamente tramite Discourse, e allo stesso tempo altri no, creerebbe un gigantesco conflitto.

Alcuni potrebbero dire che è la vita di tutti i giorni nel mondo di Mastodon, perché anche se si partecipa a un thread, tutta la conversazione non è visibile, a meno che non si visiti l’originale tramite browser. Ma comunque, no.

3 Mi Piace

Sto pianificando di impostare una piattaforma di live streaming self-hosted e di utilizzare Discourse come software per il forum, con la live chat di Discourse integrata nello streaming live.

Ho scoperto di recente il software fediverse e ho pensato che Peertube sarebbe ottimo per caricare contenuti VOD, il che potrebbe aumentare la scopribilitĂ  della mia piattaforma poichĂŠ le persone possono vedere i video da Mastodon e poi scoprire il resto del mio sito da lĂŹ.

Potrei usare questo plugin per consentire alle persone di utilizzare il loro account AP per accedere alla mia istanza Discourse, in modo simile a come molti siti offrono l’accesso tramite Google/Facebook?

Potresti anche voler dare un’occhiata a questo plugin:

1 Mi Piace

Pensi che la domanda se sia saggio possa avere una risposta generale, considerando tutti i possibili casi d’uso di Discourse?

Nel mio caso, sto ancora cercando modi per utilizzare il fediverso in modo produttivo. Preferirei pensare pubblicamente usando un’istanza di Discourse come il mio giardino digitale. Attualmente, l’unico modo che vedo per avere un feed pubblico dei miei pensieri è avere un account su un’istanza Mastodon, seguire tutte le categorie del mio giardino privato e potenziare ogni messaggio che pubblico tramite questo account.

Mi piacerebbe sperimentare l’uso di Discourse come mia principale connessione al fediverso.

2 Mi Piace