Sim, eu não tô brincando:
Apesar de serem bem diferentes as duas formas de distribuição descendem (não no sentido de serem forks) de um mesmo projeto o Klik.
Klik
O Klik foi criado em 2004 por Simon Peter. e constituía em duas partes, o servidor armazenava receitas para a construção de programas e o cliente gerava uma imagem permitia o aplicativo ser executado no sistema, o klik também removia pacotes e arquivos desnecessários da imagem gerando imagens relativamente pequenas,o interessante é que tudo acontecia através da URL do navegador, você clicava e o programa era instalado (similar ao apt-url) apesar de simples e prático tinha 2 problemas:
- Essa abordagem fazia apenas o servidor do klik ser confiável
- Dada a forma como o linux funcionava na época apenas 8 apps por vez e isso se você não estivesse trabalhando com outros arquivos de imagens
Mas mesmo assim o klik foi bem popular e foi o meio de distribuição de apps universal até 2011
Glick
Nesse meio tempo Alexander Larsson no verão de 2007 na praia teve ideias para melhorar o Glick, ele corrigia as limitações mas ao mesmo tempo trazia outras, ao contrário do Klik o Glick precisava ser feito a a partir dos fontes com a seguinte flag prefix no passo configure:
configure --prefix "/proc/self/fd/1023"
Não tinha nenhum tipo de integração com o sistema além de serem desnecessariamente grandes, devido ao baixo numero de referências fora do gnome.org ou relacionados ao flatpak imagino que apesar de ser tecnicamente superior ele não chegou a ser popular [posso estar errado], note que até então Flatpak e AppImages eram imagens
Glick2 e PortableLinuxApps
Com o fim do Klik e as novas implementações no Linux nascem as duas “mães” dos projetos. O Glick passou a ser “dividido” em dois sendo a aplicação em si e o cliente (mais ou menos como ocorre com o Flatpak hoje só que sem runtimes o Glick 2 também passou a compartilhar dependências indexando elas pelo hash SHA-1, no entanto o Glick 2 era apenas uma prova de conceito segundo o próprio Alexander Larsson
Paralelo a isso o criador do Klik criou o PortableLinuxApps com o mesmo propósito de antes mas agora baseado em FUSE (eliminando o limite de 8 execuções simultâneas), distribuído de forma descentralizada e baseados em .iso, o mecanismo virou febre tendo alcançado mais de 400 apps sendo que boa parte deles eram jogos, isso entre 2011 e 2013.
AppImage
Em 2013 o projeto é renomeado PortableLinuxApp recebe o nome de AppImage e ganhou a extensão característica e uma nova especificação e organização interna e o suporte a integração via daemon, nesse período e sofreu uma “explosão” e passou a ter uma maior visibilidade incluindo o electron que adicionou o AppImage como alvo
Em 2016 o AppImage recebe a padronização atual e passa a usar SquashFS nesse periodo também é criado o “pkg2appimage” cuja função é similar ao Klik mas não funciona no Browser e é descentralizado suportando arquivos offline, hoje existem 953 apps que estão indexados numa hub, mas pelo menos 1200 programas estão disponíveis no formatos
Flatpak
Em 2014 Larsson lança o xdg-app que OSTree para baixar, armazenar e deduplicar arquivos de aplicativos e traz um sanbox não privilegiado (o xdg-app-helper) para executar os aplicativos, ele também separou aplicativos de runtimes fazendo com que o aplicativo seja executado no mesmo ambiente que foi desenvolvido, também foi aprimorado a integração com o sistema mas a integração com temas.drivers de vídeo e alguns codecs, ainda requerem que os mesmos sejam instalados.
Em maio de 2016 ocorre “A grande renomeação” onde o “xdg-app” passa a se chamar “Flatpak” l, nesse ano também ocorre a separação dos repositórios do Flatpak e xdg-app-helper que passa a se chamar BubbleWrap, mas não teve nenhuma mudança estrutural
Em dezembro de 2016 é lançada a primeira versão estável
Links uteis:
- https://people.gnome.org/~alexl/glick/
- https://people.gnome.org/~alexl/glick2/
- Flatpak – a history – Alexander Larsson
- https://appimage.github.io/
- Introduction — AppImage documentation (todos os links)
- AppImage - Wikipedia
- Flatpak - Wikipedia
(Obs eu coloquei as referências pelas abas do navegador, posso ter esquecido alguma eventualmente)