I've been thinking about this problem for a while, It's a common one on any system, but as cool guys with access to system internals and programmnig skills, it seems like there should be an intellegent solution. Whenever you run a program, it usually loads up a number of shared objects, or libraries. This is done by a system call to the dynamic linker, ld. The problem is, when a library is missing you get a short, curt message notifying you of this. Libraries are not named well, very few of them give the user any clue what program or package they are a part of. This can be quite frustrating for users of a system who don't know what's going on and why the program won't work.
There is a way to get the dynamic linker to load other libraries up before requested libraries, and even override basic system functionality, replacing functions that are in libc, say, seemlessly. If there's a similar method that would allow us to call an alternate version of the function that loads these libraries, or change the dynamic linker to allow this, and send a more general notification out to a log file or shared memory object, socket, etc. then userspace programs could monitor this and react, possibly by installing the missing software.
The end result of this would be that User X downloads a program that isn't part of opendistro, a game or something, and tries to run it. Instead of failing miserably, it fails and a window appears explaining that the game requires extra software, and to press a button to install the missing software. This could be really handy for everyone, even experienced system admins. At a point, you just don't want to have to track down 18 extra packages just to play a video game.
Actually, some of this information may already be available, I'll have to check if ld can be configured to report missing libraries through a syslog type facility, if so we may be able to do this without any system wide tweaks.