Ubuntu 20.04 integriert Snaps stärker als zuvor in das Gesamtsystem. Während Ubuntu wie Debian eigentlich .debs benutzt, um Programme und Updates zu verteilen, werden jetzt mehr Teile per Snap ausgeliefert. Und das ist eigentlich eine tolle Sache: Denn Snaps sind nicht auf Ubuntu beschränkt. Sie können auch auf anderen Distributionen laufen. Zudem enthalten sie ihre Abhängigkeiten, dass Software im Laufe der Zeit auf neuen Linuxumgebungen nicht mehr startet wird dadurch gelöst oder zumindest minimiert. Zudem waren .debs nicht besonders einfach zu bauen. In der Hinsicht sind Snaps ähnlich wie Flatpaks oder das hervorragende AppImage eine gute Verbesserung. Ich bin ein Fan des Konzepts.
Aber es gibt auch Nachteile. Manche sind konzeptbedingt, andere betreffen speziell die Umsetzung von snap. Um die soll es hier gehen.
Die Problematik
Es gab jetzt in kurzer Zeit mindestens zwei populäre Artikel samt Thread auf Hacker News, die zusammen Probleme mit Snaps überzeugen vortragen. Der erste war Disabling Snaps in Ubuntu 20.04 mit dieser Diskussion, der zweite war Ubuntu 20.04 LTS’ snap obsession has snapped me off of it mit dieser.
Das Hauptproblem sind die Autoupdates. Snaps auf Ubuntu aktualisieren sich selbst. Sicherheitstechnisch begrüßenswert hat das einen Rattenschwanz von Problemen:
- Snaps können ohne Vorwarnung und Lösung kaputtgehen. Wenn ein Snap-Ersteller ein fehlerhaftes Update veröffentlicht, bricht die Software bei all ihren Nutzern, ohne dass Nutzer das Update verhindern können.
- Wie immer bei Autoupdates können sie im falschen Zeitpunkt auftauchen. Während einer wichtigen Präsentation beispielsweise soll der dafür genutzte Browser besser nicht updaten und dann einen Neustart einfordern. Mitten im Arbeitsflow gilt das gleiche für jede andere Software.
- Nicht immer ist Traffic unbegrenzt verfügbar. Hänge ich am mobilen Internet, will ich wohl kaum, dass mein begrenztes Volumen von Snaps aufgefressen wird.
Diese Argumente sind für mich völlig überzeugend. Snaps, da jetzt Teil des Distribution, sollten genau wie .debs nur auf Nutzeranforderung (zu der das System eventuell aufforderte) aktualisiert werden. Leider verweigert sich das Projekt dagegen. kikoreis nennt drei Argumente pro autoupdates:
- Browsers machen das sowieso schon.
- Ubuntu macht das sowieso schon, seit 16.04 LTS
- Snaps brauchen keine Rootrechte und ihre Updates sind daher weniger problematisch
Alle diese Argumente sind nicht korrekt. Browsers updaten sich selbst, aber eben nicht unter Linux – da macht das die Paketverwaltung unter Kontrolle des Nutzers. Ubuntu auf meinem Laptop im Büro hatte mich auch nach 2016 noch wegen der Updates gefragt. Und ob Updates mit oder ohne Rootrechte durchgeführt werden ändert an ihrer Problematik rein gar nichts.
Vor allem geht es am Thema vorbei: die Argumente adressieren keines der Probleme. Das Ursprungsproblem ist fehlende Konfigurierbarkeit. Um Nutzerbedürfnisse zu befriedigen und die Probleme zu lösen müssten die Autoupdates konfigurierbar sein. Sind sie es nicht, ist die Lösung ungeeignet.
In den Diskussionen kristallisieren sich weitere Probleme heraus. Eines davon finde ich beachtenswert: Ubuntu legt ~/snap an. Zwar ist klar, dass Snap ins Benutzerverzeichnis schreiben muss. Aber andere Software und auch proprietäre wie Steam ist wesentlich höflicher und versteckt sich, denn das Benutzerverzeichnis und sein Inhalt gehört dem Nutzer, der seine Organisation weitestgehend frei wählen darf. So liegt Steam unter ~/.local/share/Steam/. Genauso hätte es sich für Snap gehört.
Ubuntu hat weiterhin ein Problem mit fehlender Nutzerzentrierung
Es ist so schade, dass Canonical weiterhin seine Nutzerfeindlichkeit pflegt. Es war ja mal ganz anders: Linux for human beings wurde als Auftrag an größtmögliche Nutzerfreundlichkeit verstanden. Im Laufe der Zeit wurde daraus ein immer wieder durchschimmerndes Wir wissen es besser und eine Orientierung am unmündigsten aller Nutzer, um eigene Vorstellungen vorzugeben. Beispiel: Die Fensterverwaltungsbuttons nach links zu verschieben und damit die Nutzererwartung zu missachten wäre schon seltsam gewesen, sich dann aber sogar zu weigern die Seite grafisch konfigurierbar zu machen war einfach nur feindselig.
Genau diese Haltung bedroht jetzt auch Snaps: Denn eigentlich sind die eine gute Sache, gerade auch für Entwickler wie mich. Aber sie zu benutzen, um Zwangsupdates wie bei Windows durchzudrücken? Etwas, weswegen ein beachtlicher Teil der Linuxnutzer von Windows weggewechselt ist? Das missachtet grob Usability-Kriterien, hier vor allem die Aufgabenangemessenheit, und macht damit im Zweifel ein System für Nutzer unbenutzbar. Und das, obwohl Ubuntu 20.04 selbst wohl ein ziemlich gutes Release geworden ist.
Es erzeugt zudem völlig unnötigerweise einen Konflikt zwischen den Nutzern und den Machern des Systems.
Canonical hat gezeigt, dass sie es besser können. Die Fensterverwaltungsbuttonsseite war irgendwann wieder offiziell konfigurierbar, dann war auch die Standardeinstellung wieder korrekt. Aus Unity wurde mit solchen Verbesserungen im Laufe der Zeit eine gute Desktopumgebung, sodass als Ubuntu schließlich aufgab und zu Gnome wechselte dies bedauerlich war. Ich hoffe, dass die Organisation immer noch die Vernunft und die Kraft hat, auf die Kritik richtig zu reagieren. Dass Snaps konfigurierbar gemacht werden, wieder ultimativ der Nutzer sein System seinen Anforderungen entsprechend verwalten kann. Das wäre erfüllt, sobald Autoupdates optional werden und der sichtbare Snapordner verschwindet. Gut wäre es auch, wenn problemlos alte Snapversionen zurückgespielt werden können.