I don’t particularly enjoy waking up to all my programs are closed because Windows decided that tonight was the night that it restarted.
It’s slightly better on MacOS, where programs using MacOS-specific APIs can restore their state on startup, but that doesn’t include most of the third-party applications. But MacOS doesn’t force the reboot. Yet.
The complaints about this lifecycle model from app developers is that is hard to program for. Windows 8 was also strict enough forcing this lifecycle (closing out applications sometimes seconds after minimizing and attempting to restore them quickly on window restore) that it showed how bad developers can be at programming hard things like proper app lifecycle management, so they begged Windows to be less strict about it.
(That was one of the magic things about Windows 8 that Windows 10 doesn't quite replicate: minimizing a properly built application and watching the application's memory and CPU usage quickly drop to zero.)
Of course I know the reason - that's because my machine is memory constrained, I routinely run on ~90% RAM usage. But hey, that 8GB of RAM isn't here for vacation, it's to be used.
Personally, I find the mobile app lifecycle - which is where they took the idea from - to be incredibly annoying. I like to have control both when applications die and when they start up (which, on Android, is utterly unpredictable).
I have a "metro" style SSH application, and windows regularly decides it should close it, which kills my active SSH sessions.
I understand that they removed the ability to opt-out to force developers to change to a more appropriate model, but there are cases where a task cannot be suspended (because, for example, it's interacting with another computer). Having to re-log-in to my ssh session the 4th or 5th time in an hour is absolutely infuriating.
The support for background processes continues to improve. Windows 10, for instance, now supports a "single instance" background processing model where background processes can be seen as an invocation of the UI app (if already running) and vice versa (the UI app is presented as an invocation to the background process if that is already running) with hand-offs from one to the other, simplifying the programming of some of the interactions between background and UI for some apps.
Besides, it's a trend that I expect to see reversed soon enough, given the direction in which Linux desktop is heading nowadays.
Edit: empirically, what has greatly simplified my life in this matter is being old-fashioned about partitioning. I keep /home and /opt separate, so upgrading typically consists of saving a list of packages, wiping everything but /home and /opt, doing a fresh install and reinstalling the packages. Depending on what I'm installing (OpenBSD on my laptop, Debian on my desktop) it takes about five minutes of accepting defaults and waiting for progress bars to fill, then another ten minutes until the packages installs (most of those ten minutes is spent on LaTeX, to be honest).
You might want to try a rolling release distro, something like Antergos (Arch + Tweaks)
There's a bunch of stuff that doesn't work on Debian, either, but at least it's the same stuff for about a year or so.
Nowadays I get to write Linux software at work so I get all the bleeding-edge stuff there, and dealing with the latest and greatest breakage is part of my everyday job. I have no desire to do it at home, too.
Edit: plus, to put it bluntly, it's really no longer fun. When I said goodbye to Windows, back in nineteen-ninety-something, I did it to get away from the mind-boggling complexity and uncustomizable blackbox blurb on my hard drive.
Nowadays, it's an order of magnitude more complex; some of it is unwarranted and much of it just isn't reliable. Windows' and OS X's isn't, either, but at least it's nicely tucked away behind an interface that works, so you're not exposed to the crap underneath. I spend a lot more time wrestling with my computer than I'd like to.
I can mostly navigate through this whole maze of thisandthatkit and systemd-everything, largely because I'm exposed to it for eight hours a day, whether I want it or not, and have seen it being developed. But I don't think it's sustainable, and I have a feeling I'm going to call it quits one day.
End result is that the DE people keep pushing ever deeper in the stack, violating long standing layering, that made it easier to reason about why something broke, in the process.
I have no idea what happened after that but it's really screwed up.
Linux doesn't lock files; instead it creates in-memory copies of them. So the updater can update the on-disk version without any troubles. But if you think about it, it has the exact same problem: until you reboot, your Linux box is still running the known-buggy code.
So there's absolutely no technical reason Windows needs to reboot more than Linux. The only difference is that Linux developers decided "meh, the user can reboot when they want". But unless you reboot after installing your Linux updates, your computer still has the bugs.
This has not been true for some time, and not in any mainstream distributions currently that come to mind.
On Ubuntu, certain packages are labeled as needing a reboot, and when you update them the control menu thing with a gear in the upper-right corner turns red, and the Update utility says you should reboot. Then you know you should, but it doesn’t force you to.
EDIT: There’s also Ksplice, which was going be a standard until Oracle bought it, and Red Hat kpatch. Those allow you to update a kernel without rebooting. Most other programs still require restarting, but Linux benefits from a saner architecture, where the web browser isn’t an “integral part of the operating system,” and the font renderer for the GUI and for printing is not part of the kernel. You need to reboot less.
Jameskegel said that in any "mainstream distributions", after you run an update but before you reboot, the OS is running the updated libraries. I honestly don't understand how that is possible.
> Newly created processes will use the updated contents, running applications will access the old version.
In other words, currently running code is still running the known-buggy version, exactly what I said originally that kicked-off this whole discussion.
And then later in the same post (just so we're clear about what you said): "But unless you reboot after installing your Linux updates, your computer still has the bugs."
Linux does not require a reboot to update.
But this is not what you suggested, is it?
But hey, suit yourself.
If you meant forced restarts at a given time (or whatever windows 10 does) then you're right. For now, and hopefully forever.
Windows 8 was out in 2013, 3 fraking years ago. Even Ubuntu, which is free, has LTS supported for 5 years.
When you pay good money for an OS you use in your business, it's damn logical you want it to last you almost a decade without having to play the upgrade game all over again.
I don't have time for that. I don't have the money for that. And I don't need that. The OS is not a product I want to think about, it's this transparent thing that I'm supposed to forget while I doing actual work.
This Windows upgrade is uneeded and unwanted.
Yet it kept comming back to disturb me in my work with stupid notifications, reminding me that one day, it may reboot my computer at the worst moment, eat all my hard drive space or make me loose hours locking my computer.
What happened ? Well, one day my windows pratition broke for some reason I can't figure out and I got a perpetual guest account. I'm not even trying to fix it. I just stay 100% of my time on my Ubuntu one, because I don't want to deal with it.
The upgrade is free. You are being supported. You can choose not to upgrade (and I think you're wrong, but it is your choice). What I don't understand the mindset behind "no, I won't upgrade, but I want a bunch of feature-change patches without making me upgrade" (as with the assertion that the auto-restart logic could/should be changed for Windows 7, not Windows 8).
edit: regarding downvotes... if the software versioning is mission critical for a system, then having automatic updates and being connected to an external network is a risk to that critical system. I wasn't trying to be pedantic, but was being perhaps more terse than some may appreciate.
this is not a solution to a problem. it's incredibly reductive and close-minded.
Past that, is there a reason that system should be connected to the Internet in the first place?
Much like how cars must be serviced in regular intervals if they are to be operated on shared infrastructure (roads).
But that is not the world we live in, and those are not the rules in play, and even if they were, forcibly updating people's machines against their wishes would not be the solution.
There's literally no way they can win this. If they force updates they're evil for rebooting PCs. If they don't, users don't update because it's always inconvenient and then they blame MS on malware.
Windows has actually gotten better at this over the years, but it's still nowhere near every other OS in the world.
When?
That they are running software on thousands or hundreds of thousands of machines that was advertised as an update but is instead advertware is a crap move on their part. It's probably not a strong legal argument, but IMO they should be paying me to use my system to run software of their choice, much in the way that I would pay to use Azure to run software of my choice on their systems.
That said, I'm kind of with GP, I'd rather have most people updated to the current windows, spyware issues aside, it's better for stability/security.
Never. Microsoft has lost my trust forever with these issues.
I may upgrade when the OS is "finished." For now, though, I think I'll let others trudge through the mud of a forced public beta.
Maybe, just maybe, I might take the plunge when the video games I built my PC for actually require me to.
Until then? No thank you.
I'm not shy about installing updates, but if I'm busy working I would delay it a couple times. Then I'd not use the laptop for a few days (with it in sleep mode), by then I'd have forgotten about the update. I was bitten by forced reboots in 7 many times.
8 added a "Your PC will reboot in 15 minutes" and that was so much better from a laptop perspective. W10 insider builds currently tell you to set "inactive hours", and this works fairly well for both phone and laptop. My phone updates while I sleep, my laptop pings me to reboot at my leisure, for it is never awake & inactive.
In this case it's Windows 7's Restart logic that is old/bad (and long has been), not Windows 10, but Windows 10 of course is getting blamed for it, not Windows 7.
It's another reason people should stop worrying and upgrade to Windows 10. ;)