Snap, Flatpak, AppImage i co z tego dziś mamy

Pamiętacie mroczne czasy pod peleryną opiekunów pakietów, którzy mogli wykazać się raz na rok – dwa lata i zaktualizować jakiś program? Pamiętacie przełom jaki dokonał się z pojawieniem się Arch Linuksa, repozytoriów PPA Ubuntu? Owszem, wprowadziło to wszystko pewną dozę bałaganu, ale jeżeli ktoś się orientował co i jak może popsuć zależności, dawał sobie radę. Niemniej, ogół społeczności oczekiwał rozwiązań które wprowadzą łatwość uruchamiania najnowszego oprogramowania ot tak po prostu, bez czekania na opiekuna pakietów lub PPA. W świecie OpenSource nie ma rzeczy niemożliwych. Szkoda tylko, że na wskutek tego stworzono od razu trzy różne „uniwersalne” formaty.

AppImage – pobierasz, klikasz, używasz
Snap (od 2014), Flatpak (od 2014), AppImage (od 2004 (sic!)) – formaty, które są z nami już od kilku lat. Przeciąganie liny pomiędzy nimi trwa do dnia dzisiejszego, ale co dla zwykłego użytkownika jest najbardziej użyteczne i elastyczne? Prawda jest bardziej brutalna niż byśmy tego oczekiwali. Wygoda, łatwość, dostępność – to wszystko czego oczekuje przeciętny użytkownik. Zupełnie gdzieś pozostają ideologie, parametry techniczne i tak dalej. Czy po tylu latach coś zbliża się do tych oczekiwań?

Założenia „uniwersalnych” formatów są takie, że każdy deweloper powinien w prosty sposób przygotować taką paczkę (vide .exe dla Windowsa) i udostępnić ją gdziekolwiek. Użytkownik końcowy powinien do takiej paczki mieć dostęp niemal natychmiastowy w dniu premiery nowej wersji programu. Co więcej, uruchomienie powinno nastąpić po nieskomplikowanych czynnościach, jak np. dwuklik. Czy coś z tych wzniosłych ideałów zostało przemycone do naszej rzeczywistości? No cóż, gdzie kucharek sześć w trzech osobach, tam nie ma co jeść.

Bowiem miało być pięknie, a wszystko jak zawsze. Są trzy formaty z których da się korzystać pod warunkiem… Spełnienia zależności i zainstalowania odpowiedniego menedżera wspomnianych paczek (nie uprzedzając faktów). Czyli powstały kolejne repozytoria gdzie te paczki mogą wylądować oraz kolejne menedżery pakietów, które potrafią je zainstalować. I czy nam przez to jest łatwiej? Czy łatwiej jest twórcom programów? Powiem tak – trzeba mieć ogromne pokłady wiary, aby obecne rozwiązania uznać za zbawienie.

SnapFlatpakAppImage
SnapFlatpakAppImage
Używalne bez dodatkowego oprogramowanianienietak
Centralne repozytoriumtaktaknie
Automatyczne aktualizacjetaktaknie
Niezależnośćnie (Canonical)nie (Red Hat)tak (Społeczność)
Bezpieczeństwo i piaskownicatak (tylko AppArmor)tak (tylko Bubblewrap)tak (AppArmor, FireJail, Bubblewrap)
Uruchamianie bez piaskownicynienietak
Współdzielenie bibliotekpodstawowepełnenie
Integracja tematyczna z systememnienietak

Flatpak i jego koncepcja
Powyższe zestawienie jest zbiorem najbardziej pożądanych przez większość osób cech uniwersalnego paczkowania. W skrócie – czy paczkę dla Linuksa twórcy programu mogą umieścić na stronie projektu (obok plików dla Windowsa i macOS) i po jej pobraniu będzie można po prostu kliknąć i ją uruchomić. Z powyższego wynika, że taka sztuczka uda się tylko z AppImage. Niestety, pozostałe formaty wymagają zgłoszenia naszej paczki do repozytorium (zatwierdzenia) i obsługi przez strony trzecie. Ale trudno jest odmówić centralnemu repozytorium ogromnej przewagi jaką są automatyczne aktualizacje. Ale diabeł ponownie tkwi w szczegółach. O ile AppImage zintegruje się z wyglądem naszego pulpitu, o tyle Snap już nie a Flatpak tylko pod warunkiem, że używany przez nas temat został „zflatpakowany”. Czyha też na nas fakt niemoralnie dużych objętości takich paczek – np. LibreOffice zajmuje około 205MB (AppImage), 466MB (Snap), 570MB (Flatpak). Jednak w przypadku dwóch ostatnich rozwiązań, część bibliotek będzie w przyszłości użyte również dla innych programów.

Zatem reasumując. Twórcy nadal muszę przechodzić nieżyciowe procedury (vide opis jak stworzyć i zgłosić coś do repozytorium Flatpak). Użytkownik nadal musi organizować odpowiednie oprogramowanie (Menedżer pakietów) które obsłuży mu uniwersalne formaty. Jeżeli nawet skupimy się na AppImage które jest najmniej uciążliwe, to wyobraźcie sobie bałagan w systemie za pół roku. Bo AppImage się nie zaktualizują automatycznie i wszystko trzeba robić ręcznie.

Na dzień dzisiejszy w zbiorczym AppImageHub znajduje się 276 paczek. W przypadku uAppExplorer dla paczek Snap jest ich tam 1343 sztuk. Flashub udostępnia zaś około 200 paczek Flatpak.

Co wybrać? Najrozsądniej jest polegać na własnych potrzebach i na własnym głosie rozsądku. Jakkolwiek powyższe paczki rozwiązują w pewnym stopniu problem „przenoszenia” programów pomiędzy dystrybucjami bez konieczności rekompilacji, to w ostatecznym rozrachunku są dość niewygodne w użyciu. Duża objętość, mizerna integracja z systemem a w niektórych przypadkach brak automatycznej aktualizacji. Dla twórców oprogramowania jest to jakieś rozwiązanie – jeżeli uda im się przebrnąć przez niuanse tworzenia takich paczek (Github wydatnie w tym pomaga), to za jednym ruchem i za jedną paczką mają ogarnięte niemal wszystkie dystrybucje. Gra jest zatem warta świeczki. A nam pozostaje traktować powyższe jako doraźną formę szybkiego dostępu do najświeższego oprogramowania. A potem pozostaje spokojnie zaczekać, aż zostanie przygotowana standardowa paczka do standardowych repozytoriów.