Na Proposta de RFC: Fase 1 de Suporte ao ActivityPub, descrevi um exercício de ideação para avaliar o caso de negócios para ter suporte ao ActivityPub no Discourse, pensando além de um MVP, como se o Discourse tivesse sido construído desde o início com a federação em mente:
Portanto, darei início à ideação com algum brainstorming, sem levar em conta as praticidades técnicas dadas à base de código atual. Percebo que há muitos detalhes e casos extremos em tudo isso. Esta é uma visão de como o suporte nativo à federação poderia ser. Aqui vamos nós..
A Comunidade não tem fronteiras
(Foto de Pixabay, da Pexels)
Todos compartilhamos um único planeta
misturando-nos em estruturas sociais complexas. Por que uma comunidade do Discourse estaria restrita a um único fórum?
Sou administrador da Comunidade de Tecnologia Humana (HTC) e cobrimos uma ampla gama de tópicos relacionados à tecnologia, tendo (sub)categorias como „Liberdade > Privacidade“, „Alinhamento > Ética“, „Alinhamento > Padrões“. Talvez seja muito amplo, e existem muitos outros fóruns do Discourse especializados nessas categorias, que fazem um trabalho melhor nesse campo. Mas para pessoas interessadas em obter uma visão geral de todo o campo da tecnologia humana, o posicionamento amplo faz sentido.
Federando categorias
E se eu pudesse federar nossa subcategoria „Privacidade“ com, por exemplo, a subcategoria „Publicações de Blog“ do fórum PrivacyTools? Talvez apenas sincronizar tópicos em uma direção — já que a subcategoria de privacidade da HTC é mais ampla em escopo — onde tópicos criados no PrivacyTools aparecem no fórum da HTC, e nossos membros podem interagir com eles. As postagens dos tópicos no fórum da HTC são então transferidas de volta para o tópico no PrivacyTools e vice-versa. Os tópicos em ambos os fóruns são mantidos sincronizados. Talvez eu queira até mesmo sincronizar unilateralmente várias subcategorias do PrivacyTools com „Privacidade“ na HTC. E por que não sincronizar com diferentes comunidades relacionadas à privacidade de forma semelhante?
Outro exemplo. Tanto o Feneas quanto o SocialHub compartilham uma categoria de nível superior „ActivityPub“. Há sobreposição nessas categorias, duplicação, membros de uma comunidade sem conhecimento do que está acontecendo na outra. Esta é uma oportunidade onde „ActivityPub“ é candidato para sincronização bidirecional, onde cada fórum contém então as mesmas listas de tópicos.
Federando tags e tópicos individuais
O mesmo pode ser aplicado a tags, onde uma tag específica é configurada para ser federada. Isso pode ser, por exemplo, configurado de modo que qualquer tópico com a tag #especificação no SocialHub seja federado para a subcategoria „Alinhamento > Padrões“ na HTC.
Os tópicos também podem ser federados caso a caso, acionados por um comando na barra de ferramentas, onde você especifica o fórum de destino para federar e talvez também selecione a categoria remota sob a qual o tópico deve aparecer (ou seja, a lista de Categorias do fórum também é federada para navegação remota).
Menções de membros e visualizações de perfil
Quando um tópico é federado para outro fórum, qualquer menção dentro dele precisa ser adaptada para refletir onde o membro reside. Meu identificador @aschrijver na HTC pode aparecer como @aschrijver@humanetech no fórum do SocialHub após a sincronização.
Como também sou usuário no SocialHub, posso conectar as contas nas configurações do meu perfil e, após uma verificação, isso significa que, nos tópicos sincronizados, meu identificador de conta local pode ser exibido.
Ao clicar em um identificador remoto ou avatar de membro, o cartão de perfil do fórum remoto é exibido. Ao clicar novamente para ver o resumo do perfil, ele pode mostrar apenas as métricas de atividade no fórum local que resultaram da interação com tópicos sincronizados. Alternativamente, e mais interessante, mostraria resumos de todos os fóruns conhecidos que fazem parte da configuração de federação. Por exemplo, eu poderia descobrir que a resposta veio de um membro muito ativo e especialista no outro fórum.
Mensagens diretas e notificações
Mensagens diretas (DMs) seriam possíveis em todos os fóruns federados, não apenas localmente, ao marcar/mencionar o membro remoto na DM. Fora isso, não haveria diferença na forma como a comunicação por DM ocorre. Funciona da mesma forma que as DMs locais atuais.
De todas as funcionalidades de federação descritas acima surge a necessidade de também federar notificações. Se eu responder a uma postagem de um membro remoto, curtir sua postagem ou mencioná-lo em um tópico sincronizado, uma notificação de interface pode aparecer no fórum remoto para notificar o membro. As notificações por e-mail também são tratadas pelo fórum remoto. No entanto, se o membro tiver contas vinculadas em ambos os fóruns, as notificações podem vir do fórum local onde a interação ocorreu primeiro.
Login único (SSO)
Note que em todas as funcionalidades descritas até agora, não há necessidade de ter SSO. Um membro remoto não tem acesso privilegiado automático a outro fórum federado. Então, o que acontece se eles forem mencionados em um tópico sincronizado unilateralmente? Nesse caso, eles receberão uma notificação de interface e um e-mail vindo de sua própria instância de fórum e, ao clicar, serão direcionados para o outro fórum (talvez em uma nova aba do navegador), onde poderão apenas visualizar o tópico. Se quiserem responder, terão que se cadastrar primeiro e vincular as contas para poder responder.
Note que o SSO é algo complicado no Fediverse, que ainda não tem uma boa solução. Mas para a federação entre Discourse e Discourse, a funcionalidade de SSO pode ser muito mais fácil de implementar. Se houvesse integração de SSO, ao clicar na notificação, o tópico poderia ser aberto no contexto dentro do fórum atual (como uma „visão remota“), permitindo que o membro interaja com ele de forma transparente.
Gerenciamento e complexidade da federação
Todo esse caso de uso é descrito como se o Discourse tivesse sido construído desde o início com suporte à federação embutido. Se tudo isso for implementado, afetará quase todos os recursos do produto. Diferentemente do caso de uso que iniciou este tópico — para feeds personalizados semelhantes ao Facebook —, a federação aqui é cuidadosamente gerenciada pela equipe do fórum, não ao arbítrio de membros individuais.
Muita da configuração de federação é coisa apenas de administrador. Deve ser feita estrategicamente e com um bom plano, para manter a organização da comunidade e o conteúdo intuitivos e lógicos. A configuração de federação é construída gradualmente ao longo do tempo como parte do fluxo de trabalho de construção da comunidade, não algo que é adicionado casualmente.
Interoperabilidade
Claro, essa visão de suporte ao ActivityPub não precisa ser restrita ao Discourse. Qualquer projeto de software compatível poderia se tornar parte do tecido distribuído da comunidade. Por exemplo, o software de construção de comunidades de código aberto do forem e a plataforma de tomada de decisão colaborativa do loomio, ambos dos quais acabei de indicar na direção desta postagem. Mas o Discourse tem a oportunidade de assumir a liderança em tudo isso.
Integração com o Fediverse
Todo o suporte à federação até agora foi limitado ao domínio de negócios de fórum/comunidade, mas com a integração do ActivityPub, a interoperabilidade pode agora se expandir para abraçar o Fediverse mais amplo, permitindo numerosos casos de negócios emocionantes. Apenas listando alguns que surgem aleatoriamente comigo agora:
- Anunciar postagens de fóruns em todo o Fediverse com „toots“ nas plataformas de microblogging Mastodon / Pleroma.
- Imagens incorporadas são automaticamente carregadas no PixelFed e servidas a partir daí (ótimo para comunidades como a do Blender).
- A barra de ferramentas de data/hora permite configurar um evento completo do Mobilizon voltado para o Fediverse, com recursos completos de RSVP.
- A integração é habilitada em duas vias, onde Discussões do Mobilizon no evento são na verdade tópicos do Discourse.
- Criar tópicos no PeerTube com recursos especiais de vídeo, onde as postagens são o thread de comentários no PeerTube.
- Seu tópico publicado automaticamente se torna uma postagem de blog no Writefreely mais thread de comentários.
- Incorporar partes do seu fórum no Nextcloud como um aplicativo através de seu suporte ao ActivityPub.
- Integrar recursos de podcast via Funkwhale (veja o recente vídeo sobre suporte a podcasts).
- Obter informações de perfil do Flockingbird, rede social profissional em desenvolvimento (semelhante ao LinkedIn).
E olhe para o número crescente de aplicativos na Lista de Observação do ActivityPub e deixe sua imaginação guiar você ![]()
Consequências
Esqueça por um momento todos os obstáculos e dificuldades técnicas e considere o que ter isso significa para o Discourse como produto. Ou melhor, como o Discourse deixando de ser „apenas um produto": O Discourse tornou-se um tecido distribuído de comunidade.
A equipe dos fóruns não é mais apenas isso. Eles adotarão uma perspectiva muito mais ampla para a construção da comunidade. Tanto a comunidade quanto o conteúdo da comunidade existem em todo o tecido do Discourse. A equipe olhará ativamente para outras instâncias do Discourse, abordando suas equipes para forjar parcerias e criar designs de federação interessantes para cortar e dividir a organização da comunidade e o conteúdo para torná-los mais interessantes para a base de membros da comunidade.
Os próprios membros da comunidade também são muito melhor atendidos. Conteúdo mais interessante fluirá para o „portal" do fórum deles e o fórum será mais ativo do que se fosse apenas algo local. Os membros da comunidade poderão descobrir e interagir com membros de outras instâncias de fórum em todo o tecido. Na verdade, a fronteira da comunidade foi removida: A comunidade não tem fronteiras.

