1 - Primeiramente, tenham em mente que não sou da área de TI, portanto talvez eu use aqui algum termo de forma errada, como o “runtime” no próprio título. Por “runtime” eu quero dizer qualquer software (mesmo que não seja realmente uma runtime…) que é usado como base para rodar um programa, como por exemplo o GTK-Runtime que é necessário pro Geany, Bluefish, StarDict, etc no Windows.
2 - Galera, talvez eu passe essa impressão, mas não pretendo mudar o mundo com este tópico. Na verdade o meu objetivo aqui é entender porque as coisas são como estão e por que não são diferentes.
3 - Desculpa, mas o texto é grande porque quero deixar bem claro meu questionamento, esse embasamento todo é até para vocês saberem como me responder.
Em 98% das vezes, o jeito de ser do Linux (me refiro ao modo como o Linux gerencia a instalação de programas) não me atrapalha uma vez que os programas nos repositórios em suas respectivas versões me atendem bem, mas tem hora que esse modelo é inconveniente, são 2% que, as vezes, fazem a diferença.
-
A primeira coisa que me vem a mente são programas antigos que não se encontram mais nos repositórios e/ou não são mais suportados pelas bibliotecas atuais, no meu caso é o espcon (um dicionário de esperanto) e o StarDict Editor, se não me engano ambos exigem o GTK 2, mas posso estar enganado; também tenho outro exemplo que vi esta semana no Reddit Brasil de um cara que queria ter instalado o XMMS no Linux, que exige o GTK 1. Para um usuário comum como eu, é muito complicado instalar esses programas de forma nativa, seus executáveis não rodam e até para compilá-los é complicado, consegui compilar o espcon, mas ficou um pouquinho bugado. No fim eu instalei o espcon e o StarDict Editor via Wine, o que é bizarro uma vez que ambos teoricamente têm versão para Linux.
-
A outra situação é de quando muitas vezes certas empresas deixam de lançar um software pro Linux por que falta uma padronização.
Sou contra o sistema de instalação tradicional do Linux?
Não, na verdade até o acho interessante. E como dá para esse sistema coexistir com outras formas de instalação (Flatpak, appimage e snap), na verdade eu ficaria muito decepcionado se as distribuições abandonassem esse modelo.
É como eu disse e repito, para 98% ou 99% dos casos esse modelo está bom.
O que eu acho do Flatpak, appimage e snap?
Não vou falar dos aspectos técnicos porque disso eu não entendo, só quero poder carregar o instalador/executável no pendrive (ou HD externo, que é o meu caso na verdade) e que esse instalador/executável não tenha um tamanho absurdo. Dei uma pesquisada nos tamanho que um programa pode ter nessas formas de empacotamento e aqui está o caso do VLC:
snap = 204 MB
flatpak = 78 MB
appimage = 53 MB
Instalador Windows = 40MB
Gosto mais do appimage não só pelo tamanho como também pela facilidade, você baixa um único arquivo e depois só manda executar. Nossa, comparado ao instalador do Windows, o snap é 5x maior (é esse o modelo que a Canonical que propagar?) e o flatpak tem quase o dobro do tamanho (não tão grave aqui, mas o dobro do tamanho seria bem ruim para um programa maior). o Appimage é um pouco maior, mas estou de boa com isso.
Por que que o instalador do Windows consegue poupar tanto espaço? O que impede de implementar esse modelo no Linux? Eu ACHO que sei a resposta. Acredito que, no Windows, as “runtimes” mais básicas já estejam muito bem estabelecidas e as outras “runtimes” que necessitam de uma instalação periódica são relativamente muito pequenas de forma que não causam incomodo, como as versões do NET. Framework e Visual C++. No Windows 10 você tem boas chances de instalar, sem problemas, um programa de 2005 por exemplo (ou a “runtime” atual tem retrocompatibilidade ou o Windows traz uma “runtime” antiga para rodar programas velhos, não sei); é claro que às vezes tem problemas de compatibilidade, especialmente com jogos, mas mesmo assim a situação é bem mais confortável do que no Linux, não tem nem comparação.
Então, eis a minha pergunta:
Que mantenha o sistema de instalação tradicional, mas não teria como implementar um sistema paralelo com “runtimes” estáveis que todo desenvolvedor seria sugerido a suportar? Vou citar um exemplo desse modelo hipotético:
Vamos dizer que lança o Ubuntu LTS agora e o GTK estável mais novo está na sua versão 3.4 (esse número foi chutado). Sei que um programa faz uso de vários componentes, não só o GTK (isso quando ele sequer usar o GTK), mas vamos nos limitar ao GTK aqui para facilitar o raciocínio. Se possível, o GTK-Runtime 3.4 poderia ser usado para rodar programas feitos no GTK 2, se não for possível seria muito fácil instalar (ou já teria instalado) a última versão estável do GTK-Runtime 2.x. Os desenvolvedores de programas, por sua vez, teriam a recomendação de criar seus programas para base no GTK 3.4 por uma questão de padronização, mas se for realmente necessário usar uma versão mais recente, então eles disponibilizariam também a runtime do GTK mais recente.
Não sei se meu modelo hipotético é bom, mas quero dizer algo igual ou próximo ao que é no Windows, algo simples para o usuário. Por que não há essa possibilidade no Linux?