História do Flatpak

Via blog do Alexander Larsson.

História antiga

Aproximadamente em 2007 Alexander Larsson começa “brincar” com um sistema de imagem de aplicativos chamado “Klik” pois tinha algumas ideias interessantes. No entanto, não ficou muito satisfeito com alguns detalhes técnicos. Um dia na praia teve uma ideia interessante de um hack que poderia melhorar isso.

Avançando até agosto de 2007, quando lancou o Glick, com base nessas ideias. O nome é uma espécie de trocadilho com o antigo esquema de nomenclatura com primeira letra do KDE / GNOME, embora nem Klikl nem Glick sejam realmente específicos para desktop.

Glick era um sistema de imagem de arquivo único. Ele é anterior a API’s de contêiner de kernel. Portanto usa “Fuse” e alguns hacks estranhos.

Ele não se integra com o desktop de forma alguma e os aplicativos precisam decidir o que agrupar, tendo que usar bibliotecas do sistema para as coisas não agrupadas. Isso significa que não é muito robusto, mas é totalmente autônomo e não precisa de muitos pacotes pré-instalados no sistema host.

Até aqui era basicamente o que o Appimage é ainda hoje!

Por Volta de 2011, o suporte inicial para namespaces do Kernel havia chegado e começou a ser útil. Usando isso, poderia evitar alguns dos hacks que o experimento anterior usou. Então se interessou em empacotar novamente e lançou o Glick 2 baseado nisso.

O Glick 2 requer que algum software seja instalado no host, o que permite uma melhor integração com o sistema. Por exemplo, você pode “instalar” pacotes colocando o arquivo em um local conhecido e isso permite algum nível de integração com o desktop. Glick 2 também usa checksums SHA1 para tentar desduplicar* automaticamente os arquivos compartilhados entre os aplicativos. Aqui podemos ver uma versão inicial das ideias que compõem o OStree.

Agrupar usando namespaces era muito mais robusto do que os hacks anteriores, mas ainda dependia do sistema para as bibliotecas centrais que o aplicativo não agrupa. Portanto, um app as vezes funcionava em uma distro, mas não em outra.

Um problema nos appimage’s até hoje!

Por volta dessa época, postou um blog sobre como achava que o pacote de aplicativos combinado com imagens de sistema operacional somente leitura, pode ser um modelo realmente bom para um sistema operacional. Essa ideia é muito semelhante ao que o Silverblue / Project Atomic está fazendo agora.

Contêineres, Portais e Runtimes

Alguns anos depois, por volta de 2013, o suporte do Kernel para contêineres estava começando a se formar e o Docker chegou ao mercado. Trabalhou muito no Docker inicial, como transferi-lo do aufs para rodar no RHEL.

Por volta dessa época, também participou do Hackfest GNOME Developer Experience em Bruxelas, onde um dos tópicos era implantação de aplicativos e sandbox. Das discussões lá (e das experiências anteriores) surgiram muitas das ideias centrais do Flatpak, como runtimes, sandbox e portais.

Em 2014, a primeira versão (então chamada de xdg-app) foi lançada. O atual Flatpak é muito mais polido, mas a versão inicial do xdg-app ainda é muito reconhecível ainda hoje.

Xdg-app usou OStree para baixar, armazenar e desduplicar aplicativos. Ele usa namespaces de Kernel (por meio de um helper chamado xdg-app-helper) para fazer contêineres sem privilégios. Ele tem uma divisão entre aplicativos e runtime que permitem que os app’s sejam portáveis entre distros de uma maneira muito robusta, enquanto ainda limita a duplicação entre aplicativos e permite atualizações de segurança.

Também há integração com desktop (ícones, arquivos de desktop, tipos MIME, etc) e alguns códigos de portal muito antigos podem ser vistos.

A grande renomeação

O nome xdg-app foi apenas algo que escolhi para o primeiro commit sem muita consideração e não era muito bom. No entanto, os nomes são difíceis e passamos muito tempo tentando encontrar outro, eventualmente optando por “Flatpak” (com o logotipo acima). A versão 0.6.0 em maio de 2016 foi a primeira com o novo nome.

A 0.6 também foi a primeira que dividiu o indicador de contêiner sem privilégios (xdg-app-helper) em seu próprio projeto, agora conhecido como BubbleWrap, hospedados pelo Project Atomic.

Logo depois disso, tivemos o primeiro lançamento do xdg-desktop-portal, que é a implementação do lado do host com a ideia de portal, permitindo que os aplicativos em sandbox saiam com segurança da sandbox de maneira controlada.

Aversão 0.8.0, lançada em dezembro de 2016 foi a primeira versão estável de longo prazo, que foi incluída no Debian Strech e RHEL 7. Desde então, tivemos outra série de versões estáveis chamada 0.10.x.

Queremos aplicativos!

Flatpak sempre foi um sistema descentralizado, em que qualquer um pode hospedar seus próprios aplicativos e estar em condições de igualdade com todos os outros. No entanto, embora esse seja um recurso importante, ele leva a uma experiência inicial ruim, tanto para o usuários (difícil de encontrar) quanto para o desenvolvedor (precisam manter seu próprio repositório).

Para resolver isso, iniciamos o projeto Flathub, que é um único repositório onde você pode encontrar a maioria dos aplicativos. Atualmente se encontra com mais de 700 aplicativos e um grupo diversificado de desenvolvedores.

O Flatpak atende a pequena demanda que prefere o modo decentralizado de distribuição de app’s. Mas oferece uma baita solução que possibilita seu app aparecer na loja de várias distribuições hoje em dia, via Flathub.

Avante e para cima!

Nenhum software foi concluído ou está livre de erros, mas tínhamos uma lista de coisas principais que queriam antes de lançar o Flatpak 1.0 (isso em 2018).

O principal trabalho daqui para a frente é dar mais atenção ao portal, tanto em termos de adicionar portais conforme necessário e aplicações/bibliotecas para facilitar o uso deles. Desta forma, podemos avançar lentamente para o futuro, onde a maioria dos aplicativos são em sandbox.

Veja também o atual status do suporte ao Flatpak na maioria das distribuições Linux.

Se deseja me dar sugestões, mande para fastos2016@gmail.com ou nas redes sociais.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Blog no WordPress.com.

Acima ↑

%d blogueiros gostam disto: