Complemento ActivityPub

Para esto, sé la respuesta. No, no puedes. Ni siquiera podemos usar eso dentro de Mastodon, Pixelfed, etc. Y la respuesta real es que este plugin, o ActivityPub en general, no tiene nada que ver con los inicios de sesión.

Pero sería bueno. Pero por otro lado, la idea de ActivityPub es precisamente eliminar la necesidad de iniciar sesión en otros servicios.

1 me gusta

Esa es la belleza de un sistema donde no hay algoritmo :smirking_face:. Sí, eso es lo que tienes que hacer, pero solo funciona dentro de una instancia. Todavía necesitas seguidores.

La analogía ampliamente utilizada de cómo funcionan los correos electrónicos es cierta incluso aquí. Necesitas que alguien envíe correos electrónicos, de lo contrario, se consideraría spam.

Soy bastante activo en Mastodon, porque me despedí de Meta. De hecho, tengo cuentas en tres instancias diferentes. Mi cuenta principal sigue mis categorías y otras dos siguen mi cuenta principal de instancia. Con eso maximizo la visibilidad, y el resto es misericordia de otros usuarios.

Por cierto, he notado que la incapacidad de Mastodon para procesar markdown y html molesta un poco a otros.

¿Es demasiado pronto para pedir que se incluya en Crowdin para las traducciones?

Buena pregunta.

Tendremos que evaluar si este plugin está bien experimentalofficial. Si es así, podemos añadirlo a Crowdin.

Por curiosidad, ¿en qué idioma(s) estás pensando?

5 Me gusta

Checo. La razón es que mientras intento terminar una localización completa, intento revisar diferentes foros checos y ver cómo funcionan las traducciones (a veces ves cosas diferentes debido a la combinación de datos que no ves en tu propio foro: diferentes plurales usados, diferentes complementos, etc.).

Y me encontré con un foro que tiene ActivityPub visible en la configuración del usuario. Y quiero que la configuración del usuario esté completamente localizada :slight_smile:

4 Me gusta

La traducción manual siempre es una opción. Y ahora mismo es la única opción. Me llevó algo así como 10 minutos como máximo. Pero claro, si viene automáticamente es más fácil para los administradores.

Sí, creo que podemos añadir esto a Crowdin, lo haré.

6 Me gusta

Los temas van al mundo exterior sin etiquetas. ¿Es posible añadir etiquetas de Discourse de alguna manera?

Sería necesario añadir las etiquetas usadas a una publicación, pero solo para la dirección de Mastodon, y no sé si eso es siquiera posible, o realmente necesario. Bueno, es necesario porque las etiquetas juegan un papel tan importante en Mastodon (o en todas partes del mundo federado, supongo).

Claro, podría simplemente añadir #etiqueta, pero eso es un poco torpe porque Discourse tiene su propia forma elegante de usar las etiquetas.

2 Me gusta

https://caneandable.social/@WeirdWriter/113933429408828411

@Angus Tengo curiosidad si hay una forma de hacer esto también. ¿Los actores que provienen del plugin Discourse tienen un identificador común (como metadatos de tipo source: Discourse) que se pueda buscar en el fediverso? ¿O tal vez hay identificadores para las publicaciones?

1 me gusta

Sí, sería posible hacerlo. Como insinúas, planteará algunas preguntas, ya que las etiquetas cumplen funciones ligeramente diferentes en Discourse y otras plataformas. Requerirá una cuidadosa consideración.

Esto está relacionado con la pregunta de las etiquetas, pero va más allá. Hay varias capas en esto. Podríamos implementar un enfoque específico de Mastodon para mejorar el descubrimiento. También podríamos implementar un enfoque de ActivityPub “normalizado” para el descubrimiento. En este último frente, véase

Pero sí, podemos discutir más a fondo cuáles son los objetivos del producto a corto, mediano y largo plazo y puedo desarrollar una estrategia de implementación teniendo en cuenta esas diversas capas. Ya he planteado esto a las personas relevantes de ActivityPub:

3 Me gusta

Me gustaría conocer sus ideas sobre cómo los actores del discurso podrían ser abordables desde el fediverso y de qué manera.

Esta pregunta surgió mientras pensaba en cómo conectar el discurso, como jardín digital, con el fediverso.

Si leo algo en algún lugar del fediverso, me gustaría poder reenviarlo a TAG@my.garden o CATEGORY@my.garden.

¿Qué se debería hacer con este contenido reenviado, o, a qué lugares dentro del discurso deberían llegar estos mensajes?

Si el reenvío debe ser posible para cualquiera, tendría que tener lugar algún proceso de revisión. Si existiera la posibilidad de vincular cuentas extranjeras del fediverso a las propias, el contenido reenviado podría llegar como un borrador, listo para ser incorporado al jardín.

Actualmente, los actores a los que un actor de etiqueta o categoría sigue pueden publicar nuevos temas en esa etiqueta o categoría.

Si tienes una categoría en tu Discourse llamada “fediverse”, y fediverse@yourforum.com sigue una cuenta en Mastodon, digamos fediverse@mastodon.com, entonces cada vez que fediverse@mastodon.com crea un nuevo toot, que no sea una respuesta a otro toot, ese toot se convertirá en un nuevo tema en tu categoría “fediverse”, y cualquier respuesta a ese toot se convertirá en respuestas en ese tema.

Aplicando eso a tu caso, si el “yo” en esa frase es una cuenta de fediverso que TAG@my.garden o CATEGORY@my.garden está siguiendo, entonces cuando crees un nuevo toot, o impulsas un toot (también conocido como “anunciarlo”), se convertirá en un nuevo tema con TAG o en CATEGORY.

Podríamos agregar la capacidad de enviar contenido enviado a un actor de etiqueta o categoría por un actor externo no seguido por la etiqueta o categoría a la cola de revisión. Eso sería una implementación relativamente sencilla, pero el filtrado sería un problema importante. Revisar todo el contenido entrante no sería factible en bastantes casos.

Por ejemplo, socialhub.activitypub.rocks tiene doce actores de Discourse ActivityPub (etiquetas y categorías). Recibe (literalmente) cientos de POST entrantes cada minuto. Si implementaras un sistema de revisión como ese allí, volarías inmediatamente la cola de revisión, haciéndola inutilizable.

Esto tiene cierto potencial como idea, en parte porque ya puedes hacerlo, echa un vistazo a “ActivityPub” en tu perfil y verás que puedes vincular actores en cualquier Discourse o Mastodon externo con tu cuenta de usuario de Discourse. Por lo tanto, una forma de filtrar la entrada de actores no seguidos podría ser contenido de actores vinculados a usuarios con suficiente confianza en el foro.

3 Me gusta

Y listo: https://discourse.crowdin.com/activity-pub, los traductores ahora pueden contribuir con traducciones para el plugin ActivityPub.

4 Me gusta

¿Hay algún límite en cuanto a los actores que puede seguir una categoría? Podría seguir los míos, pero no encuentro algunos extraños.

editar

Algunas de mis categorías pueden encontrarse, otras cuentas no. ¿Puede venir de alguna configuración de una instancia :thinking:?

Una categoría sigue a una cuenta de Mastodon. Cuando una publicación (escrita o impulsada por un actor seguido) tiene una imagen, esta nunca se incluye. ¿Es algún problema técnico de cómo Mastodon envía datos, cómo funciona ActivityPub o cómo Discourse maneja dicho contenido?

Algo está mal. No hay nada que traducir.

1 me gusta

Creo que todavía puede haber algunos problemas de integración con la Recuperación Autorizada de Mastodon que aún necesitamos resolver. Eso puede afectar la detectabilidad de las cuentas en algunas instancias de Mastodon. Si pudieras dar ejemplos, ayudaría.

Pronto buscaremos mejorar el soporte de imágenes.

1 me gusta

mastodon.social falla siempre — y eso significa que probé cuentas de allí como media docena de veces. Por eso me preguntaba si surge de la configuración de una instancia de alguna manera.

Pero una cuenta es @ScienceScholar@mastodon.social. Otro ejemplo podría ser @GetCarter@mastodonapp.uk.

Solo otro sueño para fases posteriores :face_with_peeking_eye:

Si una categoría pudiera seguir las (etiquetas de) hash de Mastodon… sería un verdadero cambio de juego. Sí, no tengo ni idea de si eso es siquiera técnicamente posible porque una instancia de Mastodon funciona de manera muy diferente a Discourse, pero sería una gran característica.

1 me gusta

¿Qué es esto:

[detalles= discourseactivitypub::AP::Handlers::Warning]
Mensaje (3765 copias reportadas)

[Discourse Activity Pub] DiscourseActivityPub::AP::Handlers::Warning

Traza de la pila

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:en bloque en advertir' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:en bloque en dispatcher’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:en cada' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:en dispatch’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:en advertir' /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:26:en registro’
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:63:en advertir' /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:42:en rescate en bloque en perform_transactions’
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:35:en bloque en 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:en bloque en 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:en 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:en 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:en transaction' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:234:en bloque en 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:en con conexión con' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:en con conexión con’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:233:en transacción' /var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:34:en perform_transactions’
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:26:en procesar' /var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:12:en ejecutar’
/var/www/discourse/app/jobs/base.rb:316:en bloque (2 niveles) en realizar' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:en con conexión’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:en con conexión' /var/www/discourse/app/jobs/base.rb:303:en bloque en realizar’
/var/www/discourse/app/jobs/base.rb:299:en cada' /var/www/discourse/app/jobs/base.rb:299:en realizar’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:202:en ejecutar_trabajo' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:170:en bloque (2 niveles) en procesar’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:en bloque en invocar' /var/www/discourse/lib/sidekiq/pausable.rb:132:en llamada’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:en bloque en invocar' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:en invocar’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:169:en bloque en procesar' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:136:en bloque (6 niveles) en despacho’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:en local' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:135:en bloque (5 niveles) en despacho’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq.rb:44:en bloque en'<module:Sidekiq> /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:131:en bloque (4 niveles) en dispatch’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:263:en estadísticas' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:126:en bloque (3 niveles) en dispatch’
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/s…