Note: I rewrote this post since I had not heard any feedback.
I did some homework, downloaded the 3 rpm-ostree OSs, and started comparing packages.
The rpm-ostree is very unique compared to other distros because, in my opinion, you want to keep it as lean as possibly, relaying on containers, toolbox, flatpaks and other abstraction layers.
The table below reflects a comparison that i found interesting to me. Obviously, there are loads more package differences between the OSs, but again, these are the first packages that stuck out to me.
In my opinion, IoT would benefit by dropping more packages and becoming a more minimal distribution, but I am very interested to hear a different point of view.
Additionally, CoreOS has some interesting choices, but I think it makes sense overall (besides… cups?!).
Here is the table comparison, it should be accurate. If you are interested in seeing any additional packages in the table, I am happy to add them:
Rpm-ostree family comparison
CoreOS
IoT*
Silverblue
Description
For cloud
For IoT/Edge
For Desktop
DE
Gnome
Fully scheduled auto-updates
Zincati
^
^
Bare metal x86 images
âś“
âś“
âś“
Bare metal ARM images
âś“
Cloud x86 images
âś“
Cloud ARM images
Base Package Count
361
376
1198
Approx. ISO Size
~672MB
~1.2GB
~2.3GB
btrfs
âś“
âś“
buildah
âś“
containerd
âś“
cups-libs
âś“
âś“
dhcp-common/dhcp-client
âś“
âś“
firewalld
âś“
âś“
flatpak
âś“
fwupd
âś“
âś“
git
âś“
âś“
ignition
âś“
âś“
logrotate
âś“
âś“
mdadm
âś“
âś“
moby-engine
âś“
nfs-utils
âś“
âś“
nmap
âś“
podman
âś“
âś“
âś“
python3
âś“
âś“
samba
âś“
âś“
toolbox
âś“
âś“
traceroute
âś“
zincati
âś“
* Used IoT v32 Beta vs v31 of other editions
^ can be scripted by the user
Thanks a lot for putting this together! It is an important topic and we should have a centralized document for it.
I believe that IoT and Silverblue should derive from Fedora CoreOS - now that IoT is using Ignition that makes things even closer. I have a fork of the Silverblue config that derives from FCOS here: GitHub - cgwalters/fedora-silverblue-config: Copy of https://pagure.io/workstation-ostree-config/
It’s not ready for widespread use but the desktop I’m typing this from was installed using it.
That’s an interesting perspective. My initial thoughts were a bit different:
My thoughts were that IoT would be the minimal varient OS, considering it just needs podman to run it’s edge applications.
I think smaller image for IoT would be nice. I expect most users will push all deployments remotely so local tools would not be required.
IoT is IMHO just a different use case and Fedora IoT shouldn’t necessarily be a more minimal edition. The use of Core OS probably implies a certain environment while an IoT device is supposed to be more self contained. And if you want people to be able to use firewalld or Ansible then you have to ship Python and stuff just adds up.
You keep using the term “derive” without ever explaining what you mean by this, the use cases for are quite different across the 3 usecases and how would that be delivered? Image layering?
I think it makes sense to work on technologies but nothing you’ve ever mentioned goes into any details of how a derivative would even work.
Some of this is interesting, some looks like just a random selection. EG IoT doesn’t have nmap, it does have nmap-ncat which is purely there as a dependency for disk encryption functionality, it’s used for the tang service network unlock option. Noting things like cups-libs again is purely a dependency thing. It would be more useful IMO to have a break down based on functionality provided and why. I don’t see a random selection of package dependencies particularly useful, IE I can see why a desktop would have printing functionality but what pulls it in for CoreOS?
This isn’t a heavily documented process yet, but a fair amount of thought went into its design because it’s how we share code between FCOS and RHCOS. See e.g. this PR.
IoT does include firewalld and python. And I think that makes sense as it helps facilitate application hosting and automation. I think most users will automate their IoT devices; wouldn’t want to spend too much time in the local shell.
Your right, the list is definitely random, as I included packages that I either found interesting or confusing. It would be ideal to create a table that compares functionality, and that was my original goal, but I need to do more research as I don’t have enough immediate insight. Maybe I can circle back on this.
And thanks for clarification on a couple packages. Yes I need to do more research on which are simply dependencies.
I realize it’s a useless statistic, but do you happen to know why the CoreOS ISO is so much smaller than IoT ISO? “rpm-ostree db list” doesn’t include package size details.
I don’t know the complete package list for Fedora CoreOS but I suspect things like python, firnware we need in IoT to support HW use cases. We’re no where near where we want to be in dep reduction for IoT but ATM it’s focus on features needed etc. EG we still ship python because of ansible, where as CoreOS uses things like MCM for those use cases.