Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Don’t blame Linux as a whole for Thunderbird not packaging a .deb file. (EDIT: or an AppImage file. I get everyone is not on Ubuntu/Debian)


You can blame Linux distros as a whole, for being obsessed with dynamic linking shared libraries.

The Linux kernel itself has a well publicized policy of not breaking user space and binary compatibility, but pretty much all distros regularly break binary compatibility, they require software to dynamically link to os provided shared libraries, and they don't allow statically linked programs to be distributed using their package managers.

Packaging and distributing software for windows or macOS is really easy. Doing the same for Linux, particularly desktop applications, is a huge pain.

It's a point that Linus Torvalds has often bemoaned[0][1].

[0]: https://lore.kernel.org/lkml/CAHk-=whs8QZf3YnifdLv57+FhBi5_W...

[1]: https://news.ycombinator.com/item?id=8379139


Packaging software for Windows is clearly a pain, because every time I install a game I get a download, followed by a launcher, followed by one or several MSVC++ runtimes, then another download, then some kind of extraction phase, a restart and then a menu. Unless I'm one of the first people to download the game, of course, because then I get a popup stating that the file I downloaded can't be trusted and that I should delete it.

It's an automated Rube Goldberg machine. Linux used to have these as well! I remember clearly the hacky automated Java 6 install script and the VirtualBox drivers that came as a several executable hundred megabytes in size.

You can static link if you want. You need to watch out for core system libraries like glibc (just like you need to watch out for Win7/8.1/10/11 on Windows) but that's about it.

Packaging for Linux is easy. You can even automatically test if your packages work on different distributions! You can read about it here: https://appimage-builder.readthedocs.io/en/latest/intro/tuto...


I mean you can put up a `.deb` with a statically linked binary on your download page right? You can also use stuff like App Image right? It's not like nobody has ever put a go binary into a .deb before.

I don't think comparing "state of packages got off of apt" to "state of downloaded installers for Mac/Windows" is an apples to apples comparison.


The ancestor comment was complaining about the poor experience of installing a downloaded Linux desktop application.

Yes, the reasons for why it's more complicated on Linux are varied, the fragmentation of the desktop Linux ecosystem might be the other main factor.

However I think comparing the status quo between each OS is fair.

Appimage seems cool, I don't have experience with it, so I can't speak to how well it works.


Yep, several projects I know are leaning into AppImage to get around dealing with installers. The biggest problem with AppImage is that it _is_ just a binary, so things like desktop shortcuts don't come with it. AppImageLauncher does solve this issue (and create a "canonical place" to place your programs, like /Applications/ on mac).

I do agree it's fragmented and frustrating where we've ended up for installers. My main critique is more that the state of linux packaging _isn't_ what thunderbird is doing here.


You can statically link your apps just fine as long as you follow the license for the libraries you're linking (in the case of libc, the LGPL.) Before you get upset about this Windows does the same thing with their C runtime (although the license terms are different.) Ever seen the installer for it when you install another app? That's exactly what's going on.

Go nearly always does this for example (although in some version they switched to dynamically linking to glibc for the stub resolver) and you can take statically linked go binaries and copy them to totally different OSes as long as the architecture is compatible. I remember taking a copy of syncthing and copying it between my Android and a Raspberry pi at one point (or maybe it was a kindle and a raspberry pi) which run totally different OSes and it worked just fine (ignoring the Android stupidity of course.)


I’ll blame Linux as a whole for every app needing several deb files (one per distro Ubuntu/Debian/etc and one per LTS), several rpm files (one per distro RH/Fedora/etc and one per LTS), and several <100+ chars omitted for brevity).

On other platforms (Windows, macOS, Android, iOS) it’s fairly common to distribute GUI apps as a single binary so you don’t need an army of package maintainers. Perks of having many years of ABI stability.


I believe most projects that serve debs from their own download page do not try to package for each distro separately, and instead opt to package up requirements as needed.

I can't comment deeply on deb vs rpm, it is kinda disappointing that we have this split, and I don't know if there's a great way to merge it back.

Mac does have a good distribution story. This also exists on Linux in the form of app images. The one missing piece is that Mac has the Applications convention. AppImageLauncher[0] solves this, but really it would be good for Gnome/KDE to just integrate this concept. That gives the (important!) "have the application show up in the application launcher" option.

I do not believe one could qualify Windows programs as being distributed as a single binary. A single installer, perhaps! But many Windows programs dump files all over your file tree to do things, and then goes to touch stuff in your registry. There's a reason we have "portable executables" for windows as its own download option!

[0]: https://github.com/TheAssassin/AppImageLauncher


Who are you blaming, exactly? There’s no project or organization called “Linux as a whole”.


That's exactly what the problem is. The diffusion of responsibility makes it a decades-long problem and nobody has the responsibility or the power to fix it.


OK, so, why bother complaining about it? Use Linux if it does what you want, otherwise use macOS or Windows.


Because I don’t think it’s unreasonable to want:

* A desktop package that isn’t a vehicle for ads (like Windows and ChromeOS).

* A desktop package that doesn’t require you to write your own one-off scripts to work around stupid deficiencies (like GNU/Linux).

* A desktop package that doesn’t constantly throw away all its “legacy” and break a bunch of stuff (like Mac).


It’s indeed not unreasonable to want that, but there does not exist any incentive structure that would cause it to exist. It’s not the fault of some person or group of people doing something wrong; it’s simply a logical consequence of what Linux is.


A problem can’t be blamed on a single entity is still a problem, right? I think OP was just explaining the issue.


I’d be perfectly fine with everyone switching over to .deb files. Sadly it seems AppImage is more popular these days.


Sure, I’d be fine with any standard. It’s just insane how just about every distro has its own sporadically updated repo instead of sharing common packages. Projects that need to be patched and rebuilt should be the exception, not the rule.

Scroll down and you’ll see people arguing about supported features because they’re running an ancient version of Thunderbird supplied by their distro.


From what I've seen, .deb is still king over rpm, appimage, flatpak and snap.


> On other platforms (Windows, macOS, Android, iOS) it’s fairly common to distribute GUI apps as a single binary so you don’t need an army of package maintainers.

You can do this on Linux, too, be it by compiling a static binary or bundling everything as an AppImage or what have you.


So why isn't it do more widely when it would convenience many users?

Frankly, I find it annoying that it isn't done as a matter of course.


Typo sorry, it's 'done' not 'do'.


I agree. Thankfully, enough others agree that there are AppImages and other single-file executables for all sorts of Linux software.


'Linux as a whole' has nothing to do with .deb files.


That’s kinda my point.


Sorry yes I overreacted to the first sentence without understanding the tone.

I think it's unfortunate anyone offers .deb (or similar) downloads really - the many Linux distros don't have a single packaging mechanism, so why pretend they do, or that your app's not going to work on the ones you don't provide?

Just say it's built for Linux, perhaps here's a binary, here's the source if available, this is the preferred name, go and check your package manager.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: