Similar question: How do you handle versioning in a multi-sided project?
Since the question above was asked almost 4 years ago, I was wondering if any new ideas have emerged .
We have a situation where we develop a platform that will have multiple instances. For example:
In general, all instances should have a closely synced version lifecycle, but sometimes we may want to have a instance with the early-access version intended for testing.
In addition to above, we are going to have Android/iOS apps which will connect to some instance (user has to select which one). It is important to note that all instances operate on a different database - no replication should exists between any of these.
Once we make changes to server-side, we are going to release new version of both server and client version.
For servers, it should be straightforward as we control which version is installed on which instance.
For clients, as soon as we release a new client app version, users can pull it from respective store and get it installed, but what happens when they actually use the instance which is still running the old server version? Or when client is unable to update due to outdated Android/iOS version?
Any idea on how do we handle that?
One thought I had was to provide an endpoint
/version.json so the client app can get the server version and choose how to operate. But this, imho, could quickly lead to massive code bloating/duplication. What do you think?