{"id":1218,"date":"2025-02-21T17:54:59","date_gmt":"2025-02-21T15:54:59","guid":{"rendered":"https:\/\/valentijn.sessink.nl\/?p=1218"},"modified":"2025-02-21T17:56:02","modified_gmt":"2025-02-21T15:56:02","slug":"snap-is-broken","status":"publish","type":"post","link":"https:\/\/valentijn.sessink.nl\/?p=1218","title":{"rendered":"Snap is broken"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>It sounds cool: having a single package format that is &#8220;<a href=\"https:\/\/snapcraft.io\/about\">easy to install, secure, cross-platform and dependency-free<\/a>&#8220;. Because it is hard to maintain all these different versions for all those distributions and platforms. Unfortunately, Snap is not a solution. It is yet another problem for the Linux desktop.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Such a <a href=\"https:\/\/canonical.com\/blog\/snaps-how-we-got-here\">good idea<\/a>: a new software installation package type that has all libraries and other dependencies included. Let the <a href=\"https:\/\/snapcraft.io\/store\">central resource facility<\/a> handle updates. Isn&#8217;t that how the Play Store, and Apple Store handle their business, too?<\/p>\n\n\n\n<p>Snap was built around a security model, a snapped application runs inside a container that will only see what it is supposed to see. That causes trouble. For example: if you try to view a <code>.html<\/code> file that is sitting inside a <code>.zip<\/code>, this <a href=\"https:\/\/bugs.launchpad.net\/snapd\/+bug\/1968548\">won&#8217;t work<\/a>. Because the <code>file.html<\/code> inside the zip-file is temporarily extracted to <code>.cache\/.$randomname\/file.html<\/code> and <a href=\"https:\/\/www.mozilla.org\/firefox\/\">Firefox<\/a> cannot (i.e. is not allowed to) look there. Same for PDF files and Evince (the PDF viewer). The &#8220;normal&#8221; Evince (installed from a <code>.deb <\/code>file) will see your unpacked PDF just fine, but Evince Snap complains: <em>Unable to open document: Permission denied<\/em>.<\/p>\n\n\n\n<p>It gets worse. Opening an e-mail with a <code>.docx<\/code> or <code>.odt<\/code> attachment from <a href=\"https:\/\/www.thunderbird.net\/\">Thunderbird<\/a> &#8211; apparently &#8211; opens <a href=\"https:\/\/www.libreoffice.org\/\">Libreoffice<\/a> from within the Thunderbird Snap confinement. Libreoffice has the nice feature of opening all documents in one instance. So any <em>additional<\/em> document you&#8217;re trying to open will fail &#8211; because they are outside of the Thunderbird container. You must <strong>close the Thunderbird invoked Libreoffice<\/strong> before you can edit other files. Or something. I didn&#8217;t research this further, sometimes enough is enough.<\/p>\n\n\n\n<p>And don&#8217;t get me started on stupid bugs like the snapvertized <a href=\"https:\/\/bugs.launchpad.net\/ubuntu\/+source\/thunderbird\/+bug\/2062133\">Thunderbird installer copying your entire mail<\/a> folder, even if it is gigabytes of cached mail messages, from <code>.thunderbird\/<\/code> to <code>snap\/thunderbird\/common\/<\/code>. (Did Canonical sign a sponsor deal with the storage industry?) This &#8211; obviously &#8211; will not work if the profile is too large &#8211; in which case the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1907184\">migration simply fails<\/a>. The <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1665641\">tracking bug for Mozilla Snap issues<\/a> has 86 bugs open and this includes severe bugs like the <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1730530\">profiles.ini file not being migrated correctly<\/a> &#8211; this bug is open since september 2021. The fact that you will have to recreate the link to your signature if the signature file is outside of the copied profile is such a minor detail that I did not even bother to file a bug (it would be number 87). See <a href=\"https:\/\/forum.snapcraft.io\/t\/thunderbird-snap-and-external-gnupg-for-smart-cards\/39553\">this<\/a>, that&#8217;s more important than an e-mail footer.<\/p>\n\n\n\n<p>Then there are extremely silly bugs like <a href=\"https:\/\/bugs.launchpad.net\/ubuntu\/+source\/libreoffice\/+bug\/1729821\">LibreOffice cannot open files on a SMB share<\/a>. Yes, you read that correctly: you <strong>cannot read files from the network<\/strong> with a snapped Libreoffice.<\/p>\n\n\n\n<p>Now you may say that this is all temporary, oh bugs need to be fixed and wrinkles straightened out, but hey, even a simple <a href=\"https:\/\/bugs.launchpad.net\/debian\/+source\/evince\/+bug\/1794064\">Clicking on a link in a PDF document that didn&#8217;t work<\/a> took <strong>five years<\/strong> to fix &#8211; and not even for <a href=\"https:\/\/bugs.launchpad.net\/debian\/+source\/evince\/+bug\/1794064\/comments\/81\">all browsers you can think of<\/a>. You really do think that any end user will want to wait for five years to get functionality back? So how is this <em>easy to install<\/em> if it gets you software that simply doesn&#8217;t function after you installed it?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Security<\/h2>\n\n\n\n<p>Adding layers to complex software makes the software <em>more<\/em> complex. More complex to maintain, more complex to debug. Complexity is the enemy of security. Because if you can&#8217;t debug, you cannot fix.<\/p>\n\n\n\n<p>Take the Linux printing system. <a href=\"https:\/\/openprinting.github.io\/cups\/\">Openprinting Cups<\/a> is a wonderful and complex piece of software with parts of it dating back to the earliest Unix printers &#8211; probably more than 25 years old. It supports a ton of printers, printer protocols, network protocols, autodetection, printer language conversion. But after all these years, even the printer maintainers find the <a href=\"https:\/\/lore.kernel.org\/printing-users\/SYBP282MB2617E3FA5A60DFE9E56A9A21877C2@SYBP282MB2617.AUSP282.PROD.OUTLOOK.COM\/T\/#mf69b2315e8eee194dae49783c134c4154b85397b\">build process a bit too complex<\/a> to be able to debug. Now Canonical has found out that life is going to be more secure by <strong>adding<\/strong> a layer? These days, I don&#8217;t even know where to look if I want to see where a printer was defined: is it Snap cupsd or is it cupsd.<\/p>\n\n\n\n<p>Yes, I did read that &#8220;outdated devices&#8221; are a huge problem and that that was one of the reasons for Snap to come to life. The main <em>reason<\/em> I&#8217;m not upgrading is, in most cases, that I know or suspect that my New And Improved package <em>just doesn&#8217;t work<\/em>. So while Snap may make <em>upgrading<\/em> easier, it gives me plenty of reasons to not install it in the first place.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cross platform<\/h2>\n\n\n\n<p>Then there is the cross platform promise. This seems to be <a href=\"https:\/\/ubuntu.com\/blog\/docker-vs-snaps-a-side-by-side-comparison\">limited<\/a> to Snapped Linux distributions and the Microsoft Windows Subsystem for Linux (WSL). My personal opinion is that Windows is a piece of marketeer-driven junk &#8211; with ads on the desktop and an absolute vow to not make it easy for anyone to escape the tightly controlled Microsoft ecosystem. So if Snap actually does make software installation easier on WSL, it probably <em>helps Windows users stay on Windows longer<\/em>.<\/p>\n\n\n\n<p>I just hope Canonical makes loads of money with it but I don&#8217;t think the cross platform helps <em>me<\/em> (or any Ubuntu Linux user) in any way here. Or is there any software Out There that didn&#8217;t have an Ubuntu install file &#8211; but is on Snap?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Broken<\/h2>\n\n\n\n<p>So Snap is broken. It gives me packages with bugs, cross platform compatibility for a platform I&#8217;m not using, obscurity during debugging. And most unfortunate of this all is that bugs that <em>would<\/em> need action for the Linux desktop to become more usable, will just have <a href=\"https:\/\/bugs.launchpad.net\/ubuntu\/+bugs?field.tag=snap\">more competition<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It sounds cool: having a single package format that is &#8220;easy to install, secure, cross-platform and dependency-free&#8221;. Because it is hard to maintain all these different versions for all those distributions and platforms. Unfortunately, Snap is not a solution. It is yet another problem for the Linux desktop.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,22],"tags":[9,32,202,7],"class_list":["post-1218","post","type-post","status-publish","format-standard","hentry","category-opinie","category-vrije-software","tag-linux","tag-open-source","tag-snap","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=\/wp\/v2\/posts\/1218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1218"}],"version-history":[{"count":13,"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=\/wp\/v2\/posts\/1218\/revisions"}],"predecessor-version":[{"id":1237,"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=\/wp\/v2\/posts\/1218\/revisions\/1237"}],"wp:attachment":[{"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}