Software generally gets better over time, but this does not mean it’s getting better and better every day in every way.
Software quality has so many dimensions that it is impossible to make progress along every front with every release of every product. Life’s full of trade-offs. A successful software project will improve over time in the ways that matter to most of its constituents. That doesn’t mean that every user will be better served by each subsequent release, especially if the user base changes.
It’s inevitable that some software will get worse over time, as far as a minority of users is concerned. See, for example, this post about Word Perfect.
Commercial software may disappoint tech savvy users over time as such users make up a diminishing proportion of the software market. One reason programmers often prefer open source software is that they are the target market for the software.
The dynamics of open source software are more complex. Software written by volunteers is driven by what volunteers find interesting. This could result in software becoming wonkier over time, delighting geeks and alienating the general population. However, many volunteer developers find it interesting to make software easy to use for a wide audience.
And not all open source software is developed by volunteers. For example, the majority of work on the Linux kernel is done by corporate employees. The companies paying for the development have a commercial interest in the software, even though they don’t sell the software. Commercial and non-commercial are fuzzy concepts.
A company may sponsor an open source project because they rely on the software. Or maybe they want to undermine a competitor who sells an analogous project. Or maybe they’re sponsoring a project because they want to crow that they sponsor open source projects. Each of these motivations could make a project better for a different constituency.
Related post: Software development and the myth of progress