Guia do desenvolvedor para ActivityPub e Fediverso

Como você pode integrar seu próprio software com o ActivityPub? O The News Stack conversou com Evan Prodromou, que escreveu um livro sobre o desenvolvimento no Fediverso.

Se você está atento às novidades nas redes sociais, não deve ter deixado de notar o recente aumento do uso do ActivityPub, um protocolo recomendado pelo W3C que permite redes sociais descentralizadas entre servidores federados, bem parecido como acontece co o email até hoje.

O que antes era um protocolo de nicho e um padrão aberto para construção de aplicativos sociais interoperáveis ganhou relevância real após a compra e subsequente transformação do Twitter por Elon Musk.

O Mastodon ainda é a implementação mais popular do ActivityPub, mas à medida que os benefícios das redes sociais descentralizadas se tornam cada vez mais evidentes, mais plataformas estão se integrando ao ‘Fediverso’.

A primeira etapa para planejar uma integração com o ActivityPub é descobrir como diferentes aspectos do seu software são mapeados para o formato Activity Streams. – Evan Prodromou, coautor das especificações do ActivityPub.

Isso inclui WordPress.com, Ghost, Flipboard e o Threads da Meta, que está desafiando o X/Twitter.

Mas como você começa a integrar seu próprio software com o ActivityPub? Prodromou escreveu um novo livro sobre o tema e conversamos com ele para explorar os aspectos práticos da conexão com o fediverso.

Compreendendo os Fluxos de Atividades

A especificação W3C Activity Streams está no centro de como o ActivityPub funciona. Este formato sustenta a forma como o protocolo lida com o conteúdo social.

Embora o ActivityPub seja mais conhecido por textos curtos em plataformas como Mastodon e Threads, ele é capaz de suportar uma gama muito maior de tipos de conteúdo. Estes incluem:

  • Artigos de texto longo (por exemplo, WordPress.com, Flipboard, Ghost)
  • Imagens (por exemplo, PixelFed)
  • Vídeo (por exemplo, PeerTube)
  • Áudio (por exemplo, Funkwhale)
  • Fóruns (por exemplo, Lemmy)

Além do conteúdo, o Activity Streams também lida com “atores” na rede. Estes são entidades que podem realizar ações, como pessoas, bots ou marcas.

Mas esses objetos não são nada sem atividades sociais que os conectem.

“Atividades são todas as ações que realizamos em uma rede social, e essas têm representação no formato Activity Streams. Por exemplo, gostar de algo gera uma atividade de ‘curtir’, e seguir alguém é uma atividade de ‘seguir’,” diz Prodromou.

“Temos atividades para o estilo de vida CRUD completo – Criar, Ler, Atualizar e Excluir – bem como atividades para adicionar coisas a uma coleção, removê-las de uma coleção, informações geossociais, gerenciamento de eventos, mercados… temos muitas atividades diferentes.”

Mapeando Seu Software para Fluxos de Atividades

Prodromou explica que a primeira etapa para planejar uma integração do ActivityPub é descobrir como os diferentes aspectos do seu software são mapeados para o formato Activity Streams.

Se você está criando um software de fórum, talvez as postagens do fórum possam ser mapeadas para o tipo de conteúdo Artigo em Fluxos de Atividades. Talvez os comentários de suas postagens possam ser Notas em Fluxos de Atividades (o tipo de conteúdo usado para textos curtos).

“Activity Streams é um vocabulário extensível.”

Embora este exercício de mapeamento seja geralmente simples, Prodromou afirma que pode haver desafios.

“Às vezes não há um mapeamento fácil. Portanto, se você tem, por exemplo, um serviço de compartilhamento de modelos para impressoras 3D, não temos isso integrado no ActivityPub. Não faz parte do padrão básico. No entanto, Activity Streams é um vocabulário extensível.”

Esse vocabulário extensível significa que você pode criar novos tipos de metadados para seu próprio conteúdo, caso ele não seja mapeado para formatos existentes.

Conectando-se ao Fediverso

Depois de mapear como os vários aspectos do seu aplicativo social se alinham com o padrão ActivityPub, você precisa de um endpoint de API RESTful para cada um deles.

Por exemplo, outros serviços compatíveis com ActivityPub precisarão de uma forma de acessar informações do usuário, como nome, biografia e imagem do seu serviço. Nesse contexto, Prodromou explica o que é necessário:

“Você precisa ter endpoints de entrada e saída para seus usuários. Portanto, se alguém enviar algo para o seu usuário, você precisará ter um endpoint da API GET que receba essas informações, chamado de caixa de entrada do usuário. E é essa caixa de entrada que é encontrada no objeto de usuário. Então, a caixa de saída é de onde saem todas as atividades que o usuário gera.”

“O ActivityPub não está completo, e pode nunca estar completo, porque a forma como as pessoas lidam com as redes sociais e as interações sociais está sempre mudando.”

Os servidores ActivityPub precisam suportar uma série de atividades. Isso inclui aceitar ou rejeitar um seguimento, criar, atualizar ou excluir um objeto, adicionar algo a uma coleção, removê-lo de uma coleção, bloquear alguém e desfazer qualquer outra atividade.

“Com esse pequeno conjunto de ferramentas no seu gerenciador de caixa de entrada, de repente você está participando como membro pleno do fediverso,” diz Prodromou.

A última coisa a ter em mente é que as solicitações entre servidores ActivityPub são identificadas usando o protocolo de assinaturas HTTP do IETF.

“Esta é uma forma de os servidores remotos enviarem algo a você e identificarem de qual usuário vem,” explica Prodromou. “Seu servidor pode provar que realmente veio daquele servidor e pode verificá-lo usando criptografia de chave pública… A maioria das bibliotecas padrão pode lidar com isso.”

Prodromou também aconselha os desenvolvedores a se familiarizarem com o WebFinger, o protocolo que fornece um sistema de identidade simples e uniforme em todo o fediverso.

Obstáculos Comuns

Prodromou diz que um aspecto do ActivityPub que pode ser complicado para os desenvolvedores é o fato de que nem todos os servidores suportam todos os tipos de atividades.

Por exemplo, se sua plataforma for construída em torno de convites para eventos, os usuários do Mastodon não verão esses convites porque o Mastodon não suporta esse tipo de atividade.

Embora você possa entrar em contato com os desenvolvedores de outras plataformas e incentivá-los a apoiar seu tipo de atividade preferido, eles não têm obrigação de fazê-lo. Prodromou incentiva você a não se preocupar muito e a aceitar que a diversidade do fediverso torna algumas incompatibilidades inevitáveis.

“Servidores diferentes terão perfis diferentes, e está tudo bem se nem tudo chegar a todos os usuários… É uma rede em constante evolução e há novos tipos de conteúdo na rede todos os dias. Não há problema se tivermos aplicativos diferentes na rede e talvez eles não entendam muito bem o que o outro está fazendo.”

  • Sempre inclua um manipulador de eventos ou de filas.

Outra questão a ser considerada é que a entrega de conteúdos e ações através da rede federada pode levar tempo, especialmente se um determinado usuário tiver muitos seguidores. Prodromou sugere planejar isso incluindo um manipulador de eventos ou de filas.

“Aplicativos menores às vezes não incorporam isso, e você realmente precisa disso para o fediverse… Quando alguém está carregando um formulário ou postando algo, pode demorar muito e travar sua UI ou algo assim. Você realmente precisa de tratamento offline.”

E, finalmente, você deve se preparar para a realidade da Internet, onde os dados nem sempre chegam na primeira vez devido a problemas de conectividade, períodos breves de inatividade para manutenção, etc.

Criar novas tentativas em seu sistema para quando os dados não chegam na primeira vez é essencial para um aplicativo diversificado que funcione de maneira confiável para os usuários.

Olhando para o Futuro

Ao construir com o ActivityPub, você deve ter em mente que é um padrão em evolução e seus usuários podem esperar que você ofereça suporte a novos recursos à medida que forem introduzidos no futuro.

“O ActivityPub não está completo e pode nunca estar completo, porque a forma como as pessoas lidam com as redes sociais e as interações sociais está sempre mudando,” explica Prodromou.

“Existem tipos de interação social na web hoje que não existiam quando criamos o ActivityPub, e haverá novos tipos de interações na web daqui a 10 anos que você e eu nem podemos imaginar agora.”

Prodromou diz que está trabalhando pessoalmente no suporte para mensagens criptografadas de ponta a ponta, um recurso que está rapidamente se tornando essencial para aplicativos de mensagens.

A portabilidade de dados é outro recurso em desenvolvimento para o ActivityPub. Isso permitiria que um usuário mudasse sua ‘casa’ no fediverso de, digamos, Mastodon para Threads, levando consigo todos os seus seguidores, contas seguidas, atividades e conteúdo.

“A ideia é realmente manter um padrão vivo, algo que esteja constantemente se atualizando com novas formas interessantes de interagir como seres humanos,” diz Prodromou.

É uma tecnologia que apesar de ter o email como uma espécie de percussor recorrentemente usado como analogia quando há necessidade de explicação tem um potencial incrível de mudar pra sempre a maneira como as pessoas interagem no universo digital e KS Byte Hosting está 100% engajada em promover tecnologias que facilite a vida tanto de quem empreende quanto do usuário comum e por isso estamos expandindo em um futuro breve nossos serviços e produtos focados no Fediverso. Dê uma olhada aqui.