Web applications are inherently delivered to users in an adhoc fashion and users have to just accept that they might receive a different version of the software every time they use it. In the spirit of “move fast and break things”, but also in the spirit of being “agile”, software vendors routinely change their applications whereas traditional software releases have become somewhat rare. From the developer’s point of view this is great for the sake of fast iteration and quickly approximating the version of the product that users will actually like to use. From a user’s perspective however this can be extremely frustrating if the software changes without their approval.


There are a number of reasons why users might prefer to use a specific version of an application: Newer versions of the software might change the UI, remove functionality, introduce bugs, add surveillance telemetry, require newer versions of supplementary software like an OS version, randomly crash, or drop support for supplementary hard- or software all together. Developers think that they only ever improve their software, but users regularly disagree.

That is why ==users have a legitimate interest in running older versions== of some software more or less indefinitely. The only reason against doing so is a potential lack of access to security fixes, but that is exactly why developers should try their best to backport fixes to older version (or let the user do it for them1). Developers say they “put the user first” and do everything to please their users, but that is completely hypocritical if at the same time they prevent users from running the version of the software that users actually prefer.

How can developers force users to upgrade to a newer version of the software? Depending on the specific application developers might:

Some developers are accommodating enough to build software that allows for a wide range of customization and that never breaks compatibility. In such a case, the reasons for sticking with an older version are not as urgent. I would still make the argument that this is a more general issue of control over the software: ==Users deserve complete control over the software that runs on their systems!==


As a developer it sure seems attractive to always force all users to use the latest version of your software.

The developer perspective might be somewhat understandable but these reasons are not entirely convincing. In some cases the tradeoff to annoy or exploit users might be somewhat reasonable, but more often than not it isn’t.


How does this relate to the web? After all you can have well- and misbehaving applications both on the web and native. You can save a web application to disk and then run it as-is whenever you want. Similarly, native applications can force or nudge updates in the ways mentioned above. The reason why this relates to the web is that the defaults change when going from native to the web.

Web applications are often not self-contained application that cant function without a network connection. Some do, and that is great, but they are not the default. Web applications are usually intertwined with some networked API that they interact with. Even if the client-side script can technically be run anytime, the remote service can be changed unilaterally by the software vendor. This usually breaks the old version of the client application leaving users with no other option than to use the latest client.

Again: This is not inherent to how the web works. The web doesn’t suck by design, it just sucks because of how software vendors use it.


Software freedom is about having control over the software you run. That includes the decision to keep using a specific version of some application. Developers don’t have an obligation to do free work for their users of course, but they should not make it needlessly difficult for users to exercise their freedoms.


  1. It is understandable if developers can not afford to maintain a bunch of different versions of their software at the same time. But if they can’t, at least they should give users the choice to backport the fixes themselves. Most users might not bother, but at least it should be their decision.