My employer makes commercial cross platform software for Windows and Linux (and in decades past, various commercial Unixes). If you install the 32-bit libraries, you can run our software from 8 years ago just fine on modern Linux. If you also use LD_PRELOAD to replace a couple of C library functions with ones that don't take the `restrict` type qualifier on their arguments too seriously, then you can run our software from 16 years ago just fine too.
Commercial software didn't come to Linux in the volume that it came to Windows and macOS because the users didn't come to Linux in the volume they came to Windows and macOS. And the users didn't come because Mac and Windows mostly just work, that was far from the case for Linux in the late 90s and early 2000s when the total number of desktop and laptops in service was exploding. And these days Linux mostly just works - I can't remember the last time I had to futz with an X11 modeline or a kernel module - but its too late.
AppImage just works on any Linux distribution. There are no external dependencies, since the package bundles all of the dependencies and there is no runtime required. I don't see how an AppImage downloaded today wouldn't work in 5 years.
I don't like Snap because the server implementation is closed source and controlled by a single company (Canonical), but Ubuntu 20.04 LTS (which bundles Snap) is supported until April 2030.
They commit to long-term support for software distributed as shrinkwrapped binaries? You can buy a program written for Windows 20 years ago and it will work. If you try to run a program written for Linux 5 years ago it probably won't.