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.
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.