atproto-comments

Publicado a 🤖 Se queres que a tua IA leia este post, descarrega-o como markdown.
Nuvens, muinhos e leiras fotografados desde o ceu
Atmosfera, muinhos e leiras (Thomas Richter)

Acabei de publicar o atproto-comments (no npm e no JSR), um web component que leva os comentários do AT Protocol a qualquer site, de forma simples e sem servidor nem base de dados.

  1. Publicas um artigo no teu site.
  2. Publicas um post numa app do AT Protocol (Bluesky, Mu, Deer, etc.) com a ligação para esse artigo.
  3. Inseres o componente no teu HTML, apontando para o post através da sua AT URI (como obtê-la):
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/atproto-comments@1/dist/atproto-comments.css">
<script type="module" src="https://cdn.jsdelivr.net/npm/atproto-comments@1/dist/index.js"></script>
<atproto-comments thread-uri="at://did:plc:xxxx/app.bsky.feed.post/yyyy"></atproto-comments>

E pronto: as respostas a esse post aparecem como comentários no teu artigo. Além disso, se um visitante com conta no AT Protocol quiser comentar, escolhe a sua app e é redirecionado para o post.

O objetivo é duplo. Por um lado, oferecer um sistema de comentários fácil de integrar, sem base de dados própria e sem depender de plataformas como o Disqus. Por outro, trazer para o teu site as conversas que hoje ficam fechadas dentro das redes sociais.

Se não conheces o AT Protocol, continua a ler. Vou-che contar o caminho que segui até o conhecer e entender, porque tenho a intuição de que vai ser mais útil do que uma definição de manual.

Há um ano e meio, farto da esterqueira em que se converteu o X, procurei alternativas. Dei com o Bluesky, que prometia ser uma rede aberta e tinha uma interface com vibes do velho Twitter. Gostei: case sem ruído, nazis e bots. Mas não entendi o porquê do "aberta".

Em março vi um chio da Eurosky, iniciativa europeia independente que trabalha para construir uma web social aberta, no que convidavam a mudar as nossas contas do Bluesky, alojadas em servidores nos EUA, para os seus servidores na Europa, e a continuar a conversar no Bluesky. Como? Isto já era um chisco mais estranho. Mas era verdade: movi a minha conta para a Eurosky e continuei a conversar no Bluesky.

Em junho, outro chio da Eurosky. Desta vez anunciavam o mu.social, uma nova app de microblogging. Experimentei entrar com as minhas credenciais do Bluesky e fiquei co cu torto. Ali estava o meu perfil, com os meus posts, a gente que sigo e os meus seguidores. Tudo. Depois dei com o Deer, testei e passou a mesma cousa.

Para entenderes a minha surpresa, aqui está o mesmo post da Eurosky visto através de três apps:

Espera, isto lembrava-me algo que já tinha vivido. Claro, que saudade! Os blogues, o RSS, o Google Reader e o Feedly. Quando a internet era descentralizada, o que publicávamos era nosso e o que líamos não estava deformado polos algoritmos de empresas privadas.

Investiguei e recapitulei. Isto era possível porque o Bluesky está construído sobre o AT Protocol, um protocolo aberto para redes sociais descentralizadas. Nele, cada conta tem um identificador permanente (DID) e os seus dados vivem num servidor de dados pessoal (PDS), assinados criptograficamente. Por isso podemos mudar de fornecedor sem perder a conta nem os seguidores (os dados são nossos!), e até montar o nosso próprio servidor. Podemos consumir os nossos dados e os das pessoas que seguimos a partir de diferentes apps. E podemos desenvolver ferramentas como o atproto-comments sem depender do que uma empresa decida em cada momento.

Como funciona por dentro

Se queres conhecer as peças do puzzle, estas são as que entram em jogo quando o atproto-comments carrega os comentários:

  • Identidade (DID e handle): cada conta tem um identificador permanente (did:plc:...) e um nome legível (@xulioze.eurosky.social). O DID é o que permite mudar de servidor sem perder nada.
  • PDS (Personal Data Server): o servidor onde vivem os teus dados, num repositório assinado. Pode ser o do Bluesky, o da Eurosky ou o teu próprio.
  • Lexicons e registos: cada tipo de dado tem um esquema público. Um post é um registo da coleção app.bsky.feed.post; por isso a AT URI aponta para at://<did>/app.bsky.feed.post/<id>.
  • Relay: como os dados estão espalhados por muitos PDS, o Relay junta-os e reemite as suas mudanças num único fluxo em tempo real (o firehose).
  • AppView: consome esse fluxo, indexa-o e serve vistas já montadas, como o fio de respostas de um post. O atproto-comments pede esse fio à API pública do AppView do Bluesky (app.bsky.feed.getPostThread), mas podes apontá-lo para outro AppView com o atributo appview. Tem em conta que esse pedido sai do navegador de cada visitante e que, ao carregarem-se com JavaScript, os motores de busca não costumam indexar os comentários.
  • Apps clientes: Bluesky, Mu, Deer… são só interfaces diferentes sobre os mesmos dados, e cada uma pode decidir como os mostra: que algoritmo usa, como ordena o feed, que moderação aplica. Se um dia não gostar de como o Bluesky me serve o feed, mudo para outra app que o faça mais ao meu gosto, sem perder nada.

No fundo, a ideia é muito semelhante à do RSS e dos blogues: os dados são de quem os publica e pode levá-los para onde quiser. Cada um decide como e onde os consumir. E qualquer pessoa pode desenvolver ferramentas para o ecossistema sem pedir licença a ninguém, como o atproto-comments, que estreamos hoje aqui.

Se já tens conta no AT Protocol, deixa um comentário aqui em baixo a partir da tua app favorita (Bluesky, Mu, Deer…) e vais vê-lo aparecer. Se não tens, cria uma conta na Eurosky e usa-a na app que quiseres. Bem-vinda às redes sociais abertas!

Comentários