For near-guaranteed compatibility, there are dedicated manufacturers like System76 and Tuxedo. Framework also claims Linux compatibility but for set tested distros (Ubuntu and Fedora).
Generally, anything with Intel/AMD graphics and Intel Wifi is pretty much guaranteed to work in my experience. For laptops, high-DPI displays can be problematic but the fixes are on Wayland which is getting higher priority now.
To me, the big mistake both make is in the presumption the UI and utilities shipped with those platforms are why people use it. But no. Nobody uses MacOS because of its nifty calculator or the Finder. It’s the overall toolkit integration with apps. Not even look and feel. But consistency in use.
I don’t presume to know why others choose to use anything. But MacOS is highly consistent across apps. Dialog boxes, text input forms, file browsing, hot keys, all the same across applications.
take any distribution that someone at or close to the library is comfortable with, e.g popular Ubuntu or Debian,
setup a user profile that fits the need of the average library user, e.g Firefox with as a start page the library website
make sure the library card system do work
copy /home/thatuser directory somewhere, e.g /root/thatuserunmodified and insure permissions make it unmodifiable
add a cron task so that every evening 1h after the library close any thatuser session is terminated, /home/thatuser gets deleted, copy the /root/thatuserunmodified to /home/thatuser and fixer permission
assuming it’s fast enough (I bet it’s take 1min at most as /home/thatuser would be mostly empty) I’d do the process after each logout so that each new visitor gets a fresh session, no downloads from previous users, history, bookmarks, etc. Only what the library consider useful.
That’s it. This way one can still let the OS do it’s updates but the user experience is consistent.
I’ve not used either, just look on as a curious spectator, I’ve yet to leave the more idiot proof distros of mint and fedora. What makes it so hard to deal with vs nix?
If you want, here’s my config. Feel free to fork it.
github.com/harryprayiv/nix-config (you’ll have the most luck with the “plutus_vm” machine config output in my flake at first since the main output in my config is somewhat obscured by encryption).
I also have a Nix-Darwin config that I haven’t consolidated into my main one:
Linux only package manager that works across distros. It supports sandboxing via bubblewrap, but be cautious because by default most programs in Flathub are not as sandboxed as they should. You can host your own repository but it is heavily centralized towards Flathub, controlled by Red Hat, IBM.
Flatpak uses OSTree to distribute and deploy data. The repositories it uses are OSTree repositories and can be manipulated with the ostree utility. Installed runtimes and applications are OSTree checkouts.
AppImage
You’re basically packaging your program and every single dependency up to the C library. Linux only.
An AppImage is basically a self-mounting disk image that contains an application and everything the application needs to run on the target systems
Canonical’s take at flatpaks. They are quite similar, but snaps use AppArmor instead of bubblewrap and the server is proprietary, so an inferior option and should be avoided. The only “advantage” is that it’s used by default in Ubuntu.
Nix/Guix
multi distro package manager with reproducible builds support, more akin to a traditional package manager (eg apt)
Snappy and Flatpak talk about how they make library versions work better together and blabla and how they solve a lot of issues but that’s just a praetext, the real elephant in the room is that they are a big wink to proprietary software, they were designed for that, they just can’t say it so they focus on other things in their PR statements.
How Nix and Guix work is that they are traditional “package managers” as such the user or the distributor must have access to the source code to compile it into a package, the interesting difference is that it is capable of keeping library versions apart and will automatically share libraries if they are exactly the same. But packaging still occurs downstream, not upstream.
Snappy and Flatpak allow packaging to occur completely upstream at the developers side, which means they no longer have to cough up source code to whomever who will package. Which leads to an inferior solution to the user with far higher memory and storage consumption.
this one is something in between Nix and traditional package managers. It’s main advantage is that it works in other UNIX-like OSs, like FreeBSD, NetBSD, IllumOS as well as in Linux. The only not Linux specific option in this list (other than docker, which is not a package manager but a container)
Docker
I wouldn’t recommend this one, since it requires packaging a whole OS that creates a lot of overhead. And it can be tricky to use with GUI programs.
Overall, I think that Nix/Guix present the most advantages, with Pkgsrc being a less known close second and Flatpak being in the third position due to it’s relative popularity and overall advantages over snaps and docker. Docker might be decent option if it’s a program designed for servers, tho.
I’d also recommend that you add your program to the AUR, because even if it only works on Arch and Arch based distros, it’s incredibly easy to do and maintain as long as the building of your program doesn’t change drastically between versions.
I believe Pkgsrc compiles the program at install, so it’s native. But it’s been a long time since I used it, you might need to look into it.
And you’ll have a hard time finding a “native” package format, because distros have different libraries versions: arch libraries will be much more updated than Debian’s, so things might break trying to execute programs depending on those libraries. That’s why Flatpak, AppImages, Nix, etc bring their own libraries, because if they don’t, things will break.
They are native in the sense that they are Linux executables, but it’s true that they bring their own dependencies, but as I said, that’s necessary for cross distro support.
Nix allows you to download a binary of a proprietary package because every input is hashed. You may need to patch it to work with the correct paths, but these tools already exist.
linux
Active
This magazine is from a federated server and may be incomplete. Browse more on the original instance.