pull down to refresh

Automatic software updates and why you should care

Depending on your perspective, automatic software updates can be a good or bad thing. However, in the world of bitcoin, the concept is extremely important.
For most non-technical users, automatic software updates is something that just happens and you never think twice about it.
For technical users, the story is likely a little bit different. If you're like me, you've probably had things broken that used to work when you perform a software update, whether it's for a certain application, or maybe an operating system. Have this happen to you enough times, and you grow fearful of updating software.
I have gotten to the point where for operating system-type updates, I only update if there are critical security issues that need addressing, or there is a feature that I really want to use. Note, this does not include work-provided machines where I have to update to remain in compliance. I'm mostly referring to personal machines, though I'm still usually a late adopter of updates at work, too.
Generally speaking, it's nice that users have the choice as to whether they want to update their software.
On mobile platforms like iOS or Android, it's very easy to update apps. Go to the app store, find all updates available, read about them (if you care), and tap Update. Boom, done. The OS often even reminds you about how many updates you have available via badges in the UI. But still, this is a choice. You can choose to enable auto updates for your OS as well, if you like.
Some apps have gone the route of forcing you to keep your installation up to date by effectively doing a version check upon startup (presumably by querying a remote server to see what the "latest" version is, and comparing against the installed version). If these two versions differ, the app is basically bricked until you do an update.
As a software engineer, I can certainly understand why developers do this. It's infinitely easier to handle user bugs and issues if everyone is running the same version of the app. For every version available to users, the complexity of supporting users increases exponentially.
There's even entire industries focused around controlling when users' software updates, making the lives of software engineers that much easier (see Software-as-a-Service model).

So, how does this apply to bitcoin?

Bitcoin is explicitly designed to be backwards compatible. Every new enhancement or feature must work with older versions of the protocol. This means you can setup a bitcoin node and never update it ever again, and it should still function many years into the future. This is incredibly hard to maintain from an engineering perspective, but it's very valuable.
This is actually extremely important, because as someone who runs a bitcoin node, it is UP TO YOU which version of bitcoin you run. If you don't like what's gone in to more recent releases, you don't need to run it. You can pin yourself to the version you have now and never update again.
You can also choose to take updates slower than bleeding edge, to give yourself time to evaluate the changes to determine if you agree.
The key here is, no automatic updates. You control your node. You update if and when you want to. It's not required.
With the tools in the ecosystem today that are geared towards simplifying the process to spin up a full node, I think for many "n00b"s, it may feel like the right choice to update bitcoin as soon as a new release is available.
I urge you to untrain your brain in this regard, at least when it comes to bitcoin. Don't blindly update to latest released just because it exists. This is where learning to read release notes becomes very important (a skill all should have, IMO).
I welcome lively discussion in the comments! What do you think about this?
Agree, too many sleepwalking nodes shifts too much control to Core devs.
reply
Interesting input, I always had my updated to auto…
reply
I never, ever, do any automatic updates. I use BTRFS as my file system of choice and I take hourly snapshots of all my subvolumes. Whenever I do any updates, I look at the info about what's being upgraded and I apply it manually, never automatically. In case something goes wrong with the upgrade, I revert to the previous hourly snapshot, going back to a known working state.
I do the same with all my data subvolumes, so in case I make any mistake, like deleting a file or directory, or changing their contents, I can go back to one of the snapshots previous to the bad change or, more often than not, I simply browse to it and pick the good file/directory and sync it into the current subvolume.
reply