The correct comparison would be installing Debian/Raspbian Jessie or Wheezy then upgrading to Stretch
You missed the point I was making above. One does not need to install Jessie or Wheezy and then upgrade to Stretch. That would be silly when you can simply install Stretch directly. This is not the case when reviving a Win 7 machine and bringing it up to the latest standard.
I'm not sure what drivers you had to hunt around for just to get Windows 7 to connect to the net or upgrade itself...
It's a long story but as you asked, the short of it was:
When you create a Win 7 installation DVD from the download available from MS it comes with little in the way of drivers. The result being that ethernet was not working and no WIFI dongle I had worked. Eventually I found a download for a WIFI dongle, put it on a USB stick and installed it from there.
With networking available I could then create a Win 10 installation DVD from MS using their media creation tool. Then let Win 7 upgrade itself to Win 10 from the installation DVD.
With Win 10 up and running the networking was not functioning again. After some time I discovered that if I removed that WIFI driver I had installed previously then Win 10 would use it's own driver and everything worked again.
If you know of a quicker, simpler way to do this do let me know. Perhaps I missed an important point along the line.
...but that's not the experience for most people.
True. Most people get their Windows pre-installed on whatever machine they buy. Well fair enough, not many people want to geek out on this stuff. When they have problems with it, need a reinstall after a disk failure or whatever, they pay someone to fix it or rely on whatever nerd they have in their circle of family and friends.
And would your experience really have been any easier if installing Linux ?
Categorically yes. Having installed Linux on a lot of machines since 1998 or so and a few MS operating systems from time to time I can confirm that bringing up a Linux distro is far quicker and easier.
Memory in C++ is a leaky abstraction .