"Software rot" is both very real, and one of the most difficult things to explain and understand.
While it's certainly become better in recent years, it remains something to consider when diagnosing a system experiencing unexpected slowdowns. While there are ways to reduce its impact, fixing it can be a major effort.
Software rot is the slow degradation of your computer's performance for no apparent reason. It's most commonly caused by installing and uninstalling software, but can also be the result of software updates increasing resource requirements. Avoid software rot by installing additional software only when truly needed. Recover from software rot by reinstalling your system or reverting to a backup image.
Software rot
The concept behind software rot is very simple: for seemingly inexplicable reasons, systems become slower and more unstable over time, even though you've done nothing you would think should cause it.
I say “seemingly inexplicable” because understanding exactly what changes are occurring, even though you believe you've done nothing, and exactly why those changes are having the effect they seem to have is almost impossible. However the effect you and I experience is very, very real.
To be clear, software is not like some kind of fresh fruit that you have to keep in a refrigerator to keep it from degrading. Software, untouched, should remain exactly as it is as long as the computer it's installed on keeps running.
And yet, it feels like it does decay over time. It seems to slowly "rot", if you will.
The key is that word I used above: "untouched". We're doing things with and to our computers all the time.1
Installing and uninstalling software
This might be the number one cause of software rot over time. It particularly affects those who love to try things out by installing them on their computers, and then uninstalling (or perhaps not) after some time.
The issue is a complex one, but boils down to the fact that modern computer programs are incredibly complex. As a result, installing an application is a complex operation affecting many different parts of the computer beyond just the application itself.
Many people tend to focus on the Windows registry as the root of this evil. While poor registry management can be part of the problem, there are frequently much larger issues at play.
Applications try, as much as possible, to avoid duplicating functionality and avoid re-inventing the wheel by sharing code, or by using libraries of code that are designed to be shared among multiple applications. For example:
- Program A installs and uses library Y.
- Program B uses library Y also, but doesn’t need to install it since it’s already there by virtue of program A being installed.
You save disk space, and both programs A and B save development cost since they both didn’t need to each independently invent library Y.
What happens when you uninstall program A? Should it:
- Uninstall library Y, since it was responsible for installing it?
- Leave library Y, since another program is using it?
- Leave library Y, since another program might be using it?
(I have to call out the difference between “is using” and “might be using” since there is no reliable technique to keep track of who’s using what.)
No matter what decision is made, it can be viewed as either right or wrong.
Version accumulation
The situation gets even more complex when applications end up relying on different versions of the same libraries. For example:
- Program A uses version 2.14 of library Y.
- Program B uses version 2.12 of library Y.
If version 2.14 of the library is present because program A was installed first, what should program B do?
- Assume 2.14 is the version to use, since that's "better than" then version 2.12 that it requires? If that assumption is wrong, program B fails.
- Assume that only 2.12 will do and install it along side of 2.14, if that's even possible?
- "Downgrade" the library by replacing 2.14 with the version 2.12 that it requires, possibly breaking program A?
Or if program B was installed first, what should program A's installation do?
- Replace version 2.12 of the library with version 2.14 because it's a newer version and an "upgrade", possibly breaking program B?
- Install version 2.14 of the library along side 2.12, if that's even possible?
And what, if anything, should happen with either program A or B is uninstalled?
The kicker is that all of these answers are absolutely right, and absolutely wrong, depending on the programs involved, the libraries involved, and a multitude of other things.
Most often this is why you’ll often see multiple versions of libraries, like the Visual C++ Runtime, installed in Windows. Apparently the approach taken is to install the version you need if it’s not already there, and then never uninstall it in case another program is using it.
The net result of all this confusion is applications break, misbehave or simply behave poorly because the assumptions that they once made about what resources to use and how to use them are challenged as applications are installed and uninstalled.
Updates
One of the things many folks point at are software updates; specifically Windows Update. We keep hearing news stories of systems that have problems after an update.
Yes, I would say this is a form of software rot. Bad updates can cause problems. Not, however, even completely benign updates can impact your system's performance by pushing resource requirements higher, perhaps even beyond your system's ability to cope.
Nonetheless, continuing to regularly take updates is important. You are more likely to be impacted by an unpatched vulnerability if you don't take updates than you are by some kind of destabilization if you do.
Don't let headlines spook you into poor decisions. "Bad" updates make headlines because they're uncommon. "Good" updates never make news because they just work. Most updates, by far, just work.2
Preventing software rot
Avoid installing and uninstalling software.
I know it’s nice to try out software from time to time, but if this is something you do frequently it’s best to use a sacrificial machine, or better , a virtual machine, you can rebuild from scratch or restore from a backup image after your experimentation.
Take a backup before and restore it after a software trial. This guarantees changes made by the software are removed from your machine. Take the backup before even if you don't plan to restore it, just in case something goes wrong.
Fixing software rot
If you suspect software rot as the cause of your machine’s performance issues and instability there are only two approaches to recovery:
- Restore the machine from an image backup made when it was stable and performing properly.
Or
- Backup, reformat and reinstall the operating system from scratch, install the applications you need from scratch and restore your data.
While the situation has improved in recent years, software rot remains enough of an issue that individuals such as myself whose job it is to try out software of various sorts will simply plan on a complete reinstall of the software on their computer (by restoring a backup or performing an actual reinstall) every few years.
Do this
Subscribe to Confident Computing! Less frustration and more confidence, solutions, answers, and tips in your inbox every week.
I'll see you there!
Podcast audio
Footnotes & References
1: I was really tempted to bring up an analogy that some things are the equivalent of picking up food with clean(ish) hands versus dirty and disgusting hands, and that some of the thing we do to and with our computers have various levels of analogous cleanliness. I'm afraid people would take me literally so to be clear: the actual state or cleanliness of your hands has nothing to do with software rot. But wash your hands anyway, it's just good personal hygiene.
2: Protect yourself with regular backups if your concerned. Protect yourself with regular backups even if you're not concerned, since backups protect you from much, much more than the occasional bad update.
Software rot has certainly gone down in recent versions of Windows. Before Windows 7, it was necessary to reinstall Windows from scratch when the system slowed down or got wonky, usually after three to six months or a year. Windows 7 was an improvement but still benefitted from a reinstall after a time. Windows 8 was better, and I have never had to reinstall Windows 10 from scratch. So many people complain “Never 8” or “Never 10” but on my four Windows computers Windows 10 has been the smoothest OS so far and one is a 10-year-old Sony Vaio laptop. I ‘ve had Windows 11 on 2 machines from the first time Win 11 was available. Win 11 is the most stable OS yet, much more stable than my Ubuntu machines.
I had a recent experience with possible software rot ,or just possibly a machine with too much junk in it..
I found that my Dell Desktop (XPS 8900) was beginning to get a little cranky and some programs and features were not really working as advertised, so I put out a call to several of my computer-wonk friends and one suggested that I do a WIN 10 “Repair” rather than a Reinstall or Reset. After looking up Repair on line, I made up a USB stick with the .ISO from the WIN 10 DL site, crossed my fingers, and let ‘er rip. I figured that the worst thing that could happen was that I would have to reinstall via my system backup from the night before and live with a grotty disk.
However, to my relief (and no little surprise), the “repair” seems to have worked. Everything was where it was supposed to be and the few issues I had with nonworking features disappeared and everything works fine again.
This is a technique that does not get a lot of exposure because it is risky if you deviate even a little from the repair procedure. It worked for me!
Leo has written articles on how to perform a Repair installation
And this article mentions several ways to fix Windows when there are problems.
Five Steps to Repair Windows 10 Without Losing Programs
#5. Perform a refresh install is the Repair installation method.
I have been using Windows computers since 2002, and this comment is being written on one which dates from that year and still has the original operating system, now with hundreds of programs installed. It is essentally as fast as it ever was, except on some of the more complex websites of today. The original RAM and hard drives have been replaced and expanded.
How has this been possible?
When changes to the system have slowed it down, I have always reverted to a previous version. I do not use the built-in System Restore to do this, but a program called Rollback RX which completely restores the previous state, even after malware if necessary. Sometimes I use a back-up from an external drive: this has been needed on very rare occasions such as hard drive failure or once when I did something foolish which corrupted the Rollback snapshots (not easy!).
If I uninstall a program, I use an uninstaller like Revo which can scan the registry and drive for left-over entries and files, although after reading Leo’s article I am more aware of the risks entailed.
Here I realise that I am opening a can of worms, but I do use a reputable registry cleaner (and even defragmenter) from time to time, knowing that I can roll back even if the system becomes unbootable. This may be less useful on modern systems.
I have also found the Tweaking Windows Repair Tool useful from time to time when default settings in Windows had become detrimentally altered.
I am wary about updating programs and drivers, as this can cause more problems than it solves, and newer versions of programs tend to be ever larger, creating unresponsiveness which can feel like software rot. Browsers are the exception, as they need to be up-to-date to be effective: I use a very slim one.
Except for using Rollback RX (which I don’t use), I could have written what BAW30s said.
On my systems nothing gets on or off without my evaluation and permission. No willy-nilly updates for “new and improved” stuff. If it works, leave it alone. No unnecessary processes running in the background. Of course, with Windows 10 you have no control over your machine, so expect rot to be forced on you. Many of the factors contributing to software rot that Leo described are actually “features” of Windows design. This type of rot is rarely an issue on MACs or Linux-based systems. Windows design is like an archeological dig site that goes back thousands of years. You’ll find layers and layers of relics piled on top of each other. But unlike pieces of broken pottery, these relics interact with each other, contributing to the rot.
I like the idea of using a virtual machine to test new software. I even installed one some years ago. The problem is that, as far as I remember, the virtual machine OS needed a proper license number without which it would not work or complete. I have a number of computers running with licensed OS, but I cannot use those license numbers to install a virtual machine. My option would be to buy a license for each virtual machine I want to install. I have decided instead to use one of my old computers as a test bed if I am uncertain about trying any new software.
Leo’s suggestion of using virtual machines is a good one, but the previous comment about licensing Windows is also correct. I am surprised not to see a mention of Windows Sandbox (https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-sandbox/windows-sandbox-overview), which solves the license issue for those who can run it.
The Windows Sandbox environment is something nearly all newer machines can run with only minimal setup, and allows for precisely the ability to perform an initial “smoke test”, ensuring there is no permanent change to the live Windows environment. It is not well-suited for any long term use, but that is exactly the point.
As with anything Microsoft does these days, there is one caveat: while there is no cost for this feature, it is only supported under Windows 10 Professional/Enterprise/Education editions.
And, frustratingly, if, like me, your machine is configured to run a different virtual machine solution (like VirtualBox, as I do), the Windows Sandbox Will Not Run. Honestly, that, and the fact that it’s not part of Home edition, is why I’ve not mentioned it at all.