porcellis.com

ref: master

content/blog/o-potencial-da-federacao.md


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
---
title: "O Potencial da Federação"
date: 2020-11-04
tags: ["federacao", "descentralizacao"]
---

Recentemente me envolvi em uma discussão com um amigo sobre redes
descentralizadas e o tal chamado _fediverso_. O _Fediverse (em inglês)_
é a junção de _federated_ e _universe_, ou seja _universo federado_. E é
basicamente uma rede de aplicações descentralizadas que são
interoperáveis, através de um (ou vários) protocolos padronizados.

## A questão das redes descentralizadas

A discussão sobre redes descentralizadas é algo que volta e meia
reaparece e ela posa uma questão muito importante sendo ela a seguinte
pergunt
nossas informações sob a autoridade de certas entidades da qual podem
não se alinhar com nossos interesses e objetivos"**. Mais
fundamentalmente, como previnimos que os nossos dados, sejam em certa
medida, privados de nós mesmos.

## Programas, protocolos, formatos padronizados e federação, uma breve explicação

Um programa de computador trabalha com a premissa básica de _entrada e
saida_ ou (Input/Output - IO), ou seja, um usuário entra com
informação/dados, o programa mastiga e cospe informação na outra ponta.

A questão que se levanta logo em seguida é, _qual é o formato desse
dado?_.  Como garantir que esse dado seja _replicável_ de forma ao
programa poder servir também em outros lugares, em outras máquinas, em
outros espaços.  Justamente por isso existem _formatos de dados_ e
_protocolos/padronização_.

Esses protocolos e formatos definem como que se estrutura uma
determinada informação, e permite a replicabilidade da mesma. E o
processo que se determina esse dado, se chama de padronização,
geralmente por uma entidade pública. A interoperabilidade ou a adoção de
programas à um determinado padrão ou protocolo os permite entrar dentro
de uma federação.

E por fim, esses protocolos e padrões, são apenas específicações, não
entram muito a fundo na implementação. A entidade mais importante a
respeito disso é a IETF (Internet Engineering Task Force - Força Tarefa
de Engenharia de Internet), onde são publicados os RFCs (Request For
Comments - Pedidos de Comentários) que moldaram coisas como a internet,
formatos de dados e protocolos de comunicação como o Email. Outra
entidade importante é o OpenGroup/IEEE, que trouxe a vida o POSIX
(padrões de interoperabilidade entre sistemas Unix).

## Federação

Como mencionei antes, a federação é o processo de um programa adotar um
padrão ou permitir a interoperabilidade entre protocolos/padrões. A
principal característica é de que o sistema "conversa" em uma língua
comum. Essa "língua" (protocolo) é aberto e desenvolvido com a ajuda da
comunidade, o que acaba por gerar certos acordos e convenções sociais.

Acho que um aspecto importante é que num sistema de servidores federados,
o controle e administração é exercido por entidades soberanas e
independentes, mas que conseguem se comunicar entre si.

## Fediverso

Nesse cenário, surge o chamado Fediverso. Diversos programas surgem com
a ideia de aderir a um protocolo padrão e apontando para as redes
descentralizadas. Acredito que o exemplo de maior sucesso disso, seja o
Mastodon, que seria quase como um clone da experiência do Twitter, mas
existem outros como o Pixelfed (quase como um instagram), diaspora (como
um Facebook), PeerTube (similar ao YouTube) e outros.

Diversas instâncias do Mastodon e de outras redes que eu mencionei (isto
é, servidores) surgiram nos ultimos anos conforme as pessoas começaram a
perceber de forma mais evidente como esses grandes monopólios _realmente
funcionam_. Cada instância funciona de forma soberana e autogestionária,
ou seja seus usuários compartilham um senso de comunidade e vizinhança,
e geralmente se agrupam em instâncias que compartilham um assunto em
comum, mas não estão restritas a somente a conversar com os usuários
daquela instância afinal por estarem falando em um idioma "comum" - isto
é, um protocolo federado - elas podem interagir com outras instâncias.

Os programas federados tendem a ser leves, justamente com a intenção de
permitir que administrar uma instância seja um processo descomplicado e
simples e não sobrecarregue os usuários e os administradores[^mastodon],
além de tentar baratear os custos da hospedagem desse servidor[^pi], por
isso é natural que essas instâncias também acabem por ter um numero
limitado de usuários e que acabam muitas vezes contribuindo
financeiramente com as despesas de manter o servidor.

Essas instâncias pequenas e geralmente com um numero de usuários
relativamente limitado, ajudam a evitar problemas como SPAM e lidarem
com usuários abusivos, conteúdo de extrema-direita, etc. Um ponto
importante também, é que como cada instância é soberana, ela pode
decidir com quais outras instâncias do fediverso ela vai federar - ver e
interagir.

[^pi]: [Migrating to the RPi](https://icyphox.sh/blog/pi/)

[^mastodon]: Inclusive, o Mastodon (similar ao Twitter) inicialmente foi
  desenvolvido por uma pessoa só. E consegue resolver problemas e ter a
  eficiência de uma plataforma bilionária com menos de 1/5 dos recursos.

Essas redes federadas tem sido bem abraçadas pela comunidade, justamente
por serem moldadas a centrar nos interesses do usuário, pensando em como
resolver questões que interessam aos usuários da plataforma. A mesma
lógica por trás do software livre se aplica aqui, não tem nada
desnecessário e oculto, nada que serve aos interesses secretos de uma
empresa, não existe espaço para anúncios e rastreamento, tornando mais
difícil a penetração de corporações e coisas do gênero.

A federação é um dos melhores exemplos de autogestão, _bem comum_ e
aplicação dos conceitos do movimento software livre, como liberdade e
respeito dos usuários. Programas democráticos e que colocam o controle
na mão dos usuários deve estar na ordem do dia de qualquer entusiasta de
tecnologia, programador e ativista.