As a user of software, I couldn't agree more with the OP that automatic updates: > should always keep the user centric > should be incremental and security or bug fixes only > should never update a user interface without allowing the previous one to be used as the default > should never be used to install telemetry or spyware or to re-enable it if it was previously switched off > should never be used to install other…
If you have to do all that, it costs a lot more to develop updates. I think most developers mean well but just can't afford to do it all. For example: > should be incremental and security or bug fixes only That means maintaining multiple releases of the app, and porting fixes between those versions, while also maintaining data migration logic when fixes affect data formats. I've maintained an enterprise software suit…
As far as file formats go, how often do you need to change these, anyway? I'm fascinated with most of the mainstream file formats (except mp3, mp3 sucks) — they're built with extreme extensibility in mind, and you have to try really hard to make something incompatible with the rest of the world. So, then, what stops you from designing your own file formats to be extensible? You add a new feature, you add a new section to your file. The user downgrades, and the old version skips over that section because it doesn't know about it. It's easy.
And besides, I've seen a lot of software that's able to save files that are 100% compatible with older versions of itself if that's what the user asks for. Microsoft Office is one example.