Esse artigo não vai abordar a qualidade dos snaps ou se eles fazem ou não sentido. O que está sendo analisado são 3 pontos:
- A Canonical realmente força os usuários a usar snaps?
- Até onde a Canonical tá certa e errada nessa história
- O que eu faria no lugar dela?
Dito isso, vamos ao tópico
A Canonical realmente força os usuários a usar snaps?
De maneira geral, o que acontece é que o Ubuntu vem com snaps por padrão e até aí tudo bem , não dá pra dizer que ela força, um sudo snap remove
resolve o problema certo? É… Mais ou menos, vamos por partes, de cara você perde a loja oficial da distro o que é um preço relativamente justo a se pagar, o problema são 2 pacotes Firefox e Chromium, basicamente quando você tenta instalar eles pelo gestor de pacotes do APT ele chama o gestor de pacotes snap e instala por ele, e é aí que está a polêmica JUSTIFICADA, eu faço questão de separar porque tem gente que reclama dos snaps porque a Canonical não libera o código fonte da entidade certificadora dos snaps, isso é extremismo, a comunidade não precisa dela pra nada, dito isso vamos ao próximo tópico
Até onde a Canonical tá certa e errada nessa história
Pra entender essa questão, é necessário antes de tudo entender o que é o APT e o que são pacotes .deb e o snap:
O APT é uma ferramenta vinda do projeto Debian que, ao contrário da crença popular, não é um gestor de .debs, esse é o trabalho do
dpkg
o APT trata dos repositórios, ele permite baixar pacotes de fontes externas, autogerir as dependências e controlar atualizações do pacote
Um pacote .deb nada mais é que a união de dois arquivos compactados, um arquivo contenndo um descritor (o que tem no pacote, dependências, scripts e etc…) e outro que é o conteúdo do pacote que pode ser literalmente qualquer coisa
Um snap nada mais é que um formato de aplicação, que precisa de um interpretador, ele funciona mais ou menos como a plataforma Java porém pra qualquer linguagem inclusive Java, você tem um arquivo squashfs compactado com recursos pra iniciar uma instância da aplicação e um arquivo descrevendo como iniciar a aplicação, isso é feito através de um interpretador que também permite gerenciar os snaps
Dito isso, fica evidente que trazer um pacote.snap dentro do .deb não é forçar as coisas, o .snap é um formato de aplicação e o .deb pode ser usado pra distribuir qualquer coisa inclusive aplicações e o APT nem entra na equação porque sua função não é dizer o que tem dentro do .deb mas sim buscar ele num repositório, verificar suas dependências buscar as dependências e chamar o gestor de pacotes ele sim vai instalar o pacote
O que acontece na realidade é que a Canonical parou de fornecer o Firefox fora do ecossistema snappy, caso você use a versão do Debian o Ubuntu não vai se opor, mas aí você pode se perguntar: por que então é possível instalar via APT?
Bom, não existe uma explicação oficial mas penso eu que seja para não destruir a compatibilidade com scripts de pós instalação e documentações online
Ok, a Canonical não tá errada em fazer o que fez e ela também não te força a usar snap, porém isso não significa que ela não seja digna de críticas por isso, o Firefox é instalavel via APT, isso significa que temos um registro no sistema, e também é instalada via Snappy através de um script de pós instalação no pacote (não tem alias nenhum aqui) como o snappy tem atualizações automáticas isso pode significar que você pode ter uma discrepância de versões, nada grave mas é chato… Além disso, ao remover com o APT o Firefox não é mais removido porque não existe um gancho de remoção pro snap, outro ponto é que se você precisar fazer por algum motivo um cache offline de atualizações você não vai conseguir com o APT é necessário fazer passos a mais pra isso
O que eu faria no lugar dela?
Pra começar eu não faria tão diferente assim, eu não uso o .snap mas entendo perfeitamente os motivos que levaram a isso, porém eu faria algumas coisas diferentes: impediria o snappy de atualizar automaticamente pacotes instalados via APT, eu também traria o .snap dentro do .deb junto com o certificado de segurança e por fim adicionaria um marcador no sistema para remover o .snap junto caso o pacote .deb seja removido
Bônus
A ideia de misturar formatos veio do Deepin, até as primeiras releases do Deepin 20, ele fazia a mesma coisa com flatpaks