Fediverso ou ATmosphere

Fediverso ou ATmosphere? ActivityPub ou AT Protocol? Qual protocolo adotar no seu projeto de aplicação/rede social descentralizada?

Deixando bem claro no início desse texto que sou bem leigo no assunto no que tange a parte técnica, tenho somente uma noção geral de como funcionam as tecnologias e quais são algumas de suas diferenças chave de operabilidade. Fora isso, comecei a me aprofundar no assunto somente mais recentemente, tenho Mastodon há alguns anos, porém tinha uma noção muito vaga do que era o ActivityPub e o Fediverso. Mais recentemente com a migração em massa de brasileiros do X (antigo Twitter) e a adoção da plataforma BlueSky, a primeira coisa que me chama a atenção é exatamente o caráter descentralizado da plataforma, te permitindo hospedar seu próprio servidor de dados e mantê-los seguros contigo; e o que achei mais interessante, o aplicativo do BlueSky é somente um dos vários outros, pois eles são basicamente um frontend servido pelo verdadeiro “produto” do pessoal do BlueSky, que é seu protocolo descentralizado, o AT Protocol.

Com essa onda do BlueSky, comecei a explorar para tentar entender um pouco melhor de que maneira a chamada ATmosphere se diferencia do Fediverso. A princípio a ideia da ATmosphere me parece mais interessante, já que a sua ideia central é exatamente resolver um dos grandes problemas do ActivityPub e do Fediverso - que para o que é proposto, é totalmente compreensível ser da maneira que é - que é a questão da dependência entre dados e instância da rede social. Ao criarmos uma conta em mastodon.social, não podemos logar com a mesma conta em mastodon.gamedev.place, são instâncias totalmente diferentes do serviço, então temos que ter uma conta para cada uma delas.

O ATProto resolve esse problema te dando o controle não da instância do serviço, mas dos seus dados no que eles chamam de PDS (Personal Data Server), onde você pode hospedar a sua em qualquer lugar e utilizar nos mais diferentes serviços que utilizem o ATProto . Permitindo assim que seja fácil você mesmo limitar quem pode acessar seus dados. O PDS é somente uma das etapas, também há servidores de autenticação, de firehose, que por mais que você possa hospedar, hoje em dia os principais continuam sendo os do BlueSky. Exatamente por isso talvez não seja tão fácil popular a ATmosphere sem ser por meio dos servidores da própria BlueSky. Também pode ser que hajam problemas de moderação, já que se comparado ao Fediverso, onde cada instância de rede social terá suas próprias políticas de moderação, na ATmosphere é algo mais baseado em rótulos e listas de bloqueio.

Como existir no Fediverso?

Para existir no Fediverso basta você ter um site estático hospedado em algum lugar e talvez um domínio, não há necessidade de bancos de dados e outras serviços rodando ativamente. Basta configurar alguns JSON e sua página já estará apta a aparecer em outras plataformas que oferecem suporte a ActivityPub, como Mastodon ou Pixelfed. Porém se a ideia é interações mais complexas, como seguir, curtir e permitir que suas postagens sejam curtidas, comentários e coisas assim, são necessárias estruturas mais complexas, afinal é você quem precisa armazenar e servir essas informações.

É bem comum compararem o ActivityPub com um email. Pense que você tem seu provedor de e-mail (que seria sua instância) e um usuário (que seria seu handle). Então se quisermos nos comunicar com alguém, utilizamos seu endereço no Fediverso, no meu caso por exemplo @[email protected] para este blog, ou @[email protected] para o meu Mastodon. Nisso o que nós vamos ter são literamente estruturas JSON que precisam ser servidas. Como um /.well-know/webfinger, ou um /users/nome. Que ao tentarmos buscar em plataformas federadas, elas irão buscar essas informações no nosso site e irão montar nosso perfil em seus caches. Com isso é possível eu até mesmo disponibilizar postagens através de páginas estáticas.

Inclusive eu mesmo estou fazendo isso - servindo um perfil no Fediverso a partir de um site estático - basta procurar por @[email protected] em alguma plataforma federada.

E é isso, é extremamente fácil de existir no Fediverso, talvez o esforço seja um pouco maior somente para fazer seu serviço interagir apropriadamente, principalmente quando falamos de receber e tratar as /inbox. Se hospedar um NodeJS ou qualquer outro backend for uma opção, dá pra facilmente desenvolver um serviço que intercepta essas requisições e as trata apropriadamente (armazena seguidores, faz as operações de validação de hash para interações por comentários e coisas assim). E claro, hospedar um serviço existente caso você queira; atualmente utilizo o Ghost nesse blog que na atualização mais recente me permite acessar o Fediverso, por exemplo. WordPress também tem plugins para funcionar com ActivityPub, porém não sei dizer se nesse caso você precisa hospedar por conta própria. O Threads, da Meta, também implementou suporte ao ActivityPub recentemente. Há uma promessa do próprio ATProto ser compatível com o AP, vamos ver.

Como existir na ATmosphere?

Aqui é um pouco mais complicado, ou mais fácil, depende do ponto de vista. Como comentei mais acima, por mais que seja possível você hospedar todos os servidores necessários para criar seu serviço do zero, muito provavelmente você pode ter alguns problemas para ser visto na ATmosphere, já que pelo que entendo, ainda há uma forte necessidade do servidor de autenticação do próprio BlueSky por conta do serviço.

Hoje o modo mais fácil de existir na ATmosphere é através do próprio BlueSky, e caso queira, pode hospedar sua própria PDS, ou desenvolver seu próprio AppView, como o deck.blue ou o tokimeki que são frontends alternativos ao bsky.app. Ou mudando a forma totalmente para algo mais parecido com a aparência do Instagram, como o pinksky. Outro serviço interessante é o WhiteWind, ele é um App de blogging que te permite utilizar a ATmosphere para publicar textos longos. As possibilidades são imensas. O mais interessante é exatamente o caráter da centralidade dos seus dados, tudo o que você escreve e sobe de imagens, fica salvo no seu PDS e não em nenhuma das instância desses serviços.

De um ponto de vista de centralidade de dados, acho isso absolutamente fantástico, mesmo que ainda haja uma centralidade por parte dos servidores de autenticação e outros serviços. O fato de podermos facilmente ter esses dados conosco já é algo enorme, não há como colocar em pé de igualdade com redes totalmente centralizadas. Porém acho que a preocupação de todas as etapas dos serviços serem interoperáveis com servidores self-hosted é legítima.

Ou seja, no fim não é tão fácil existir na ATmosphere quanto no Fediverso, pelo menos se a ideia aqui é conseguir uma identidade sem cadastro prévio. Enquanto no Fediverso basta você configurar seu site estático que ele deve aparecer em vários serviços, na ATmosphere você teria que começar no mínimo hospedando seu próprio PDS que já requer um servidor com algum serviço backend rodando. Para além disso, se quiser hospedar o pacote completo com servidor de autenticação, de moderação e tal, não é garantia que você possa interoperar com o BlueSky, por exemplo.

Interoperabilidade entre os protocolos?

O BlueSky já acenou positivamente para a possibilidade, mas eu duvido que isso vá acontecer tão cedo, o ATProto é um protocolo que ainda está em desenvolvimento e é o principal produto da empresa. Então acho muito mais provável eles continuarem trabalhando em melhorias e essa integração com o ActivityPub ficar de escanteio, mas que eu pessoalmente ainda tenho forte esperança de que venha ver a luz do dia em algum momento.

Eles não são projetos excludentes, é possível implementar um aplicativo feito em cima do ATProto , mas com integração ao Fediverso, já que basta servir os arquivos corretos para que seu perfil esteja público. Seria possível fazer uma plataforma de blog estilo o WhiteWind, mas que tem a capacidade de responder ActivityPub, por exemplo. Penso que ainda seria possível usar o próprio PDS como banco de dados para essas informações. Porém uma interoperabilidade a nível de protocolo ainda continua sendo sonho.

Dito isso, qual escolher?

Se a sua ideia é desenvolver um App voltado para pessoas no BlueSky, então vai de ATProto . Digo BlueSky exatamente porque é o único serviço que te permite entrar na ATmosphere atualmente, se não for o único é o principal. É uma opção interessante se a ideia é desenvolver uma aplicação que se aproveite da base de dados do BlueSky, que utilize como um sistema de autenticação e armazenamento de dados nos próprios PDS dos usuários. Com mais algum esforço dá pra fazer este serviço operar com o Fediverso também.

Agora se operar na ATmosphere não for uma questão, o ActivityPub é muito mais fácil de integrar e não há necessidade de um banco de dados, mas caso queira rodar um pequeno backend, irá ter uma integração muito melhor. Enquanto em termos práticos o ATProto depende do BlueSky hoje em dia, o ActivityPub é de fato um protocolo descentralizado nesse sentido mais puro, o Fediverso não está atrelado a nenhum sistema de autenticação ou algo do tipo, basta servir os arquivos corretos em seu servidor. Além disso, pouco a pouco o protocolo está recebendo mais integração com outros serviços, como o Threads da Meta implementando suporte ao AP recentemente, por mais discutível que seja a decisão, se é boa ou não para a comunidade. Parece que o Tumblr também já vem fazendo movimentações nesse sentido. Então isso também é algo a se considerar.

Conclusões

O ATProto é um protocolo bem recente que ainda está evoluindo. Por mais que tenhamos diversas aplicações que o usem, elas são roupagens diferentes para o BlueSky, por mais que seja possível contornar algumas da limitações, como no caso da possibilidade de escrever textos longos com o WhiteWind., ela continua sendo uma rede fechada em si. Não é possível seu site simplesmente implementar o protocolo e integrar a ATmosphere, é necessário no mínimo ter um PDS para poder autenticar em alguma das redes do BlueSky, receber um did e tudo o mais. Então são um conjunto de PDS operando ativamente, por meio de serviços intermediários.

Não sei se faz sentido o que quero dizer, mas sua presença na ATmosphere está vinculada ao seu PDS, ou seja, a um conjunto de serviços rodando para além do webserver; já no Fediverse, com um proxy reverso servindo seus arquivos já deve ser o suficiente para pelo menos se fazer visível. Se eu falar só em termos de custos monetários, o custo de pagar uma hospedagem de uma página estática e um servidor com um micro-serviço é bem diferente. Mas não é invalidando o ATProto nesse sentido, para fazer o ActivityPub operar 100% também é necessário termos outros serviços rodando, como um banco de dados e um webserver. Mas falo mais na questão da padronização, no ActivityPub teremos sites com seus bancos de dados que podem servir requisições no padrão do AP. No ATProto há a necessidade do PDS. E não só o PDS, mas dos diversos outros serviços intermediários também.

Por outro lado, o que a ATmosphere traz de interessante é exatamente essa ideia que aparece em redes centralizadas, principalmente da Meta e da Alphabet, que é a integração em diferentes redes sociais a partir de um único perfil de dados. Percebo que ter diversas contas em mais de um serviço é uma das questões que mais vejo as pessoas odiarem. Essa centralização da identidade que o ATProto traz acho muito difícil de ser possível de maneira satisfatória com o ActivityPub exatamente pelo fato de não existir uma obritatoriedade quanto ao armazenamento dos dados para operar. Então cada serviço implementa e armazena os dados da sua forma/padrão, e os compartilham no Fediverso através do AP. É muito difícil de haver qualquer padronização nesse sentido, pois requer serviços de autenticação e tudo o mais.

Enfim, mais divagações, estou muito pensativo sobre internet descentralizada e principalmente sobre redes sociais descentralizadas. É um assunto que conversa com tudo o que estamos vivendo no mundo no momento, com discussões sobre liberdade de expressão e censura, um forte movimento fascista cada vez mostrando mais suas garras pelo mundo. E nós aqui no Brasil temos o agravante de sermos totalmente dependentes de tecnologias estrangeiras que tem testado seu poder na influência de resultados eleitorais. Então acho importante pensarmos em que modelo de tecnologia nós queremos para o futuro.