Os pacotes Flatpak e Snap são mais populares do que nunca entre os usuários do Linux que não preferem mais pacotes binários nativos ou AppImages.
Principalmente por causa de sua facilidade de uso, integração com o centro de software, e a capacidade de obter as atualizações mais recentes do aplicativo sem complicações.
Você não precisa mais se preocupar com as dependências ao instalar um aplicativo.
Para alguns, as vantagens de segurança do sandboxing/isolamento também são um fator. Mas não discutiremos os detalhes disso aqui.
Não importa os benefícios do Flatpak e do Snap, quais são suas diferenças? O que você deve considerar usar? Neste artigo, exploramos como eles são distintos para ajudá-lo a decidir o que deseja usar.
1. Origem
O Snap foi desenvolvido pela Canonical para criar aplicativos para plataformas de IoT. O objetivo por trás do Snap sempre foi incentivar as atualizações de aplicativos e tornar as coisas mais fáceis para os desenvolvedores mantê-las quando comparadas aos pacotes deb.
Eventualmente, ele fez o seu caminho para aplicativos destinados a desktops (com GUI também).
Se você quiser explorar mais a história da Snap, recomendamos a leitura do post do blog de Alan Pope.
O Flatpak foi criado por Alexander Larsson, Engenheiro de Software Principal da Red Hat. É umprojeto independente de código aberto onde muitos desenvolvedores notáveis do GNOME, Fedora e Red Hat estão envolvidos.
O objetivo por trás disso era ter uma estrutura robusta para distribuir aplicativos de desktop Linux em várias distribuições.
Originalmente, era conhecido como xdg-app, e mais tarde renomeado para "Flatpak" em 2016.
Para obter informações mais interessantes sobre a história do Flatpak, dê uma olhada no post antigo de Alexander.
2. Casos de Uso
Cada formato de pacote tem suas vantagens. Alguns podem dizer: "por que precisamos disso"?
Precisamos de todos os formatos de pacote disponíveis. Assim, você pode optar por usar o que precisar de acordo com suas necessidades. Portanto, é essencial aprender onde e por que os pacotes Flatpak e Snap podem ser úteis.
O Flatpak é adaptado apenas para estações de trabalho Linux e computadores pessoais para executar aplicativos de desktop. Você pode explorar mais sobre isso em nosso recurso sobre o que é o Flatpak.
No entanto, os Snaps funcionam em sua área de trabalho e também podem ser usados para aplicativos de terminal focados no servidor.
Por exemplo, o Ubuntu Core, o sistema operacional para IoT, e o Edge são criados a partir de snaps para manter as coisas seguras e garantir atualizações confiáveis.
Até onde eu sei, o Flatpak não foi usado para nada semelhante por causa de sua abordagem diferente e caso de uso direcionado.
3. Tempo de inicialização
Sabe-se que os aplicativos Snap têm uma inicialização lenta em comparação com o Flatpak.
A Canonical vem trabalhando nisso há algum tempo, mas ainda era um problema ao publicar o artigo.
É claro que, na prática, nem todos os usuários podem notar ou se importar com a diferença. Mas, o consenso geral sobre o tempo de inicialização do aplicativo permanece melhor para o Flatpak em comparação com o Snap.
Por exemplo, iniciar o aplicativo Spotify como um Flatpak é mais rápido do que seu Snap. Mas pode ser subjetivo.
4. Desempenho
O desempenho de um aplicativo não se refere apenas à sua capacidade de resposta, mas também à sua estabilidade e ofertas de recursos.
Alguns aplicativos têm melhor desempenho como Snap e alguns como Flatpak.
Por exemplo, a versão Flatpak do GNOME Boxes não suporta compartilhamento de dispositivos em comparação com seu pacote Snap. Pode-se usar este exemplo para dizer que os Snaps são melhores.
No entanto, alguns sempre prefirem instalar o Spotify como um Flatpak em vez de Snap.
Então, você precisa testar seus aplicativos favoritos para perceber o que é melhor para você; ninguém tem uma vantagem clara aqui.
5. Disponibilidade e popularidade
Embora você possa instalar qualquer um deles em qualquer distribuição Linux, o Flatpak obtém uma vantagem por sua disponibilidade e suporte pronto para uso em mais distribuições quando comparado ao Snap.
Por exemplo, o Linux Mint vem com snap desativado, mas possui suporte Flatpak embutido.
Distribuições como Pop!_OS e Ubuntu MATE também oferecem suporte a Flatpak por padrão. Em outras palavras, você encontrará muitas distribuições Linux diferentes (além dos sabores do Ubuntu) que têm o Flatpak embutido por padrão.
No entanto, os Snaps são preferidos principalmente pelo Ubuntu da Canonical e seus sabores oficiais. Se você não estiver usando o Ubuntu ou seus sabores, consulte o nosso Guia Snap para configurá-lo.
Assim, pode-se dizer que a adoção do Flatpak para desktops Linux é muito mais ampla (se não necessariamente com uma base de usuários mais extensa).
Pode-se mencionar que o número de aplicativos disponíveis como Snap é maior. Embora essa fosse uma diferença sólida há alguns anos, a loja recomendada da Flatpak, Flathub, agora apresenta a maioria dos aplicativos essenciais.
6. Código Aberto vs. Código Fechado
Flatpak é totalmente open source.
Infelizmente, quando se trata de pacotes Snap, a resposta não é tão simples.
O Snap é um projeto de código aberto em sua essência, incluindo o snapd, o serviço em segundo plano que gerencia/instala aplicativos snap.
No entanto, o back-end dos snaps é proprietário e controlado pela Canonical sem qualquer envolvimento da comunidade.
Como usuário final, você não deve ter um problema com as partes de código fechado do Snap, desde que o aplicativo faça o trabalho.
Claro, o Flatpak será sua escolha se você preferir tecnologias completamente de código aberto.
7. Descentralizado vs. Centralizado
O Flatpak é de código aberto e adota uma abordagem descentralizada.
Embora tenhamos um famoso portal "Flathub" de onde a maioria dos usuários obtém seus aplicativos, o Flatpak permite ter várias lojas quando/se necessário.
Com o Snap, você está limitado à loja Snap da Canonical.
Alguns usuários preferem uma loja de aplicativos centralizada por conveniência. Então, você não deve ter nenhum problema com nenhum deles. No entanto, o Flatpak oferece uma vantagem para adicionar um repositório extra, se necessário.
8. Atualizações
Os aplicativos Snap são atualizados automaticamente por padrão. O usuário pode modificar quando e com que frequência as atualizações acontecem. Além disso, você pode manter e adiar atualizações para snaps selecionados.
Pelo contrário, os pacotes Flatpak não são atualizados automaticamente. Se você tiver integração do Flatpak com o centro de software, você será notificado sobre as atualizações disponíveis, mas ele não será atualizado com força.
Você sempre pode consultar nosso guia sobre atualização de pacotes Flatpak.
Com o Flatpak, você obtém mais controle por padrão. Mas, alguns usuários esquecem de atualizar os pacotes perdendo novos recursos ou correções de segurança/bug.
Portanto, se você deseja atualizações automáticas para os aplicativos que você usa ou deseja que o controle os atualize manualmente, isso influenciará o que você mais gosta.
9. Funcionamento
O Flatpak não precisa de privilégios de administrador para instalar aplicativos, mas o Snap precisa.
O Flatpak vem com sandboxing ativado por padrão. Ele usa o recurso namespaces do Linux Kernel para sandboxing, enquanto o Snap utiliza AppArmour.
Você pode explorar as duas documentações do desenvolvedor para saber mais. Mas, esses dois pontos-chave podem influenciar a escolha de um deles para o seu caso de uso.
10. Perspectiva do mantenedor
Ao passar por fóruns e tópicos do Reddit antes de escrever este artigo, encontramos alguns insights interessantes dos mantenedores de aplicativos. Alguns deles incluem:
- Snaps são mais fáceis de manter/construir em comparação com pacotes Flatpak.
- A segurança do snap é um pouco avançada.
- Com o Flathub como loja do Flatpak, os mantenedores recebem ajuda de vários desenvolvedores para testar e melhorar os Flatpaks.
É claro que, para mais informações técnicas e diferenças, as documentações serão um ótimo lugar para começar.
Qual você prefere? Flatpak ou Snap? E por quê? Compartilhe seus pensamentos na seção de comentários abaixo.