awesome-immutable
distrobox
awesome-immutable | distrobox | |
---|---|---|
12 | 402 | |
741 | 8,976 | |
- | - | |
6.1 | 9.6 | |
3 months ago | 3 days ago | |
Shell | ||
- | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
awesome-immutable
-
Flathub: One million active users and growing
Interesting article!
My takeaways:
>"The current solutions involve packaging entire alternate runtimes in containerized environments. Flatpak, Snap, AppImage, Docker, and Steam: these all provide an app packaging mechanism that replaces most or all of the system’s runtime libraries, and they now all use containerization to accomplish this."
[...]
>"All of these technologies are essentially building
an entire OS on top of another OS
just to avoid the challenges of backwards compatibility."
This is basically using containers to replace all system libraries -- to insure that a downloaded binary app always works.
From this point forward, we'll use the term "API" to represent not just Linux kernel syscalls, but the totality of all library calls (system and otherwise!) used by a given downloaded binary application!
Observation: API (in-)consistency (AKA "Stability") one Linux version to another, one Linux distro to another -- is the real problem!
That's the real cause!
Because everything else, everything else, is effect, not cause!
The containerization, the bloated "everything but the kitchen sink" downloads, are the effect of the problem of API (in-)consistency!
Phrased a simpler way -- there is absolutely NO guarantee of consistency between the libraries, system and otherwise, of any two Linux distros!
So if a binary app is to run on all Linux distros -- then it had better damn well better make sure that the exact specific version of all of the libraries that it needs -- are managed by it, not the host operating system!
Containers and bloated library downloads -- are (unfortunately) currently necessary to provide this!
Related:
"Linux Library Mismatch":
https://www.google.com/search?q=linux+library+mismatch
"DLL Hell" (the MS-Windows equivalent)
https://en.wikipedia.org/wiki/DLL_Hell
Software Engineering: Bertrand Meyer, "Design By Contract":
https://en.wikipedia.org/wiki/Design_by_contract
API Contracts: "What is an API Contract?":
https://www.youtube.com/watch?v=-qM__ozdHCU
Eelcho Dolstra: "The Purely Functional Software Deployment Model":
https://edolstra.github.io/pubs/phd-thesis.pdf#page=11
Image-based Linux distributions and associated tools:
https://github.com/castrojo/awesome-immutable
Spencer Baugh: "Managing Dependencies":
https://catern.com/posts/deps.html
-
Hello everyone!
If you're simply in search of other immutable distros, then I would recommend you to look under the "Distributions" section on this page.
-
What is the difference between Immutable Desktops and non Immutable Desktops?
The answer to that question is out of scope for what is sensible to write in a comment. Also, because we're mostly still exploring what it is or rather what we'd want it to be. But if you're really interested, then I'd suggest you to dive into this wonderful resource. You don't have to go through everything that's found within. However, I'm sure there's something in there that peaks your interest and you can go from there.
-
Immutable Linux Distributions for Those Looking to Embrace the Future
Flatcar uses 2 partitions, A and B, you boot into one and then updates update the one that you're not booted into, when you reboot it it boots into the updated one. It's like Android: https://source.android.com/docs/core/ota/ab
I maintain an awesome-list of immutable resources here with a collection of talks and presentations from the people making the stuff: https://github.com/castrojo/awesome-immutable
However I'm currently focused on desktop stuff since the it's a fairly common pattern in cloud already, I should probably write it up.
Semi-related, a few of us have started a community around composable OCI fedora images, and one of our images is intended to be used as a home server built on CoreOS with ZFS, cockpit, and all the goodies you'd need. It's still fresh and we're looking for help if anyone's interested: https://github.com/ublue-os/ucore (Disclaimer: I helped start this project)
-
What are good resources for silverblue ?
Some interesting links: https://github.com/castrojo/awesome-immutable
- A list of resources for people who want to investigate image-based Linux desktops
- Immutable image-based Linux desktops
-
Hi, i installed the Fedora 37 Silverblue (Gnome) But DNF and YUM commands dont even exist there. what i made?
Found this page for you. It has lots of resources, including videos and guides, about all things Silverblue and other immutable Linux distros, and their tooling. Enjoy.
-
What is best Distro/DE combo for productivity on ML Workstation
Note, I haven't tried these two distros myself, but I am strongly considering moving to such a system at the moment. Here is some reading material in case you're interested: https://github.com/castrojo/awesome-immutable
- GitHub - castrojo/awesome-immutable: A list of resources for people who want to investigate image-based Linux desktops
distrobox
-
Windows 11 now comes with its own adware
Regarding the stability issue on a dev machine - you may be interested in playing with one of the immutable-os distros, such as SilverBlue (fedora based).
The high-level take-away is you can't break your actual OS since it's root filesystem is read-only, and you use "pet" containers (on docker, podman, whatever) to do your work in. Applications are either sandboxed via Flatpak, or installed/run inside your pet containers. If your pet container dies, you cry about it for a moment, and when you're ready you get a new one - your actual os and other containers remain unaffected.
I use distrobox[1] to create/run the pet containers.
[1] https://github.com/89luca89/distrobox
-
Tools for Linux Distro Hoppers
Distrobox is a tool that enables us to try Linux distro CLI, including their package manager. This requires a containerization tool (e.g., Docker). In Windows, this can be achieved using WSL (Windows Subsystem for Linux)
- Distrobox: Use any Linux distribution inside your terminal
-
Fedora Atomic Desktops
I use containerized versions of things, ubuntu and chainguard images mostly.
You can always create containers with init if that's how you want to do that though. Some distros publish images that come that way: https://github.com/89luca89/distrobox/blob/main/docs/useful_...
-
Raspberry Pi is manufacturing 70K Raspberry Pi 5s per week
https://news.ycombinator.com/item?id=38505448 ... https://github.com/89luca89/distrobox/blob/main/docs/useful_...
-
Operating System?
Yes, you can do that but I've seen others use something like distrobox to run linux inside of SteamOS: https://github.com/89luca89/distrobox/blob/main/docs/posts/steamdeck_guide.md
-
How much will I screw up my system after installing Merkuro Calendar (KDE Akonadi application), formerly called Kalendar, on GNOME?
For such cases you might use something like this: https://github.com/89luca89/distrobox
-
Battery consumption of using remote development with WSL2?
Btw #3: Depending on what the user is trying to accomplish, e.g. maybe to make WSL(2) itself more of a "subsystem" than a "container engine", using something like Distrobox or nsbox.dev can be a good idea (along with Docker or Podman in Distrobox's case; the other one uses systemd-nspawn).
-
Cannot run containers with Distrobox
1. Find here in "Containers Distros" section the distro image that you want to install ("Toolbox" versions are better because they are configured for Distrobox) and get it URL: https://distrobox.it/compatibility/#containers-distros 2. Use that URL to create Distrobox: distrobox create -i registry.fedoraproject.org/fedora-toolbox:39 -n fedora_1_39 3. Enter Distrobox fedora_1_39: distrobox enter fedora_1_39 4. You are already in Distrobox console. Look at the name in console, it should be include the container name. 5. To exit Distrobox: exit 6. If you run: distrobox list you will see all distroboxes on the system. You will also see that distrobox that we exited is still running. 7. To stop distrobox use commands: distrobox stop fedora_1_39
- In-depth Distrobox tutorial/ or video?
What are some alternatives?
arch-linux-installation-guide - An easy to follow Arch Linux installation guide. This guide will show you how to properly install Arch Linux on UEFI/BIOS systems, ext4/btrfs file systems; using systemd-bootloader/GRUB and systemd-networkd/NetworkManager for networking. These are the given examples but I have provided links to sections with the information necessary to install any 86_64 system
toolbox - Tool for interactive command line environments on Linux
bazzite - Bazzite is a custom image built upon Fedora Atomic Desktops that brings the best of Linux gaming to all of your devices - including your favorite handheld.
wsl-distrod - Distrod is a meta-distro for WSL 2 which installs Ubuntu, Arch, Debian, Gentoo, etc. with systemd in a minute for you. Distrod also has built-in auto-start feature on Windows startup and port forwarding ability.
ucore - An OCI base image of Fedora CoreOS with batteries included
docker-android - Android in docker solution with noVNC supported and video recording
sodalite - 🪨 A Pantheon experience for rpm-ostree [Moved to: https://github.com/sodaliterocks/sodalite]
flatpak - Linux application sandboxing and distribution framework
ublue - A familiar(ish) Ubuntu desktop for Fedora Silverblue.
rustdesk - An open-source remote desktop, and alternative to TeamViewer.
ostree-rs-ext - Rust library with higher level APIs on top of the core ostree API
toolbox-vscode - Toolbox Visual Studio Code integration