Auto-updating programs are definitely useful. When one evaluates their most-used programs, they’ll probably just as well notice that a majority of said programs auto update in the background. For instance, two of the programs I use the most—Chrome and Atom—are both great examples of auto-updating programs. “But,” you might ask, “why is this important?”
Great question!
Auto-updating means the program itself does the updating, so an action isn’t needed by the user. This can be extremely beneficial to users who utilize certain programs regularly, but to perform an outside action. For instance, we use Chrome to access the Internet of Things. Although Chrome is one of the first to auto-update, it can be said that previous web browsers were clunky and annoying, having to update them periodically to avoid running into bugs.
Auto-updates for your cross-platform application
There is great tool by Microsoft, called Code Push, that allows your Cordova and/or ReactNative apps to update small features directly on the users device without waiting for store approval. This is hugely valuable in terms of time for the developers—so they don’t have to re-submit their apps to the Stores due to minor updates—as well for the user, as they won’t have to download the latest version of the app if only minor updates have been pushed. There is also another great tool called Squirrel for desktop apps that embraces the same features.
Libraries that help with auto-updating
There are also libraries that allow the “hot swapping” of code while fixing changes during development. It helps to not have to restart the program just to see the changes. In React, using Redux enables hot swapping and time traveling through changes by using the principle of immutability.
Of course, the usefulness of auto-updating can also apply to data, which has been proven by the popular, file auto-syncing platform Dropbox, as well as Google Drive, and Box. There are even self-contained apps, such as Evernote, that promise to sync data between every possible device.
The principle of auto-updating
The principle of auto-updating also applies to servers, systems, and software, ensuring the user is left with as little of the responsibility as possible. It’s also important to evaluate how long all of you’re dependencies will be supported in order to minimize the risk. Most programming languages support a way of declaring package dependencies.
Breaking changes are still problematic. As an unfortunately good example, look at the resistance between Python 2 and Python 3, even though v.3 really only changed a few things, such as unicode by default, print statement as a function, etc. I think JavaScript has the right model in allowing transpilers to enable developers to use new language features before features become standard or accepted. Hopefully by using the auto-updating principle, your program will avoid the problem of having multiple incompatible versions.
Being able to automatically update programs is useful, but still has problems. Most programs or software do not actually use dynamic updating, and need the program to actually restart.