Automatic update of the client in background. (à la Chrome)
The client should automatically update itself. The update shall be downloaded in background and automatically be applied during next start-up.
Rando Wiltschek commented
A patch updater that only downloads and installs files that have changed, instead of the full 400MB reinstall every time would already help a lot...
With the new version 6 comming and the fact that you release new versions much faster now, it would really help to have a way to automatically update clients.
Chrome is a very good example for this. It's always the latest version without anybody needing to install an update. This is how they do it:
You need to have two clients installed. While the user uses client A you can update client B in the background. When the program is started the next time, client B will be started instead of client A. Which makes it possible to update client A.
One problem is, that the client will run with user privileges and you'll need an admin context to update the other client. That's why you'll need an update service running as local system service. This way you won't see any Windows UAC.
Another problem might occur in multi-server-environments, where one client connects to multiple servers with different versions. I think you should add an option to the client configuration wizzard where the update server can be set. Leave it empty and no automatic updates will occur.
Finally the server will have to provide client setup files, somehow. This should be easy though, as you use the same setup files for servers and clients. Just store the setup somewhere the server can find and serve it.
I really hope that you consider this feature. Updating all clients is a real burden! And with that frequency of releases I'll lose my head =D
Göran Wallgren commented
There is a setting to force everyone to be on the same version even if the older is compatible. You know we keep all 5.0 compatible and 5.4 has been keeping compatibility for a year already.
Yes, it is quite an effort to stay up-to-date.
Will also need a proxy configuration on Linux (eg. RSS Notifications can't get past our firewall).
For large teams, perhaps the admin could update a flag on the plastic server to let everyone update (maybe even cache the new versions on the server)?
Maybe there could be a litte update note under the main menu when the client version is older than the server version.
With a click on this note a dialog shows up with some little bit of information and an install button which starts a setup of the exact same version which the sever has.
The administrator would only have to update the server and all clients get the notification about a version change and the chance to update to the excact version the admin has installed.
I don't care if you download the setup files on each client from the web, but maybe the server could hold the setup files and share them with the clients ;) this may reduce traffic and problems with clients connected via VPN and without internet connection.
Adminpsantosl (Admin, plasticscm) commented
Very interesting thread by the way!
It depends a lot on the specific team. For big ones, the admin is the one controlling the update, so letting everyone to upgrade can be an ugly behavior.
For small teams it would be fine, though.
All ideas on this will be more than welcome! :)
Plácido Monteiro Dinelli Bisneto commented
Maybe we can use the best of 2 ways.
Maybe a dialog telling about the new version at the start up with an button to perform the update.
Or a checkbox to tell plastic it can auto-update at start up! :)
I would prefer a simple dialog telling me an update is available. I would definitely not want Plastic to update by itself while I am in the middle of something.