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. |