Ubuntu stellt demnächst Firefox auf Snap um. In der Community kochen mal wieder die Gemüter hoch. Anstelle mich immer zu wiederholen, fasse ich hier mal alle relevanten Punkte zusammen. Das Ziel ist ein möglichst sachlicher Überblick
Es gibt unterschiedliche Arten wie Betriebssysteme Software organisieren. Windows und macOS haben lange auf separate Installationsroutinen für einzelne Programme gesetzt, die auf ein Betriebssystem mit eigener Updateroutine installiert werden. Heute drängen beide mehr oder minder erfolgreich auf die Adaption des App Store-Prinzips auch für den Desktop.
Die verschiedenen Linux-Distributionen haben stattdessen aus unterschiedlichen Gründen eine zentrale Paketverwaltung für die Installation und Aktualisierung des gesamten Systems, letztlich vom Kernel bis zum Taschenrechner, entwickelt. Dabei gab und gibt es unterschiedliche Spielarten, aber das System funktioniert bei fast allen Distributionen gleich.
Das hat nichts mit Open Source vs. proprietäre Software zu tun, was man schon daran sehen kann, dass die verschiedenen BSD-Varianten noch mal ganz andere Modelle aufgezogen haben.
Ganz zentral ist, dass es kein entweder/oder gibt. Die Entwickler von Flatpak respektive Snap haben nie die Absicht geäußert, klassische Paketverwaltungen gänzlich zu ersetzen und selbst wenn eine Distribution komplett bei klassischen Paketverwaltungen bleiben möchte, kommt man vermutlich zukünftig zumindest bei manchen proprietären Programmen nicht um die Nutzung von Flatpak bzw. Snap umhin.
Die Sinnhaftigkeit von zwei neuen Lösungen, also Flatpak und Snap, kann man infrage stellen. Es wird hier keine Analyse der Unterschiede der einzelnen beiden Lösungen geben und auch keine Prognose abgegeben, ob beide dauerhaft überleben, oder nur eines von beiden sich durchsetzt. Neben Flatpak und Snap gibt es mit AppImages und Container-Ansätzen weitere Lösungen, die hier nicht berücksichtigt werden.
Paketverwaltung
Kennzeichen der klassischen Paketverwaltung:
- Die Paketverwaltung dient zur zentralen Installation und Aktualisierung aller Bestandteile des gesamten Systems.
- Der Bezug erfolgt heute i. d. R. über zentrale Repositorien und erfordert eine Internetverbindung.
- Programme werden nach Möglichkeit in ihre Bestandteile zerlegt und z. B. Bibliotheken oder Sprachdateien separiert. Eine Abhängigkeitsauflösung erfolgt durch die Paketverwaltung und sorgt dafür, dass alle notwendigen Bestandteile installiert werden.
- Rechte werden über Benutzer- und Gruppenrechte, sowie Dateisystemberechtigungen gesteuert.
Vorteile der klassischen Paketverwaltung:
- Programme benötigen keine separaten Updateroutinen.
- Eine Distribution ist eine aufeinander abgestimmte Gesamtkomposition, in der idealerweise alles perfekt harmoniert und getestet ist.
- Die Distributoren können Programme zielgenau patchen und gezielt bestimmte Versionen nutzen.
- Durch die Aufspaltung der Programme und Abhängigkeiten können einzelne Bibliotheken von vielen Programmen genutzt werden. Idealerweise ist keine Bibliothek doppelt installiert.
Nachteile der klassischen Paketverwaltung:
- Das System führt zu einem Duopol aus Rolling Release Distributionen (alles vom Kernel bis zum Taschenrechner wird fortlaufend aktualisiert) und stabilen Distributionen (nur Sicherheitsupdates und Fehlerbehebungen für alles vom Kernel bis zum Taschenrechner).
- Je älter die Basis, desto schwieriger bis ganz unmöglich ist die Aktualisierung einzelner Bestandteile, weil Abhängigkeiten auf gemeinsam genutzte Bestandteile irgendwann nicht mehr erfüllt werden können.
- Aufgrund der komplexen Abhängigkeitsauflösung ist es nicht komfortabel Pakete herunterladen und offline zu installieren.
- Jedes Programm muss für jede Distribution neu paketiert werden. Das bedeutet angesichts der aktuellen Anzahl an Distributionen, dass die Arbeit bis zu 100 Mal wiederholt wird.
- Entwickler müssen hoffen, dass ihr Programm von jeder wichtigen Distribution paketiert und damit den Endanwendern zur Verfügung gestellt wird.
- Entwickler haben Schwierigkeiten zu testen und Fehler zu reproduzieren, weil sie keinen Einfluss darauf haben, welche Bibliotheken und welchen Versionen vorliegen.
- Paketverwaltung sind sehr mächtige Systeme und lassen sich nur ungenügend mit einfachen App-Store-ähnlichen Oberflächen administrieren.
Neue Formate Flatpak / Snap
Kennzeichen der neuen Formate Flatpak / Snap:
- Dient konzeptionell nur dazu Programme und nicht das gesamte System zu verwalten.
- Nur Snap: Der Bezug erfolgt über ein zentrales Repositorium unter der Kontrolle von Canonical.
- Nur Flatpak: Distributoren können eigene Repositorien betreiben, faktisch gibt es mit Flathub eine übergreifende zentrale Bezugsplattform.
- Rechteverwaltung mittels einer Sandbox-Lösung mit spezielle Zugriffsrechten (AppArmor bei Snap; Portals bei Flatpak)
- Programme im Flatpak / Snap-Format bringen viele Bibliotheken bereits mit, nur wenige gemeinsam genutzte Bestandteile und keine ausdifferenzierte Abhängigkeitsverwaltung.
Vorteile der neuen Formate Flatpak / Snap:
- Flatpaks / Snaps können unabhängig von der Betriebssystem-Basis aktualisiert werden.
- Ein Snap oder Flatpak muss nur 1 Mal erstellt werden und kann anschließend unter allen Distributionen genutzt werden.
- Flatpaks / Snaps bringen die Bibliotheken in exakt den Versionen mit, für die sie getestet wurden.
- Flatpaks / Snaps ermöglichen es unterschiedliche Versionen von Programmen gleichzeitig zu installieren.
- Es gibt eine moderne Zugriffssteuerung, um Programmen ggf. den Zugriff auf das Dateisystem, die Kamera, das Mikrofont etc. pp. zu beschränken.
- Flatpak / Snap ermöglicht in Kombination mit anderen Lösungen gänzlich neue Typen von Distributionen wie z. B. Fedora Silverblue oder openSUSE MicroOS.
Nachteile der neuen Formate Flatpak / Snap:
- Bei Sicherheitsupdates für einzelne Bibliotheken müssen alle Flatpaks / Snaps aktualisiert werden, die diese enthalten. Es besteht das Risiko, dass dies nicht konsequent erfolgt.
- Die Verantwortung für die Prüfung der eingereichten Flatpaks / Snaps liegt bei Flathub respektive Snapcraft.io. Es bestehen Zweifel an der Qualität dieser Prüfung.
- Ein höherer Speicherplatzverbrauch, da letztlich dieselbe Bibliothek (ggf. in unterschiedlichen Versionen) mehrfach installiert wird. Das System ist weniger effizient in dieser Richtung.
- Kinderkrankheiten: Beide Formate sind immer noch nicht ausgereift. Es gab und gibt verschiedentlich Probleme mit Performance und der Steuerung der neuen Zugriffsrechte.
„Kinderkrankheiten: Beide Formate sind immer noch nicht ausgereift….“ Das ist leider richtig. Aber, sind wir jetzt bei Windows, wo das Produkt erst beim Kunden reift? Ich werde mir -vielleicht- Flatpaks oder Snaps antun, wenn beides wirklich so ausgereift sind wie eine gelbe Banane – vorher nicht.
Nun, die Paketverwaltung ist auch „beim Kunden“ gereift. Langjährige Linux-Nutzer können sich noch an Abhängigkeitshöllen und dpkg orphaned Geschichte etc. pp. erinnern. Es ist nur normal, dass eine vergleichsweise neue Lösung nicht so ausgereift ist, wie eine Lösung, die letztlich seit 25 Jahren entwickelt wird. Letztere hat dafür ziemlich viele Pfadabhängigkeiten bzw. Ballast angesammelt.
OK, ich gebe der ganzen Sache noch 30 Jahre, dann bin ich 83 und probiere es noch einmal aus, so lange bleibe ich bei Debian. 😉
Bei den Vorteilen der neuen Formate hast Du vergessen, dass sie es erlauben, verschiedene Versionen eines Pakets parallel zu betreiben, was bei der herkömmlichen Paketverwaltung eher die Ausnahme ist (etwa bei Python).
Danke für den Hinweis, habe ich nachgetragen.
Was ich an einer Ablehnungshaltung gegenüber Snap, Flatpak & Co immer so schizophren finde: jedes OS für ein Mobiltelephon fährt genau die gleiche Strategie, also Trennung des eigentlichen OS und der installierten Nutzersoftware – und das erfolgreich und bewährt (bzw. ich würde behaupten, dass Snap, Flatpak & Co davon „inspiriet“ sind). D.h.: jeder, der ein Smartphone hat (und damit vermutlich der allergrößte Teil der Linux-Nutzer) nutzt so was auf seine Smartphone täglich – findet es aber auf dem Linux-Rechner total daneben.
Naja, beim Mobiltelefon ist es ja aber meist auch genau umgekehrt. Ein ungepflegtes Grundsystem, für das es schon bald keine Updates mehr gibt, und ein zentraler Appstore, wo Anwendungen meist zentral aktualisiert werden. Davon abgesehen, gibt es bei diesen Apps ja eine unüberschaubare Anzahl die mit Trackern, Werbung und Kostenfallen verseucht sind, closed source sind ohnehin mehr als 95%.
Als positives Beispiel würde ich das daher nicht werten, es gibt halt schlicht kaum alternativen.
Naja was Snap/Flatpak im Desktopbereich ist, ist Docker & Co im Serverbereich. Hoher Aufwand durch Paketierung, da ist es einfacher direkt die komplette Entwicklungsumgebung mit auszuliefern.
Leider denken viele nur daran, das eigene Produkt zu pflegen aber nicht die notwendigen Abhängigkeiten. Warum auch, „es läuft doch“.
Anbieter wie Mozilla werden vermutlich auch die Abhängigkeiten pflegen/aktualisieren aber sonst wird es vermutlich bald haufenweise gammlige Flatpaks und Snaps geben^^
Vielleicht. Wir wissen es noch nicht. Allerdings mag ich an der Argumentation nicht, dass die klass. Paketverwaltung hier auf einen Sockel gestellt wird. Es ist ja nicht so, dass dort immer alles perfekt gepflegt wäre. Selbst bei Debian „gammelte“ es zwischendurch in einigen Bereichen ganz schön, von Ubuntus universe ganz zu schweigen.
Einen unterschied sehe ich noch in der Nutzung. Ein wesentlicher Punkt, warum die Verbreitung von Maleware unter Linux so gering ist, ist meiner Meinung nach die zentrale Paketverwaltung, es gibt einfach viel weniger Wege, Software aus unsicheren Quellen zu installieren, und die meisten Linux Nutzer sind sich der Risken von Fremdquellen sehr bewusst, auch wenn Ubuntu dieses Prinzip durch die teilweise inflationäre Nutzung von ppa schon aufgeweicht hat.
Mit Flatpak bzw. Snaps wird es vermutlich viel üblicher werden, sie seine Software wie unter Windows aus diversen teils dubiosen Quellen zusammenzusammeln, einfach weil es damit viel einfacher ist. Natürlich hat man das weiterhin selbst in der Hand, aber ich denke schon das der Mythos der Virensicherheit durch die neuen Formate auf die Probe gestellt werden wird.
Den Charme, bei Bedarf unkompliziert eine aktuelle Softwareversion installieren zu können, ohne gleich das ganze System upzugraden, sehe ich aber natürlich auch.
Ich werde aber weiterhin auf Distributionen setzen, die umfangreiche eigene klassische Paketquellen pflegen, und Flats/Snaps nur sparsam einsetzen. Für mein Anwendungsprofil ist gut abgehangene Software meist völlig ausreichend, ich vermisse selten etwas und empfinde es auch als sehr angenehm, das gesamte System mit einem einzigen Kommando aktualisieren zu können, ohne X autoupdater und möglicherweise ungepflegte Bibliotheken im Blick behalten zu müssen.
Wie kommst du auf diese Vermutung? Bisher sind die neuen Systeme doch ganz im Gegenteil viel zentralisierter. Mit Flathub und Snapcraft.io gibt es zwei zentrale Repositorien. Für Flatpak dann noch ein paar Distributions-spezifische wie von Fedora oder elementary.
Ich gebe zu, es war eine reine Annahme. Offenbar muss ich doch mal meine ideologie Brille absetzen und mich genauer damit beschäftigen.
firefox per snap bringt die gleichen Nachteile, wie auch chromium per snap: kein Zugriff auf /tmp, keine eigenen Systemicons oder GTK-themes, kein öffnen der Deteien mit einem Programm (also, wenn die Dateien erst irgendwo nach /tmp gezogen werden und dann geöffnet werden).
Das eine ist Spielerei. Da ich nie Themes ändere bemerke ich so etwas nicht. Zumindest bei Flatpaks scheint das aber möglich zu sein. Dazu müssen nur zum systemtheme identische Themes als Flatpaks installiert werden. Die Einschränkungen beim Dateizugriff ist vor allem beim Browser ein massiver Gewinn für die Sicherheit. Auch ohne Flatpak / Snap beschneide ich solche Programme mittels AppArmor massiv.
Ich wundere mich, warum gerade Firefox als Killer-App gewählt wurde. Das ist ein dickes Schiff mit zahlreichen nativen Abhängigkeiten, die dann alle in das Snap gebündelt werden müssen. Bei einem Electron basierten Messenger z.B. finde ich macht das Konzept viel mehr Sinn und da fällt auch nicht auf, das Icons/Themes alle nicht stimmig sind und das Ganze in eine Sandbox gesperrt wurde.
Die Runtimes in Flatpak enthalten fast alle Bibliotheken, da sollte dann ein Update ausreichen. Files, die eine gleiche SHA haben werden auch nur einmal installiert und dann mittels eines Hard links verdrahtet. Das heißt, dass sie selbst beim linken nur einmal in den Speicher geladen werden. Wenn man dann aber unterschiedliche Versionen hat, sind es weiter zwei Dateien. Das hat sich den Vorteil, dass das Verhalten der Bibliotheken besser getestet ist und sich nicht stllerweise mal ändert.
Was wäre denn genau der Unterschied zwischen Snap und Flatpak?