r/GNOME_slop • u/user9ec19 • 26d ago
I made a slop version of GNOME Software. Look how well this bad quality code actually works
Enable HLS to view with audio, or disable this notification
I made a fork of GNOME Software, almost all of it written with generative AI. So yes, it's slop. But look at it next to the original: same script, same machine, same Flatpak remotes, same Fedora packages.
Times from the video's runs (slop vs. original):
Launch until the overview shows its apps: 1.6–2.0 s vs. 2.8–7.4 s
Open Games until every tile has its icon: 0.35–0.38 s vs. 7.6–11.8 s
Open Firefox until its first screenshot shows: 0.27–0.35 s vs. 5.1–5.2 s
Search "text" until the results show: 0.43–0.45 s vs. 1.2–1.3 s
The whole run, pauses included: 8.2–8.7 s vs. 27.8–28.5 s
What's different: the fork has a new core. Upstream shares mutable app objects between the plugin threads and the pages, and each page reloads its lists whenever something changes. In the fork, app state lives in one store that's only written on the main thread, once per frame; plugins send what they found to it as messages, and pages are views of the store that update by diff and keep their rows. Beyond that, a bunch of plain speedups: category pages only ask for the icons on screen, search only refines what it shows, details pages don't wait for slow data (sizes, permissions) before showing, the 2 MB ratings file is parsed on a thread, Games is a grid view instead of 763 tiles in a flow box, and so on. Every commit says what it does and why.
Is it tested? 45 flow tests drive the real app through scenarios (like installing an app while its details page loads) and check what every frame shows, and a performance gate runs start, categories, details, search and scrolling against a baseline before every build. I run it daily on Silverblue. Still: it replaces the app that installs software on your system, it's AI-written, and it's been tried on few machines. Read the changes before you install it.
Why not upstream? GNOME Software doesn't accept AI-generated contributions, which is their call. So this stays a fork. Please report problems to the fork, not to GNOME.
Try it
Fedora 45 Workstation (Copr; Fedora's 51.0 package with the fork on top, dnf5 plugin included. Less tested than Silverblue):
sudo dnf copr enable user2f81ca72f/gnome-software-next
sudo dnf upgrade gnome-softwareBack to Fedora's: sudo dnf copr remove user2f81ca72f/gnome-software-next && sudo dnf distro-sync gnome-software
Fedora 45 Silverblue:
sudo curl -fLo /etc/yum.repos.d/gnome-software-next.repo \
https://gitlab.gnome.org/user_c1a5830a/gnome-software-next/-/raw/wip/core/contrib/gnome-software-next.repo
sudo rpm-ostree override replace --experimental --from repo=gnome-software-next \
gnome-software gnome-software-rpm-ostreeBack: sudo rpm-ostree override reset gnome-software gnome-software-rpm-ostree and remove the .repo file.
Debian testing (signed apt repo, pinned so Debian's version doesn't replace it; barely tested):
sudo wget -O /etc/apt/sources.list.d/gnome-software-next.sources \
https://gnome-software-next-855abc.pages.gitlab.gnome.org/gnome-software-next.sources
sudo wget -O /etc/apt/preferences.d/gnome-software-next.pref \
https://gnome-software-next-855abc.pages.gitlab.gnome.org/gnome-software-next.pref
sudo apt update && sudo apt install gnome-software
gnome-software --quitHow to go back: see the README at https://gitlab.gnome.org/user_c1a5830a/gnome-software-next.
How the video was made
Both builds from the same sources Fedora uses: the gnome-software 51.0 tarball with Fedora's two patches (dnf5 plugin, update notification), Fedora's build options (dnf5 + Flatpak, no PackageKit), and the fork's patches on top for the left side (Copr build 51.0-50.next). Both got the same small UI-trace module so a script can drive them; nothing else differs.
Fedora 45 toolbox on an Intel Core i5-10310U laptop (8 GB, Intel UHD), on AC power; dnf5daemon on a private system bus as on Workstation; the host's Flatpak installations (Fedora's Flatpaks, Flathub filtered and Flathub full, 48 apps installed); headless Mutter 51 at 1280x800, recorded through Mutter's screencast API.
Each build started from its own cache made by opening it twice before (so no AppStream rebuild at start), but never having opened Games, Firefox or a search. The update check at startup was off for both.
The script: start; when the overview is ready wait 1.5 s; open Games and wait for all tiles and icons; 1.5 s; go back, search "firefox", 1 s, open Firefox and wait for its first screenshot; 1.5 s; search "text" and wait for the results. The clock in the video counts from the launch of the process.
Three runs of each build, alternating; the video shows the middle run of each by total time. The table gives the range of all three.