It's an interesting problem.
Live updates without requiring a restart is going to be a complex task, how do you reload a library in use by a program without crashing it? Especially when Windows has a decade+ of software compatibility.
Their current solution is scheduling updates to periods when the computer is not in use. I think recently they added an option for you to define a set of hours where updates take place.
But the problem with this is that people don't treat Windows PCs like always-on devices like they treat mobile phones and tablets. So in those night hours the computer is off forcing daytime updates.
Linux (and other Unixes) have been doing live updates to the entire system since .. basically forever; Except for the kernel, there is very rarely a need to restart. And they let you restart the kernel on your own schedule. Windows Kernel developers chose a different set of file system semantics, and that is what makes it hard on Windows.
In fact, if you can't afford the restart even when you schedule it, there's ksplice and a variety of similar solutions that can switch to a new kernel without a restart.
I did have firefox behave weirdly once after an upgrade until I restarted it, around v15 or so -- but I believe even that is no longer an issue; at the very least, I haven't had any issue with upgrading firefox while using it, and restarting it a week later.
That's actually not entirely true. Updates to a shared lib require restarting all running programs that use that lib. Not a full reboot, but probably a service restart or you're not protected by the update.
I think rebooting the entire system to make sure all apps and libraries are reloaded is fine (I do that on linux servers at times if I made a big update and can spare the downtime). Making a user-friendly interface to only restart apps that need restarting sounds complicated.
But whatever windows does is way worse, I dread seeing the "please wait while Windows is configuring your updates" screen. I have an SSD, rebooting Windows takes less than 30 seconds, it's a non issue. But those update installs can take a long time and your computer is completely unusable while that happens.
It's also frustrating when that happens while shutting down because I normally turn off my computer's power outlet when I'm done (it switches off the rest of my equipment) so I have to wait patiently for Windows to allow my computer to shutdown before I can do that.
Only since Microsoft bought them out. Skype used to be a fantastic piece of reliable telephony software. Now it's a fantastic piece of NSA-backdoored garbage loaded with ads.
> It's an interesting problem. Live updates without requiring a restart is going to be a complex task, how do you reload a library in use by a program without crashing it?
They don't, the program keeps using the old library until it's restarted. Some Linux distributions restart daemons when they or their dependent libraries are updated, but that can't be done for desktop software. Firefox sometimes notices it's been updated and pops up a warning with a "Restart Firefox" button (which keeps the session state), though AFAIK it's only for updates to Firefox itself, not for any of the libraries it might have loaded.
If you never restart a Linux desktop (or at least log out), you will be running outdated libraries, even if you run updates in the background.
(The best solution would be what Android does, where every program is supposed to know how to checkpoint itself, and they are forcefully restarted on a upgrade, transparently to the user. But even there, updates to system libraries still require a full reboot.)
> services: they are specifically designed to be updated and restarted
I write plenty of daemons (you call them "services"). What exactly do I write
specifically for them to be able to continue to run when a library is
upgraded?
Sorry, I meant things like dependency management among services.
I don't think systemd supports what you are asking but it shouldn't be too hard to write a service that restarts other services if their shared libraries change?
Yes, but they continue to run while the library is being updated. That's the
point. They can get restarted once the update process finishes, which takes
a lot less time than be shut down, wait for update, and be started again.
From what I know, Windows doesn't allow a library to be replaced until it's
not used by anything, which is more intrusive and is IMO the root cause
(though indirect) why people hate updating Windows.
Their current solution is scheduling updates to periods when the computer is not in use. I think recently they added an option for you to define a set of hours where updates take place.
But the problem with this is that people don't treat Windows PCs like always-on devices like they treat mobile phones and tablets. So in those night hours the computer is off forcing daytime updates.