tl;dr

Por enquanto é:

1
$ echo O ano do Linux no desktop será em $(date +"%Y" -d "+1 year")

Quando será o ano do Linux?

Embora as distribuições GNU/Linux tenham alcançado um bom nível de usabilidade na última década, ainda não é um sistema operacional destinado a pessoas desinteressadas em informática e tecnologia.

Pegue o exemplo do Ubuntu, ou qualquer uma de suas derivadas. Esqueça o terminal.

Agora, pense em um usuário hipotético - o qual chamaremos de João - sem conhecimentos técnicos e que utiliza o laptop para fazer seus trabalhos de faculdade, assistir séries, e jogar alguma coisa nos finais de semana.

O João utiliza em seu computador uma distribuição “amigável” (considere apenas que seja uma derivada do Ubuntu), não conhece absolutamente nada do sistema, pois é um usuário novo que abandonou o Windows por motivos de incompatibilidade: o seu processador é incompatível com o Windows 11. Ele aprendeu a instalar o Linux em seu laptop através de um canal de YouTube. Mal sabe instalar programas, ainda.

Dependency Hell

Um dos grandes males quando se fala em Linux no desktop hoje, é o tal do “inferno das dependências”. Se você é um usuário de longa data, muito provavelmente já tentou desinstalar o Firefox do sistema, levando partes importantes do GNOME junto.

Dependency Hell

Essa “amarração” com dependências no sistema é um cenário ideal para um iniciante destruir o sistema, falar mal do Linux para os coleguinhas, e voltar para o Windows malvadão e pesado.

Voltando ao nosso exemplo do usuário João, imagine que agora ele descobriu como se instala pacotes (“programas”, no linguajar do pinguim) no sistema; ele descobriu a lojinha de programas.

Sabendo ele que tudo ali é “grátis”, fácil de instalar com um click, ele instala tudo o que vê, com o desejo de sair experimentando tudo para depois desinstalar o que não gostou e deixar apenas o que quer.

Esse “para depois desinstalar o que não gostou” vai se tornar o seu pior inimigo, pois um iniciante não tem a menor ideia de como funciona um gerenciador de dependências, não sabe quais pacotes são importantes para o sistema funcionar, e que não podem ser removidos.

Quando falamos de usuários “experientes em Linux”, geralmente são aqueles usuários que sabem quais pacotes podem ser alterados/removidos e quais não podem, pois pela experiência sabe que desinstalando o pacote glibc, todo o sistema vai para o buraco.

Porém, o usuário João não tem a menor ideia disso tudo, não sabe o que é glibc, kernel, systemd, libX11, libstdc++, libxml2, etc etc etc.

Até porque, convenhamos, o usuário final não precisa conhecer detalhes do sistema operacional. Afinal, ele utiliza o laptop para fazer coisas de usuário, sabe? E a proposta de uma distribuição para desktop é ser um sistema amigável e de fácil uso. Ou ao menos deveria ser.

Entretanto, quando o usuário João tenta desinstalar o que não precisa na lojinha de programas, diversos erros são mostrados na tela, e com destaque um dos mais adoráveis em sistemas Debian Like:

1
2
libHell : Depende: libDevil (= 1.0~lol)
E: Impossível corrigir problemas, você manteve (hold) pacotes quebrados.

O que o usuário João vai fazer? Ele precisa do laptop para fazer um trabalho de faculdade no dia seguinte. Porém, nessa brincadeira de sair desinstalando as coisas, o LibreOffice foi junto. E agora ele não consegue instalar e nem desinstalar nada.

E então, o usuário João pesquisa soluções pela internet, encontra inúmeros tópicos ensinando a usar comandos esquisitos na assustadora telinha preta com letrinhas brancas, e como sabemos, o usuário João não é técnico, não é profissional de TI. Ele não precisa digitar comandos, e sim abrir telinhas gráficas e seguir um fluxo amigável, assim como é com qualquer outro sistema destinado a usuários finais.

Com tantas dificuldades e sem soluções a vista, o pinguim perde mais um usuário: João resolve pesquisar como gravar uma ISO do Windows 10 no pendrive, no Linux. =(

A solução definitiva

containers containers containers!

Flatapk + Toolbox/distrobox

A história hipotética do usuário João, demonstra que o Linux para desktop ainda é problemático para usuários finais.

Óbviamente, o problema do “inferno das dependências” não é o único vilão, sabemos que drivers e o reconhecimento de dispositivos ainda é um grande problema, mas como sabemos, estes não são problemas do Linux em geral, e sim de empresas terceiras que não oferecem drivers para o sistema.

O “inferno das dependências” é consequência do design dos gerenciadores de pacotes - o modo como foi idealizado - e por muito tempo não havia soluções práticas para melhorar e entregar algo mais robusto para os usuários.

A boa notícia é que fazendo uma mudança de abordagem, esse problema é resolvido de forma permanente. E essa mudança já está ocorrendo!

Distribuições imutáveis: The Next Generation Operating System

Distribuições imutáveis ainda são consideras emergentes. Estão em pleno desenvolvimento, e ainda não são destinadas para todos.

The Next Generation Operating System

Um exemplo real é a própria instalação do Silverblue, que precisa seguir um modelo de particionamento específico.

Já escrevi sobre sistemas imutáveis no site, usando como exemplo o Fedora Silverblue - a minha distro diária.

Pois bem, o que uma distribuição imutável pode ajudar nesse caso?

A resposta é que distribuições imutáveis são a solução definitiva para resolver todos os problemas envolvendo pacotes e atualizações no Linux!

Não há inferno de dependências, não há quebra de pacote X, Y, Z. Não gostou do programa que acabou de instalar? Basta desinstalar pela própria lojinha de programas, sem medo. Se quiser, pode desinstalar tudo, pois no máximo ficará com um sistema sem calculadora e sem visualizador de imagens.

Para ter a calculadora e o visualizar de imagens de volta, basta reinstalá-los pela própria lojinha de programas.

E o melhor de tudo isso, é que tudo pode ser feito por interface gráfica!

Não precisa recorrer a repositórios estranhos para obter uma versão atualizada do seu navegador, pois a lojinha de programas já entrega tudo em sua última versão estável.

E mais: se quiser usar versões beta, a própria lojinha entrega uma funcionalidade para trocas de versão.

Tudo isso são características das seguintes tecnologias, presentes em distribuições imutáveis: Flatpak, OSTree (Fedora Silverblue e Endless OS), GNOME Software (Silverblue), Discover (Kinoite), e atualizações atômicas.

Um usuário como o João, por motivos óbvios, não conhece nenhum desses termos. Mas se ele usasse uma distribuição imutável no lugar de sua distribuição “amigável”, provavelmente estaria no Linux até hoje.

A lojinha de programas entrega apenas pacotes em sandbox, isto é, Flatpaks. Ou seja, não é possível quebrar um sistema usando Flatpaks, pois todo pacote funciona de forma parcialmente isolada do sistema operacional.

Essa foi a solução encontrada pelos desenvolvedores: agrupar todas as dependências do programa e jogar em uma caixa, deixando-o isolado do restante do sistema.

Em seu repositório oficial - o flathub - já se encontra de quase de tudo: Google Chrome, Firefox, Brave, OnlyOffice, Steam, Minecraft, Android Studio, e muito mais!

As atualizações também são “inquebráveis” e funcionam como deveria, não há risco de quebrar o sistema após uma atualização devido ao usuário ter instalado a libHell que depende da libEvil e que depende da libXYZ mais atualizada. Esse tipo de problema é recorrente em distribuições “amigáveis”, mutáveis, como já demonstrado.

toolbox: um ambiente controlado e mutável

O toolbox é um wrapper para o podman, o qual facilita a criação de contêineres integrados ao sistema host. Isso possibilita a instalação de qualquer pacote dentro do contêiner, como se estivesse em uma distribuição mutável (isto é: qualquer distribuição atual).

Linux distros

Dentro do contêiner - o qual pode ser um Fedora, Ubuntu, Debian, Arch, OpenSUSE… - você pode instalar navegadores, jogos, editores, conversores, SDKs, IDEs, compiladores, etc etc etc. E se der algum problema, do tipo: quebrar o gerenciador de pacotes, basta remover o contêiner e criar outro do zero, tudo isso sem afetar nada do seu sistema operacional host.

Quer instalar o Wine? Beleza! Crie um contêiner separado, e instale o Wine:

1
2
3
$ toolbox create wine_container
$ toolbox enter wine_container
$ sudo dnf install wine

Não precisa mais do Wine? Ok, basta remover o contêiner:

1
$ toolbox rm wine_container

E pronto! Não há mais nenhum resquício do Wine em seu sistema. Não precisa desinstalar toneladas de lixo do sistema por conta de dependências mortas, pois tudo isso foi deletado junto com o contêiner.

Resumo

O usuário João precisa de um sistema operacional que trabalhe para ele, e não o contrário.

Porém, não só usuários finais se beneficiam desse modelo, mas também desenvolvedores, que precisam de um sistema extremamente estável e que não quebre por conta de dependências e atualizações mal feitas.

A grande sacada das distribuições imutáveis foi idealizar a separação das aplicações de usuários das aplicações de sistema.

Isto é, o que o usuário instalar no pós instalação do sistema operacional, não interfere nos pacotes do sistema operacional, pois não há dependências entre aplicações de sistema com aplicações instaladas pelo usuário.

Isso não é algo novo, já existe e é implementado no Android, no Chrome OS, no macOS, e mais recentemente, no SteamOS.

Em se tratando de GNU/Linux, hoje temos o Fedora Silverblue, o OpenSUSE MicroOS, o Endless OS, e mais recentemente, o Deepin OS, que já seguem esse modelo ou estão caminhando para esse fim.

Eu realmente vejo futuro nesse modelo, pois pela primeira vez, posso oferecer a mesma distribuição que utilizo para usuários mais leigos, que só querem usar o computador para tarefas mais básicas, sem se preocupar com quebra de pacotes e atualizações quebradas.

O “The Next Generation Operating System” (como as distribuições imutáveis são chamadas), como o nome diz, é a próxima geração de sistemas operacionais para desktop, e assim que se tornar mais popular, o ano do linux no desktop finalmente pode se tornar real.

Por ora, enquanto misturarmos aplicações de sistema com aplicações de usuário, ainda haverá o inferno das dependências, e o ano do Linux continuará sendo um loop:

1
$ date +"%Y" -d "+1 year"
Year of The Linux in Desktop