The software doesn't "expire" or "perish". The software isn't gone. The software may go into a state of not getting updates.
A lot of the problems outlined in the post have to do with device and solution design decisions rather than in software expiring.
This also touches on open source software lifecycle choices. PHP may be updating quicker than it used to but the backwards compatibility is amazing.
Angular 9 moving at this pace of change is an example of a lot of churn. Churn is fun for us devs while we work on things but not great for the solutions our stuff is embedded in.