Hi Ludo, Ludovic Courtès <l...@gnu.org> writes:
>> Yes. We should be working on “guix size gnome-shell”. It more >> accurately reflects the size of GDM, and (I hope you’re sitting down) it >> weighs in at 2GiB! >> >> Fortunately, it looks like we could claw back ~400MiB by (somehow) >> dropping “hplip-minimal”. It gets pulled in through the path >> >> gdm → gnome-settings-daemon → colord → sane-backends → >> hplip-minimal. >> >> We almost certainly don’t need it for GDM. I guess removing it means >> making a version of “colord” without “sane-backends”. It was introduced >> in commit 4c9287432824f396d5c614c3b2287f553cd9fb90. I’ll look into >> this. > > Cool! That’d already be an improvement. This didn’t work as well as I had hoped. I was able to make a “lib” output for “colord”, which gets rid of “hplip-minimal” and, in turn, “gcc”. However, it was supposed to also remove “llvm” and “python@3”, but those are still in the closure because of other packages. It looks like breaking apart “mesa” (as Debian and Nix do) could cut out “llvm” and maybe “python@2”. The reason “python@3” is there is because of “glib:bin”. The “gnome-session” package brings it in so that it can call “gsettings”. Debian splits the GLib executables into “bin” and “dev-bin”, and only the latter needs Python 3. This is tricky because “mesa” and “glib” have thousands of dependants, so changing them could cause a lot of problems. Splitting GLib is not so bad, but Mesa looks to be quite complicated. Another area that could be improved is NetworkManager. GDM only needs the “libnm” part, but it ends up bringing in everything. NetworkManager doesn’t have many dependants, so this could be done pretty quickly (provided that splitting it is easy enough). >> GNOME Shell has a handful of silly references like “inkscape” and >> “webkitgtk” that are huge and (I assume) unnecessary. > > Oh indeed. Inkscape comes from > 45fef894eb5b39029633cd0cd907e8ce8c5ab379, I’ll look into it. I managed to remove “webgitgtk” from the closure of “gnome-shell”. Inkscape is still in there, though. Maybe converting the SVG to a PNG in a separate derivation would be an easy solution. All told, GDM is down to 1.2GiB, and GNOME Shell is 1.64GiB. That’s better, but not great. Plenty of GNOME software comes in big bundles where you get a daemon, a low-level D-Bus library, a high-level library, a GUI, and some utilities. Being able to break these up would improve the situation quite a bit, but it will be a lot of work. I don’t know how much of this we can solve before 1.0. It all depends on how much of a hurry we’re in. :) Right now, I have a bit testing to do with my current patches, and then maybe I could break up NetworkManager and fix the dependency cycle with GDM and GNOME Shell. If it can go through a core-updates cycle, I could split up GLib. I don’t think I can split up Mesa, though. I am not very familiar with it. I will be tied up for about a week, so I won’t be able to do any of it before next weekend (Mar. 29). -- Tim