“Mauro, CALA A BOCA! É um bug, certo – no kernel. Há quanto tempo você é mantenedor? E você *ainda* não aprendeu a primeira regra de manutenção do kernel? Se uma mudança resultar na quebra dos programas do usuário, é um bug no kernel. Nunca NUNCA culpamos os programas dos usuários. Quão difícil pode ser isso de entender?” -Linus Torvalds
Não quebre o espaço do usuário. Esta é a regra de ouro de Linus Torvald para o desenvolvimento do kernel Linux. Para aqueles que estão lendo isto e não estão familiarizados com a natureza do Linux, ou com os sistemas operacionais em geral, o kernel é o coração e a alma de um sistema operacional. O kernel é o que realmente gerencia o hardware, movendo bits entre o armazenamento e a RAM, entre a RAM e a CPU à medida que as coisas são computadas, e todos os pequenos dispositivos e peças do computador real que precisam ser controlados no nível do hardware.
Cada aplicativo ou programa escrito para um sistema operacional precisa interagir com o kernel. Quando você baixa o Photoshop ou o Telegram, tudo o que o programa faz se resume essencialmente a chamar o kernel. “Ei, kernel, pegue o que acabei de digitar, processe e envie por uma conexão de rede para o servidor.” “Ei, kernel, leve a mudança de cor que fiz para este tom, retire-a da RAM e envie-a para a CPU para modificá-la e, em seguida, coloque-a de volta na RAM.”
Quando o kernel é alterado, de maneira semelhante ao Bitcoin, o principal objetivo dos desenvolvedores é garantir que os aplicativos existentes que assumem uma maneira específica de interagir com o kernel não quebrem devido a uma alteração no kernel. Parece muito familiar ao Bitcoin e à necessidade de manter a compatibilidade com versões anteriores para atualizações de consenso de rede, não é?
“Seriamente. Quão difícil é entender essa regra? Nós particularmente não quebramos o espaço do usuário com TOTAL CRAP. Estou com raiva, porque todo o seu e-mail estava _terrivelmente_ errado, e o patch que quebrou as coisas era obviamente uma porcaria. Todo o patch é uma merda incrivelmente quebrada. Ele adiciona um código de erro insano (ENOENT) e, por ser tão insano, adiciona alguns lugares para corrigi-lo (“ret == -ENOENT ? -EINVAL : ret”).
O fato de você tentar dar *desculpas* para quebrar o espaço do usuário e culpar algum programa externo que *costumava* funcionar é simplesmente vergonhoso. Não é assim que trabalhamos. Conserte a porra da sua “ferramenta de conformidade”, porque ela está obviamente quebrada. E corrija sua abordagem à programação do kernel.” -Linus Torvalds
Linux é um dos projetos de código aberto mais importantes, senão o mais importante, em todo o mundo. O Android roda em Linux, metade da infraestrutura de back-end (se não muito mais) roda em Linux. Sistemas embarcados controlando todos os tipos de coisas computadorizadas no fundo da sua vida que você nem consideraria rodar no Linux. O mundo literalmente funciona em Linux. Ele pode não ter assumido o controle da área de trabalho como muitos usuários autistas do Linux queriam que acontecesse, mas comeu silenciosamente quase todo o resto em segundo plano, sem que ninguém percebesse.
Todos esses aplicativos e programas que as pessoas usam no dia a dia dependem da suposição de que os desenvolvedores do kernel Linux não quebrarão a compatibilidade com versões anteriores do kernel para permitir que seus aplicativos continuem funcionando. Caso contrário, qualquer aplicativo em execução deverá continuar usando versões mais antigas do kernel ou assumir o fardo de alterar seus aplicativos para interagir com uma alteração significativa no kernel.
O caminho mais provável para o sucesso do Bitcoin é um caminho muito semelhante, simplesmente se tornando uma plataforma sobre a qual os aplicativos e ferramentas financeiras são construídos, de tal forma que a maioria das pessoas que os utilizam nem perceberá ou considerará que “o Bitcoin comeu o mundo”. De forma semelhante ao Linux, a regra de ouro de “Não quebrar o espaço do usuário” se aplica dez vezes. O problema é que a natureza do Bitcoin como um sistema de consenso distribuído, em vez de um único kernel local rodando na máquina de uma pessoa, muda radicalmente o que significa “quebrar o espaço do usuário”.
Não são apenas os desenvolvedores que podem quebrar o espaço do usuário, os próprios usuários podem quebrar o espaço do usuário. Todo o último ano de ordinais, inscrições e tokens BRC-20 deve demonstrar isso definitivamente. Isto oferece um dilema muito sério quando se olha para o mantra “Não quebre o espaço do usuário” do ponto de vista dos desenvolvedores. Por mais que muitos Bitcoiners neste espaço não gostem de Ordinais e estejam chateados porque seus próprios casos de uso estão sendo interrompidos pelo tráfego de rede que os usuários de Ordinais estão criando, ambos os grupos são usuários.
Então, como os desenvolvedores enfrentam esse problema? Um grupo de usuários está quebrando o espaço do usuário para outro grupo de usuários. Promulgar uma mudança que impeça o uso de ordinais ou inscrições viola explicitamente os mandatos de não quebrar o espaço do usuário. Tenho certeza que as pessoas querem dizer “Taproot quebrou o espaço do usuário!” em resposta a este dilema, mas isso não aconteceu. A ativação do Taproot e a permissão para que os dados das testemunhas sejam tão grandes quanto todo o tamanho do bloco não quebraram nenhum aplicativo ou uso pré-existente construído sobre o Bitcoin. Tudo o que fez foi abrir a porta para novos aplicativos e casos de uso.
Então, o que fazemos aqui? Tentar filtrar, ou quebrar uma mudança de consenso, as pessoas que fazem inscrições ou negociam ordinais é violar fundamentalmente a máxima de “não quebrar o espaço do usuário”. Não fazer nada permite que uma classe de usuários quebre o espaço de usuário de outra classe de usuários. Fundamentalmente, não há solução para este problema, exceto violar a regra de ouro ou implementar funcionalidades que permitam à classe de usuários cujo espaço de usuário está quebrado agora se adaptar às novas realidades da rede e manter uma versão viável de seus aplicativos e uso. casos.
Não quebrar o espaço do usuário do Bitcoin é de importância crítica para seu sucesso e funcionalidade contínuos, mas não é tão simples como “não mude nada”. Mudanças dinâmicas no comportamento do usuário, que não exigem alterações no protocolo em si, podem ter o mesmo efeito no final do dia que uma alteração significativa no protocolo. Os desenvolvedores devem escolher quais espaços de usuário dos aplicativos serão quebrados para manter o de outro aplicativo? Eu diria que não, e iria mais longe, dizendo que qualquer pessoa que defenda tal comportamento por parte dos desenvolvedores está exigindo que eles atuem de forma irresponsável e de uma forma que prejudique os usuários do sistema. Então, qual é a resposta aqui?
Não há resposta exceto avançar e continuar adicionando melhorias ao protocolo que permitam que aplicativos que estão sendo quebrados pelo comportamento de determinados usuários funcionem na presença de mudanças emergentes no comportamento dos usuários. Caso contrário, você está pedindo aos desenvolvedores que abandonem a regra de ouro e efetivamente joguem como reis em relação a quais casos de uso são viáveis para construir em cima do Bitcoin.
Se seguirmos por esse caminho, então o que estamos realmente fazendo aqui? Não posso dizer o que estamos fazendo neste momento, mas posso dizer que não estamos mais construindo um sistema distribuído e neutro.
Fonte: bitcoinmagazine.com