I tried it once a long time ago; it failed to find the sqlite3 command (back when SQLite was part of base). I spent way too much time debugging a sqlite-based script until I noticed /usr/bin/sqlite3 was still on my system.
"sysclean is a perl(1) script designed to help remove obsolete files, users and groups, between OpenBSD upgrades."
Based on its name I think it's used in Arch Linux packages (at least makepkg says it is generating an mtree file at some point during the build process IIRC). However it appears mtree (the tool) isn't packages, so perhaps it's only using the mtree specification format?
Would be nice to have something like Android has nowadays where software that hasn't been used in X days is progressively permission restricted and tallied in a list for easy removal.
It's not a huge inconvenience in my experience, as the apps should be written to ask for permission if they don't have it. Thus it should be a single additional click in that case.
I much prefer that over apps having permissions "forever".
Only thing I dislike is that the Android permissions are quite coarse grained and intertwined. I still get asked for some seemingly irrelevant permission but when I check then it turns out it's just Androids permissions being weird.
I don't know about the immediate parent, but on my Pixel it doesn't uninstall anything automatically. It suggests apps to uninstall if you go to Files > Clean, but doesn't nag you about it.
I sometimes get a strange feeling that apps should have been more like web pages. Nothing to install, it's there when you want to use it and gets evicted from the cache if you don't.
I think the converse of this is. What would the web would have looked like if a commercial corporation developed it? An app store, it would be an app store.
I wonder... do people with distros that use declarative package management have use for a similar tool? How do you "spring clean" your installs... apart from reinstalling?
Nix works by putting its packages into some installed folder, and then building a system by symlinking to those packages.
You'd retain the nix package storage between boots (so as to avoid having to redownload/rebuild), and setting the system up just involves setting up some symlinks. - GrahamC's blogpost discusses this in a bit more detail.
"Fresh system each run" isn't too exotic compared to image-based approaches like launching a VM on AWS, or running a Docker image.
cperciva wrote a similar tool for FreeBSD called "freebsd-update IDS", though I cannot remember if it detects files that are not part of the base system.
NanoBSD does this. It's a version of FreeBSD with an immutable (read-only) base.
I've always been surprised OpenBSD hasn't created similar capabilities, given that the use case for an immutable base is great for routers / firewalls - and OpenBSD is commonly used for that.
It's a list of things to look at, not a list of things you definitely don't need.