Look up Rice's Theorem. Or work on a major software project. It goes way beyond unfair to expect a complex software system to "just work as it should" - it's mathematically impossible to make sure it does.
Beyond that, supporting every single ancient version just because one guy somewhere might be using it would take man-hours away from supporting the versions most people use. It sucks for that one guy, but it'd suck for everyone else if a gaping security hole in a more common version were to stay unpatched for too long.
Furthermore, the older a version of a program gets, the more of its devs switch jobs, retire, etc. You can bring on new devs and make them learn the old code base (current job market notwithstanding), but once again, that takes man-hours, especially if the old code base was written before everyone started thinking about maintainability. You could instead put them to work adding a feature to the next version that a larger segment of the market has been wanting. And you need to keep releasing software - the competitors are, and the devs' salaries don't appear out of thin air.