The process seems to be "we have so much lock-in, that literally no matter what we do, we're driving away only a fraction of a percent of users. We're erasing data left right and center, and users only bend over further." No wonder all stops are pulled out with this attitude.
Obviously I cannot speak for MS or for other users, but I see a major difference between (IE,Edge,Chrome,FF) and (OS). If an upgrade renders any of the former unusable, it's an annoyance, but there is a fallback a few clicks away. For an OS...sure, I could whip out a live USB (as opposed to most users), but I'm mostly locked out of my Windows apps, and some of my data.
If you don't see how an OS upgrade is different from an app upgrade within an OS, I honestly have no better way to explain.
(As for IE, don't tell a veteran what the Browser Wars were: IIRC, the rest of the browsers managed to move on without autoupgrades at first, so don't bring up that particular straw man: the issue wasn't autoupdate, it was "IE8 is the pinnacle of browsing, we're not going to update it for years, dev team dissolved.")
> It's more like they got bullied into this by the media, Apple and the tech community.
Oh, yes of course they got bullied! They got bullied into having a totally overengineered OS that is probably a nightmare to maintain, even without the many special switches that keeps faulty big player software from crashing. They got totally bullied into a naive design philosophy for their APIs and into churning out new framework after framework. And of course they got bullied into this by Apple and the media!!1 Google and Apple and all the rest bullied them with their despicable efficiency in rolling out features! /s
Sorry, but painting Microsoft as the poor victim here is a bit rich.
Windows is probably a nightmare to maintain and test for. I can really understand why the engineers wanted telemetry to track which API calls actually are still in use. They probably dream of having just to deal with a handful of subversions of Windows 10 and not with a zoo of rotting 7s, 8s, and XPs. Hence the forced updates.
Many other platforms are lighter and more agile. This entire container thing, e.g., would have been impossible to get started in the byzantine environment of Windows. Heck, I have a hard time imagining the elastic cloud getting started on an operating system that doesn't even allow your processes to continue after logout, and has a footprint in the 10s of gigabytes. Just for the basic needs.
And all of this is not caused by the inconsiderate craziness of evil outsiders, but by how Microsoft operated and designed in the 90s and early 2000s.
Well said. Microsoft has been churning out shit like this and poisoning the entire technology industry for decades. I get a little bent out of shape when people think they're somehow altruistic now because they released Windows Subsystem for Linux. Their OS is still a shit product, and it gets shittier every day.
If Microsoft really wants to do "the right thing" they need to burn it down and start over. Something like ChromeOS with a Linux kernel and containerized emulation for win32/64 apps.
Windows RT, metro apps, universal apps, UWP... were attempts to restart and make things better - didn't work, & pissed off existing users.
Remember how they rebooted Windows Mobile to Windows Phone? Didn't work as well. In fact, they rebooted Windows Phone OS three times (7, 7.5), (8, 8.1) and 10,[1]. Every single reboot cost them users.
[1](Microsoft's attempting another zombie resurrection with Core OS/Andromedia. Let's see if they release it and how it fares in the marketplace.)
I wouldn't even call ChromeOS a brand new thing. They turned an existing product - Chrome, into an OS.
See how Google's dragging their feet with Fuchsia? If their internal politicking (from the android team) is strong enough, Fuchsia will never see the light of day.
Point is, unless Windows' market share evaporates, it'll be insane for them to do the "right thing."
historically they have been in archived in "C:\Windows.old" and later are removed when a new update is installed or if you use disk cleanup->system files. there used to be logic to clean this up proactively if disk space was too low, but my hands on knowledge here is >4yrs old.
this is different than the side-by-side (WinSxS) support that allows parallel versions of the same dll to live on the system. that used to grow at huge rates when you had lots of system updates + lots of apps.
I think chrome started that trend with the the auto update. I am just not a fan. With software if you at least know the bugs you can work around them. With constantly changing software you have incompatibility new bugs. At least with pro version of Windows you can kind of disable auto update.
>At least with pro version of Windows you can kind of disable auto update.
Since when? You can turn off Windows update service but it will turn itself back on. Even with Windows update turned off, they still have a way of quietly slipping stuff into your PC.
No, it works fine in Windows 10 Pro. I got Pro specifically for that reason. When you alter the settings, then Windows Update shows "*Some settings are managed by your organization" and a link to see what group policies are set.
The settings I suggest don't disable it entirely - though I think that's an option, if not one I'd use myself - but it does let you choose when things get installed, after downloading them in the background.
I've been quite happy with this; I generally do want updates when they come out, but also want the option to potentially reliably defer them (or, more precisely, the potential reboot...) for a day or two.
(As for Windows versions, I use Windows 10 Professional.)
As of somewhat recently, it’s possible to defer updates through the settings menu without using the group policy editor (though only on Pro, Education and Enterprise):
That's not what's happening with me. I've written a few times on HN how I have to use the ffg tools to stop windows from eating up my limited data. Du Meter, Netlimiter, Glasswire and spybot -anti beacon.
Most important: Windows doesn't allow me to set my USB modem connection as metered.
Windows update is probably one of the worst engineered parts of the OS. On my quad core i7 with a dedicated GPU it used to take anywhere from 45 mins to two hours to install the big updates and around 30 mins for smaller ones.
Not only they take ridiculously long, eventually you are forced to update upon booting in or shutting down. Never mind that you turned on your PC to, you know, get something done potentially urgently.
In contrast, I can upgrade my months-stale arch Linux box in under 2-3 minutes. After seeing how much better the same hardware can run, there is no going back.
The Windows Update system is engineered so that individual updates can be selected/deselected without affecting the ability to install other updates. The slowness of Windows Update, as I understand, is related to this fact.
However, that being said, Windows Update for me as a user that would apply all updates anyway, was unbearably slow, and a big part of the reason that I switched to Linux and FreeBSD years ago and never looked back.
I guess for enterprises that want to deselect certain updates for various reasons relating to their setup, Windows Update is probably a great selling point.
I still don’t get why it has to be so slow for the default case where all updates are applied though.
> The Windows Update system is engineered so that individual updates can be selected/deselected without affecting the ability to install other updates.
This could be me being completely ignorant of the details, but doesn't Linux have the same thing? I can individually apply package updates, even mess with dependencies -- but my computer updates quickly and doesn't require multiple restarts during the process. Usually, unless I'm updating the kernel itself, I don't even need to restart.
What are they doing that's even more granular than Linux's update process?
Well, here's a fun fact for Windows 7: Microsoft at one point decided that they would allow people to roll forward and roll back updates at-will, and even move to an update at a point-in-time in its entirety if necessary.
Obviously, this is rather insane and takes up a gigantic amount of disk space, and wasn't something they ever implemented. They must have realised this, so they built a facility into their DISM.exe utility to remove all updates that were superseded by the service pack (the switch is /spsuperceded). DISM.exe was released in Windows 7 SP1.
Note that there has never been, and never will be, a Windows 7 SP2, because Microsoft decided to go with the rolling update schedule. What this means, however, is that /spsuperceded will never work as they have never actually gotten to a second service pack.
It appears to me that Microsoft must have forgotten the original plan for clearing out old and useless patch files from SxS, because they rather surreptitiously introduced a new option into the disk cleanup wizard to remove old Windows Updates (to get to it, you need to elevate to admin via UAC in the GUI). This removes the old updates.
I have literally had systems with around 6-8GB of old Windows Update files. The biggest issue is that you think they are deleted, but it appears that Microsoft actually removes the updates after you reboot. I've had one system that took an hour to reboot as it was removing so much junk. I had a friend who had an even worse system, and he had to leave it overnight...
Here's another fun fact (not sure if it's fixed in Windows 10...) but the WinSxS folder is where system files are kept. NTFS does a symbolic link to these folders back to the System32 folder. The problem is that the metadata is updated in one location only, and so if you check the WinSxS folder and the System32 folder, you'll see different file sizes for each folder.
Microsoft actually stopped offering invidiual updates two years ago, citing high complexity and slow update scan times as problems. Instead, they moved to monthly rollup patches that supersede all previous updates.
What I don’t understand is why can’t they just simply replace the binaries and reboot. I am sure 99.9% of pc owner must not apply hotfixes or updates selectively. They could make those fast, and keep the slow process for the 0.1% who need this level of engineering.
Can you expand on that, it doesn't make sense; are you saying databases inherently take a helluva lot longer than file systems to update ... file systems are databases ...
The correct way to describe it is that POSIX filesystems allow you to replace open files but Windows does not, so they had to queue updates until the boot process guarantees that nothing is using them.
The POSIX approach makes it easy to install updates without rebooting but opens you to weird failures if a process loads things during an update and gets the new library A and old library Z. This is generally a much easier problem to handle.
It’s been awhile but I thought that would complicate the way they load DLLs, not to mention the potential impact on legacy code which was doing something unsafe but would no doubt be spun as Microsoft unfairly breaking someone’s security kludge or dubious extension. Not something which can’t be handled but increasing the cost/risk perception.
The big thing, though, is that they had a lost decade or so where the stack-ranking system heavily favored new features over improving existing code. Unless this was such a problem that it became a senior management priority I doubt anyone was jumping at touching it.
Ironically Gnome replicates the registry for the same purpose of holding configuration.
You can't just replace the files and reboot because you can't write to files while they're open, especially executables; so what happens is a huge pile of files get queued for swapping over at reboot.
I think the main reason Windows Update takes so long is that it has its own database, WSUS, which degrades badly as it fills up.
I thought it was all the diff they had to do to cater for all the hot fixes, or combinations of previous updates that the user may or may not have applied.
Not only that, Windows 10 requires multiple reboots during the OS upgrade, then it still requires some processing on the first user log-in after the upgrade.
I have no idea how MS implemented the OS upgrade process this bad.
The only sensible way to update Windows is in a virtual machine hosted by another operating system, so the block caches don't get dropped by the reboots. When operated in this manner you an actually blow through a huge backlog of updates in no time.
I'm confused, so just to clarify:
You're saying that Windows on a virtual machine updates faster than Windows on bare metal? (I'd believe it, mind; reminds me of how some programs perform better on wine)
Oh yes. WAY faster. All that grinding that windows goes through when it starts? Doesn’t happen in a VM because the blocks are cached already in memory by the host OS.
Windows Update is based on packages, which can be installed or not installed and depend on other packages and also conflict with packages. Unlike Linux packages, these packages act more like ... patches, I guess. I think Windows Update spends most of its CPU time on building and solving a big dependency graph.
Yeah, and it’s apparently written in VBScript because a new VM’s first update takes many times longer than, say, compiling Firefox from source. If they had an optimization to handle superseded patches it’d shave multiple hours off of that process.
There are known problems that have been patched [1] causing the insanely long install times we all associate with new Win7 installs.
The fact that they didn't have a mechanism to forcibly install said improvement updates in the older versions before they install the kitchen sink for hours is infuriating, but I can't be that annoyed at them for not rewriting history.
I can, however, be annoyed that they decided never to formally make an SP2 and consequently left anyone running those Win7 environs up shit creek without a paddle, though I imagine that's a bug not a feature, given how afraid they are of another XP.
It’s a little better but fresh Windows 8, 8.1, and 10 VMs still take much, much longer to boot than, say, an equivalent Linux upgrade. It might be less bad than Windows 7 but I’ve never measured it precisely since it’s still in the “come back after a leisurely lunch” range.
Is that more complicated? There's a lot of dark in there, but the general steps look comparable. And even if they did over engineer it to their own detriment, I'm not sure how that's supposed to give me more sympathy unless are solving problems that other package managers can't handle, which might be true but certainly isn't obvious to me.
I think apt-get installs packages, Windows Update applies patches.
In Windows, can have individual updates to a library that fix bugs b1, b2, respectively b3. If so, you can install eight different variants of that library. If, later, a fix for bug b4 is released, its installer must be able to handle each of those variants. The installer also allows you to roll back any of those patches (example: patch b1, patch b3, patch b2, roll back b1, patch b3, patch b1 again)
In practice, it’s impossible to handle that combinatorial explosion, so you get updates that require b1 to b3 to be fixed, that require service pack x, etc.
However, the system still is designed to handle that. It sort-of must, given that Microsoft occasionally releases updates that it hasn’t tested on all possible hardware configurations, but that (may) solve a specific problem (https://blogs.technet.microsoft.com/mrsnrub/2009/05/14/gdr-q... is dated, but, I think, still illustrates the problem)
That's my understanding as well. Afaik this is one of the reasons service packs existed, they essentially wrapped a huge number of updates up in one big, complicated blob labelled "this replaces update 329904, 1374663, 3072984, 3979717, ... 7308332, 8042597, 8091796, 9793445 and is applicable to basically all machines", coalescing a big chunk of their dependency tree.
So instead of applying patches once (but yes, for each variant) at the server end and simply downloading and writing to disk, they create patches (in as many variations as they'd need libraries) and download those, then add the extra step of using potentially low-powered client processing to apply the patches (as binary diffs?) ... seems like something that would have been faster on a 9600 baud download line, and when server processing was more expensive; but for the last decade or so?
I don't buy it. I just updated an Arch Linux machine that had been powered off for a while, ~3GB of packages (~200 packages IIRC) were updated (along with new/changed dependencies for some of them) in about 10 minutes, not accounting for download time which is totally dependent upon inet connection speed. During that 10 minutes, my system was 100% usable, and I was able to save all of my work and reboot it at my earliest convenience.
Anecdotally, I recently updated my Arch VM after about a week of uptime, and it somehow OOM'd mid-kernel update. Guidance online suggested it was technically recoverable, but seemed easier to just blow the unbootable VM away and recreate.
It does. A few years ago, I decided to chase down what Windows Update does, so I ran regmon to see what configuration keys it builds in for tracing. Turns out it has a LOT of trace parameters in Windows 7 (and I assume for Windows 10 as well). It basically has tracing for each component.[1] But one component in particular takes a long time - and that component seems to be the one that determines the package dependencies.
Honestly, if Microsoft would fix this one thing, I suspect they could speed up their update process by a factor of 2 or 3, possibly higher.
As an aside, the Windows Update datastore and the Windows AD datastore must be seriously some of the very last things to use the ESENT. Dunno if Exchange still uses it. Awful way of doing things though.
Windows Update is overly complicated and utterly unweildy. My perspective is that it was rather bolted together in the years when Microsoft decided to make the filesystem a database. They now have an inelegant mess that they cannot easily get rid of. I would hate to be someone who had to work on Windows Update code!
In Windows 7 I had a look at it in a debugger. It seemed to be doing the topological sort using a dumb bubble sort style algorithm. Once there were enough updates it got really slow really quickly.
Yeah, IIRC one of the things they patched in their updates of the WU client was a combinatoric nightmare where it scaled time nonlinearly with the number of other updates. [1]
Is it using an SSD? Your graphics card is irrelevant. Most of your processor is irrelevant. If you use Windows 10 on a classic hard drive, you're going to have a bad time.
I have a Samsung 970 Pro, which is NVMe m.2 SSD. It still took an hour to install the feature update like 1809.
I believe someone mentions that feature updates like 1809/1803/etc are not actual patches based on current install, it is a complete OS reinstall, which explains the slow install.
You used to have to reinstall windows every few years because it slowed down over time. I guess microsoft thought it would be convenient if they did that for us.
The 1809 update took ten minutes on an average notebook with SSD here. MS did some serious work in the last releases to reduce the offline time for updates.
Yes, the laptop always had an SSD and I know about the difference an SSD can make in terms of overall performance.
However, the same comparison holds. I have an older backup PC in the basement with a hard drive, and it still takes just a few minutes to update in the background on Linux. Windows on that machine was simply unusable.
I'm using win10 on spinning rust, never seen updates take that long. These days I just let it do it's stealth updates at auto-picked times while I'm at work/sleeping, works out well.
Single thread and cpu limited would explain it, since what I do have is almost unbeatable single-core performance from a high OC on an old i5.
My vague understanding is there's some kind of inode lock on in-use libraries, and only a reboot releases them. Therefore files can't really be overwritten. New files (and inodes) are written elsewhere, and then moved into place as part of the reboot.
Two things I don't understand: why updates are so slow; and why the updating can't be done out of band. Seems like it could be done either with hardlinks or using VSS, so that it's safe to do as a background process rather than effectively kicking the user off their own system for the entire duration. Both hardlinks and VSS have been around forever on NTFS.
While ReFS supports volume snapshots (but not hardlinks), its rollout as a replacement for NTFS appears stalled, only being recommended for specific use cases that aren't the general purpose use case (system disk).
1) The deleting in-place is just a different default than on e.g. Linux - both can let you delete/rename/etc files underneath it, but Windows defaults to making you explicitly set a property to permit this in your open() call equivalents, while Linux requires you explicitly lock things to prevent this.
2) Updates can be slow for a bunch of reasons. One of them is that the WU agent as shipped in e.g. Win7 SP1 had some nasty O(n^2) or worse operations that got fixed in [1] and later. One of the reasons the monthly rollups versus itemized bits were an enhancement is, if your install for each update is NUMUPDATES* O(start transaction + do install of update bits + swap into place + end transaction) , removing all but one of the start and end transactions is a nice speedup.
As far as using hardlinks and VSS to stage and swap updates into place...that is a thing that WU does already, and has done for quite some time.
ReFS also makes me sad because it has so much potential, but they rolled it out without being able to used for many use cases, so it's probably gonna stall and die.
Microsoft could have a flawed development process but the slowness of the update procedure and how it seizes control of the machine is much worse in terms of UX. My Ubuntu laptop gets updates almost every day. I could make them happen in background but I want to know what's going on so I make it display the list in a window, check it and click OK. From now on it takes little time to finish, even if there are new versions of the kernel. I recently updated a Windows Server 2016 VM switched off since September and it was a half day long nightmare of downloading / updating / rebooting loops. If I ever considered to move back to Windows (I never did) that would have made me change my mind. Anything but Windows.
One of the cause is that Windows by default does not allow you to remove or replace opened files. So to update anything you have to close all applications holding an handle to it.
The many lockdowns on opened files (even just reading) is one of biggest design flaws in Windows and has cost me many hours dealing with it. It makes a lot of things needlessly complicated: from updates over file based backups to sometimes even just reading a fscking logfile or config file.
Yes, pessimistic file locking is a fatal design flaw in Windows. Where did they get this idea, VMS? What problems is it meant to solve? Unixen seem to get along fine without it.
I too would love to see something detailing the rationale for their choice of file locking defaults. If one could request a Raymond Chen insider explanation blog post, this one would be on my list of "why did they pick that default?".
> pessimistic file locking is a fatal design flaw in Windows. ... What problems is it meant to solve?
How else do you prevent people from overwriting each other's changes to the same data? Whether the lock is at the file level, field level, etc., how else do you manage collisions? It seems so obvious that perhaps I misunderstand your question.
Oh dear, the next "let's squeeze some more arbitrary complexity into a thing that should be simple" fuckup is supposed to be a solution? One has to be a horribly inexperienced engineer not to see how ADS is a very bad idea.
You can't write to a running executable on Linux either, but you can remove it and create a new file with the same name (optionally atomically with a rename). The old file keeps existing until it's closed.
The fact that FILE_SHARE_DELETE has to be explicitly specified in calls to CreateFile, and that the file APIs in most languages don't use it or allow it to be specified, has to be one of the top three annoyances I have in using Windows as my primary development machine. There's a parallel universe in which FILE_SHARE_DELETE is opt-out, not opt-in, and Windows is a far more pleasant OS in that universe.
My other two top annoyances, for anyone curious, are the appalling filesystem performance and the high process-creation overhead.
It does allow you to remove them; the problem is that the removal will be pending until the last open handle to that file is closed. The file itself is in a weird suspended state whereby anyone who had an open handle is not disrupted, but attempts to create another handle to that file will fail.
However, Windows does allow you to rename such files. So you can rename an existing file to some random name somewhere in %TEMP%, and then put a new file with the same name in its place.
That's no excuse because there exists easy workarounds.
From my understanding with how the winsxs store works, almost every system binary is really a hidden symlink to the right binary in winsxs (with some having different cpu optimizations).
One of the cool things about symlinks is handles don't hold on them, they just hold on to the target, so you can change a symlink target without interrupting or getting blocked by handles that have that symlink open.
Windows update could put all the new binaries in to new winsxs loctions then just swap over all of the symlinks on next boot.
I know this works because I use it to deploy updates to a running game server binary so that the next time it restarts itself on round end it's using the new binary.
Windows Update and Telemetry made me switch from a Windows 10 + VMWare setup to a Linux + KVM setup for my desktop. The new setup has its flaws, but it works much better than Windows overall. Windows Update is terrible.
Your Ubuntu desktop only takes security and bugfix updates regularly.
If you've tried going from an Ubuntu LTS to another Ubuntu LTS, 2+ years on, you'd find tons of things changed too -- even if your old LTS had everyday updates.
This is true, the difference is that your not forced into feature upgrades, you can stay with an LTS 5 years if it works for you.
Second difference is that upgrades will take less times and reboots.
There is also a risk that stuff will not work better after the upgrade.
That is unfortunate, why not have a Home edition that is an LTS, only security updates, less chances of bricking computers or deleting user data. I know MS hated that people were using XP and not buying Win7 but they exaggerated by pushing updates like Chrome browser does.
Because MS knows nobody wants to pay $€200+ for an OS anymore? They are giving away win10 practically for free. MacOS is free. ChromeOS is free. Windows had to evolve as well. Paying for software is the past.
If MS did commercially release Enterprise LTSC it wouldn't sell. Instead it would just encourage piracy.
I use the rolling release of OpenSuse and my daily updates are still flawless and non intrusive. There's definitly room for Windows to improve in this regard, specially considering Linux already does it better and that was developed by volunteers for free.
I'm saying, Windows does it like Ubuntu LTS (and has to do it that way, for pros and businesses like it to not change under them unless they explicitly switch version which can happen after many years), not like a rolling release.
But nor Ubuntu LTS, nor a rolling-release takes as long to update as Windows does, so what's your claim? In either case it takes significantly longer to upgrade Windows than it does Linux.
IIRC on newer versions of the OS, updates are applied on a separate partition without interrupting you. I don't know if it causes performance loss during that time, so far it has been seemless for me but I don't have updates everyday either ..
Only when the update completes will the OS asks you to reboot so it can start from that new version.
Sure it uses a ton of storage to do things this way, but it is very secure and pleasant to use.
If we’re going to assign praise to the invention then I remember seeing it as part of FreeNAS nearly a decade ago. (Interestingly they recently deprecated this method of updating.)
And JunOS (the juniper network appliance operating system based on freebsd.) has had this since version 10.4 which was released in 2010.
True. I have had Windows machines from work which I install Linux on as a dual boot. I need to use Windows maybe two or three times a year, and it can take hours for software updates to install when I do log in.
apt-get dist-upgrade takes several hours on my Linux partition, which I also boot just a few times per year.
Ubuntu also completely blows itself up into an unbootable state at least once a year after updates.
Windows Update and testing suck, but Linux package management and upgrading suck just as badly. Systemd upgrade bugs seem to cause the most un-bootable systems in my experience, with alarming frequency, even on LTS servers that see little churn.
sorry to hear that,
I did the last 4-5 ubuntu updates on a dual boot (win + ununtu) box, and it went smooth most of the time. but it takes about an hour. if apt finished it always rebooted. (nvidia drivers requres some manual work initially, but it was basically setting up the right repository and installing newer packages from time to time)
and on servers (20+ VMs and a few hypervisors, some LTS some not) I had even fewer problems. for me things got especially smooth sailing after ubuntu switched to systemd.
Fun fact: The Android update_engine which handles seamless updates is basically ripped straight from Chrome OS. Only recently were strings containing "Chrome OS" removed from update_engine’s log to avoid confusion for anyone who happens to check logcat.
I have often wondered if Microsoft could use this type of system for Windows 10? Not only would it make the update process more reliable, but faster too (especially when it comes to feature updates).
The other thing Microsoft should sort out is WSUS. It is such a flaky system!
> I have often wondered if Microsoft could use this type of system for Windows 10? Not only would it make the update process more reliable, but faster too (especially when it comes to feature updates).
From what I understand this isn't far from what Windows 10 does? Windows doesn't use a separate physical partition because it can't trust any specific OEM or user to follow a specific partition scheme, so it uses something more of a "virtual" overlay in NTFS for big Windows changes, based on how I understand it. It's something like a partition scheme in that it virtualizes entire directories (like C:\Windows) and then swaps them. For dumb backwards compatibility reasons, Windows can't just assume that it can just outright swap one C:\Windows directory for another one, so supposedly a lot of the time in major updates is stuff like inventorying directories like C:\Windows for non-Windows stuff and copying it across to the new pseudo-partition before the swap.
I humorously think that when Microsoft does bad hires, it puts them in the Windows Update team (Google makes them work on Google Keep, instead).
I've always wondered (seriously, not rhetorically) which are the technical grounds that make Windows update so bad.
In addition to reboot loops:
- WU has a long history of hanging; it took I think a couple of years to release the "final" patch for update hangs. I'm not even sure if it works; I wouldn't bet that a machine with Windows 7 would be able to download all the updates without hanging or taking days (we're talking about around 100 updates; apt, for reference, manages a pool at least 2 orders of magnitude bigger)
- the workflow is not deterministic; updates may or may not succeed
- the UX is abysmal: the status descriptions are unclear; the progress percentage doesn't reflect the actual time, or is disbalanced towards stages which don't make evident why they take so much time; the error messages are completely unhelpful.
- it's also completely unclear why some updates need to be applied both after shutdown and before startup.
"Thankfully" they gave the option to download them once a month, which all in all, equals to choose between usability and security.
Especially in light of the fact that one of Google Keep's competitors on the iOS context is Apple Notes, which presumably has more than one person working on it through spare time.
OK, as a sibling comment points out, it's been a harsh judgment (although I make it humorously).
In general terms, I think it's subpar in terms of usability, at least, when talking about "Google standards". Going down to details:
1. the web interface uses a sort of "dark pattern": it enforces delayed updates, to the point of ignoring user requests for refresh; when the user clicks on the refresh button, s/he'll see the spinner in action, but when it stops, there's no guarantee that the updates have been sent - in fact, attempting to close the browser at the point frequently shows a browser alert, then the spinner will spin again for the "real" update. It's a matter of seconds actually, but it gives the impression that the program is "lying" to the user.
2. the automatic recognition is extremely annoying when a note includes numbers and symbols that don't represent phone numbers/email adresses - Keep will forcefully recognize them as such, so that when one clicks on an auto-recognized string, a dialog will pop up, forcing the user to click Cancel, then hope that the landing character is the right one, otherwise, when clicking on another character, the popup will show again.
3. the reminders workflow is bizarre; it assumes that the main use case is the user setting alarms at four semi-fixed (fixed but customizable) times of the day. this doesn't really make sense to me, and adds one extra stage in the setup
4. at some point it seemed they introduced a clever reminders workflow - when the user would add one, the default would be around three hours from creation (with the exception of the night). this is not stable though - sometimes, the three hours interval is not respected.
5. I recently hit a bug where, when I select it from the Android task manager, the window closes.
Point #2 is definitely the worst for me; it really bites me on notes that include numbers and are frequently updated (eg. a gym schedule); I think this is a legitimate use case.
Point #1 may be a bug, although it's in a core functionality, which makes me think that it's intended.
News flash! I've just found a bug. There are four semi-fixed times of the day; but in the settings, one can only customize three.
Practically speaking, I think there isn't (enough) dogfooding in its design. More abstractly, I really doubt that it's up to standards with a company that is supposed to have the best IT professionals in the world.
Oh, it actually does that on other people's machines? That's a relief. I'd been genuinely worrying if that was actually some kind of malware symptom. Glad to know it's just Win10 being Win10.
On the UX thing, I'd argue it's even worse than that -- by design. The main problem I have with it is that they seemed to want to make it more "user friendly" and ended up constructing a nightmare because of it.
The rationale goes like this: If you confront users with error messages, they get confused. The more technical the message, the worse the confusion.
Now what Windows does is to hide everything, ignoring that to be able to do that, your systems must never ever have any errors, lest you throw away useful information. I've got a Windows 8 installation I can't upgrade to 8.1 because all the update system does is not install the updates. There's no telling why -- the next time it still sits there telling you "by the way: there are updates you should install".
Contrast this with "user unfriendly" linux updates: They tell you loud and clear that things didn't work and give you a message you can google, if nothing else. OTOH, the Windows side of things involves reading tea leaves, clearing obscure chaches, wondering if mercury is in retrograde, deleting or adding random registry keys and in the end doing a totally new installation anyway.
I'm also running Windows Server 2016 in a vm at home, i notice that i start up this vm less and less because i am expecting a long update cycle before i can start any work. sometimes it's actually unusable until it's finished applying updates. (this is on an i7 with 8GB of ram, 4gb for the vm).
Is it fair to compare your daily update experience to a month's worth of Windows updates?
That's like me saying it takes over an hour to update my OctoPi instance when I remember to do it semi annually, therefore all *nix updates are broken.
Linux distros generally are still usable while updating. Maybe there's a normal-length reboot at the end to switch to a new kernel, but you aren't required to do that immediately.
You'll notice if you use standby heavily. No problem on my Mac. I think at one point I had a year uptime. Windows will happily close my opened documents and reboot on its own.
I don't even use Windows, yet I still notice them when being at a game jam or a similar event. There's always somebody who complains about his Windows that started updating, with the best case being a guy waiting for his turn to connect his laptop and give a presentation, only to notice that it started updating meanwhile :D
I'm an insider and i only notice them when i login and I get the "hi" message. they all happen overnight, I used to get warnings for them and a choice to postpone but I just set it up so it runs after 2am and since then never bothered me again.
I'm one of those seemingly weird people that simply never has issues with Windows.
I've used every professional version of Windows as a dev since Windows Vista and it's always fascinating to go online and read of the horror stories that people have with Windows.
The only time I ever complain about the OS is in your typical enterprise environment where admins load all sorts of terrible gunk in the name of security that every so often has your machine slow as molasses.
But my personal machines all get updates regularly and so far so good.
As a developer, Windows Home 10 became unusable. It is essentially an update machine, it seizes control and just updates, restarts, i have no control over the machine.
I’m on Windows 10 Professional and I’m very happy with the control it (now) gives me over deferring updates— I hate that the feature isn’t available in Home.
Its not just developers. $job's entire IT department is full of willful Windows 10 users. When questioned, they defend all these "features" as if you'd insulted their baby. I'd call it Stockholm Syndrome, except nobody is forcing them to use it.
Mac OS means buying unaffordable or underpowered hardware. And being ok with living within the constraints allowed by Apple (on the hardware side).
Linux is not a consumer option. Ubuntu, for all its flaws, was the first distro that could actually be considered consumer grade, and that’s why pretty much any mainstream PC maker offering a Linux option offered Ubuntu. But as you can tell by just glancing at the comments on the release for Ubuntu 18.10, even they have seemingly abandoned the desktop market in favor of servers and IOT, etc. And that’s before you get to Linux’s Applications problem.
Windows is a fairly solid OS with a few remaining warts which MS stubbornly refuses to address. One of the issues was the years they spent trying to convert it into a Mobile first OS. That was such a waste of resources.
IT departments are often (not always) unfortunately full of intellectually weak people who have based their entire careers around knowing their way around Windows and not much else.
Unfortunately it is taboo to acknowledge that people, and especially groups of people have varying degrees of intelligence. Just watch this comment being downvoted into oblivion, for instance.
In the meantime, my restaurant chain's POS systems and my wife's laptop, which keeps the books for us, are constantly having issues. Support for the POSes say to restart the system every day to avoid problems. (Can you believe we have to do that? It doesn't solve all issues, though.) Haven't a clue what to do about my wife's problems except I hope, soon, to be able to just do a full reinstall.
Even better, I hope to replace it altogether with a Linux desktop or, even better, a Mac.
Just to state the obvious, home versions of operating systems aren't designed to run POS systems for businesses. That's what professional and enteprise versions are for.
Since switching to Windows 10, my Visual Studio debug Output console is polluted with streams of debug statements from within Windows itself. Can't find my stuff. Someone forgot to turn off the debug trace statements in the Release version of Windows. WTF?
I spent this summer working on a Windows team at Microsoft, and this article is incredibly insightful for an outside perspective. The dev process internally is basically just waterfall sped up 3x. While my team only permitted code commits after adding to and running the tests, that did not seem to be the norm. Almost weekly one of our sister teams would not only break a feature (that happened pretty much every day) but break the build. Things got so bad that as we approached this most recent release, management (under pressure to reduce the number of failing tests) just disabled the majority of our failing tests.
While it might slow down some of the feature work, I think it's clear that an always release-ready master branch is the path forward for Windows. Some of my more enterprising managers were already working on splitting our subfeature out of the Windows release tree just so that we could do that when I left a couple months ago. I hope they succeed, otherwise I worry for the future.
Hey, do you accept congratulations from someone who's used nothing but Unices for ages now?
The stuff you and your (now former) colleagues have put up lately is remarkable. The last version of Windows I used on my home machine was Windows 2000, and Windows 10 is the first one I've looked at since then and said you know, I could actually use this thing, I guess.
I don't trust your (former) bosses enough to make the switch, but you folks have done some pretty amazing stuff lately.
Ha! This makes me chuckle. I myself was a web developer during the decade of IE6 dominance, advocating for Mozilla all the while. Despite it being trendy and contrarian to praise "M$" nowadays, I feel like that ice is only now beginning to thaw. Not so much the coming of spring, but a slight decrease in the hoarfrost on the windowpane. Great shuddering booms as the lake ice cracks. That sort of thing. Yes, if Microsoft continues being non-horrible, I may eventually warm up to them :)
Shuffles back to corner. Furtively plays with new TypeScript toy. Hisses at passerby.
I remember installing Mozilla Firefox on family friends computers in those years and changing the icon to IE so the average person wouldn’t notice and the world would have one more Firefox user.
One thing I’ve come to realize is that MS definitely excels at programming language design, coming out of college I had no experience with the MS CLR languages and I was pleasantly surprised at how well designed and usable their languages are.
I also liked Windows 2000, very much. I used it on-and-off (though mostly on...) while I was learning Linux. I switched around 2003 or so, I think. After that... up until Windows Vista or so I was just being a l33t h4x03 hipster kid. After that I was legitimately getting better stuff in Linux land.
>> break the build... disable failing tests (under pressure)
This is the norm in the software industry. As grunts or lower management getting tasked with the impossible, saying "yes" and doing "maybe" is really the only way. What they (upper management) gonna do, fix it themselves?
Sadly, when one gets away from open source development and sees "enterprise" and/or "government" (a subset of "enterprise") development, what one finds is that everything is almost exclusively "deadline date" driven. The PM's and/or upper level managers pick dates for deliveries (seemingly often without regard to ability to achieve deliverable X by date Y) at the start of any dev. cycle. The end result is the low level managers get pressured to "meet the date" and so the developers get pressured to go faster to "meet the date" with the result that often the deliverable X "meets the date" but is very buggy, hacky, ugly, hard to further extend, etc.
And then, of course, for the PM's and upper management layers, the fact that their project "met the date" is what is measured and congratulated all around. The product could be a stinking pile of XXXX, but "it met the date", so they get their kudo's, their bonuses, and the devs. and users are left with "stinking pile of XXXX".
As a PM I remember the halcyon days when my management would actually request a formal estimate and I would then work with delivery teams to calculate an answer and then add the traditional 50 to 100 pc buffer because I knew they were full of crap/I kept a personal record of their history of estimate vs reality. Nowadays management are in to top down planning so they don't ask for estimates, they don't add realistic buffers so they over promise with one hand and underestimate with the other. Seems to be a trend where everyone thinks they know how to do a PM's job.
Yeah but on the other side if you just let engineers do everything "the right way", we'll never deliver anything because there's always a "better" way to do it. I agree that "success-based planning" is ultra bad, but engineering needs to be held to some level of accountability.
Or maybe I just blame capitalism, haha. No deadlines! I do this because I like it!
Yes, they should have. adding tests long after the fact is next to impossible because, when you spend a long time not adding them, your codebase tends to degenerate into an untestable mess. One of the key benefits of strict TDD is that you feel the pain of testing your code before you write it, so your code is testable from the start.
This must be new (maybe related to tons of experienced devs moving to other teams in recent years?) When I worked there around 2008 it was very rare for people to break Windows builds. Some teams were better than others but in general breakage was rare and often came from dev build system using previously generatrd artifacts vs nightlies building everything. Windows is amazingly complex. Comparing its codebase and process to smaller projects just doesn't make sense.
One of the (many) reasons I've heard they had to abandon Longhorn was that apparently it was essentially unbuildable. The build was broken so much of the time that they gave up and started over.
I'm aware not everybody will be able to switch, but for me, 2018 is actually the year of the Linux desktop as all my projects and customers in 2018 are using it (plus a decreasing number of Mac OS notebooks still, but Windows is a complete outlier in IT shops). And Ubuntu is not bad at all compared to the alternatives.
I disabled all wake timers so that the machine will never wake itself from sleep
Then, I set the Windows Update active hours to be early in the morning. Now, when I use the computer I wake it from sleep with the keyboard, use it normally, then put it to sleep when done. This has allowed me to install updates when convenient for me since it effectively stops auto update behavior. Sort of like how it should be.
I like this answer. People who often complain about Windows just don't bother learning how it works. I like Linux just as much, but both have pros and cons.
> People who often complain about Windows just don't bother learning how it works
It doesn't work this way, you can just sometimes abuse it to do what was not intended, but it's not meant to be done as in offering you options the official way.
I've reported bugs to Windows Insider's Feedback Hub, but none have ever been acknowledged or fixed. So I can relate to the recent stories about critical data loss issues reported but never acknowledged.
An issue that affects me daily and would be easy for Microsoft to test: my Bose Bluetooth headphones' computer voice knows how to pronounce all my other devices' names (e.g. "Chris's iPhone"), but it must spell out my Windows machine name letter by letter. Even if I rename my Windows machine to something I know my headphones can pronounce (like "Chris's iPhone"), they spell it out. Perhaps this is a bug in my Bose headphones, but these are very common headphones so I'm surprised no one at Microsoft or Bose has addressed this problem. My hypothesis is that Windows machine names are UCS-2 encoded and the headphones interpret the "extra" bytes as word delimiters.
Ha! CardDav and CalDav support tickets has been opened since 2014. Nope. I boot my surface (probably I should’ve sold it long time ago) every once in a while to see if it supports my calendar and contacts server yet. Nope. Every single OS does it. But not windows. What is even funnier is that they actually have support for iCloud which is CalDav and CardDav but nope, no custom config for you.
If neither Windows nor Android, the two most widely-distributed operating systems in the world, do not support CalDAV or CardDAV, then who is using these standards? :) I guess Microsoft and Google want to promote their own calendaring solutions, Outlook/Exchange and Gmail.
I just wish we were able to time-warp back to Windows 7. And start again from there.
I liked Windows 7 user experience. I had to boot up one in a VM the other day to debug a legacy issue. I realized how much I really did like it. I liked the control panel and all that. All that unified Metro(?) UI that has been developed since Win7 with mobile and touch in mind (that never happened?), with the new management tooling that seems to be only half way there combined with the near death of native Windows apps has effectively driven me to Ubuntu Desktop. Ubuntu userspace on Win10 is nice but then again, to me Win10 has been reduced to just something I run Firefox or Chrome when needed. Even Lightroom works well enough on Wine nowadays.
I get it - I am an old grumpy guy lamenting on change, probably off-topic too...but still, oh boy I wish they had decided to go some other direction! ;-)
You can run Classic Shell and get the Windows 7 experience back. I recommend it if you must run Windows; it's probably the only way to get rid of the god-awful Start menu/adware junk that M$ has now.
> I would argue that Microsoft used to know how to ship software, but the world has changed... The companies that "know how to ship software" are the ones to watch. They have embraced the network, deeply understand the concept of "software as a service", and know how to deliver incredible value to their customers efficiently and quickly.
Windows is no longer Microsofts core product, Microsofts cloud offering are its main revenue base. As a side effect Microsoft decides to open source the Windows code base. Microsoft is already the largest contributor of open source on Github.
Windows becomes a application compatibility layer in Linux and are also ported to Mac OS X. You can now run Windows apps on Linux and Mac OS X including games without the update issue.
Or maybe they will think that the Linux subsystem is very good that they adopt it as the "main" system. Then Windows becomes Microsoft's official Linux distro.
I'm not sure why I keep seeing this repeated around the net, but that isn't the case. They're working on a rewrite of Windows that is based around UWP called CoreOS.
I don't like Microsoft's attitude toward users [1]:
> Windows 10 Home users will receive updates from Windows Update automatically when it's available. Windows 10 Pro and Windows 10 Enterprise users will have the ability to postpone updates. The amount of time that Windows 10 Pro users can postpone updates is limited.
Basically: unless you pay a ton of money, we will use you as a guinea pig for testing.
Yeah, if updates were reliable I wouldnt care, but not only are they unreliable, but they autoclose all your important work. So many coworkers get annoyed when they come back to work and Visual Studio and Chrome was closed due to updates so now they have to go back and figure out where they left off. I may see if I can suggest our (uncommonly competent) IT guy to install Windows Enterprise instead for the sake of not being forced to update, although I might run it by our team lead to be sure.
With that attitude, I'll bet your IT guy thinks you're a bunch of complaining idiots. If you're actually respectful to him, and work with him to fix problems, your relationship will likely improve. Managing Windows 10 is hard, and he sort of has an impossible job, as MS updates have become so awful.
The Onedrive case seemed a bit weird, honestly. The complaint seems to boil down to "beta builds contained bugs". That's the point of having beta builds.
It seems a lot of people are using a Google-esque vocabulary where "beta" just means "new and fancy", and are really surprised when the beta release has bugs in it.
IMHO the problem is how monolithic the whole OS is built. How the hell is it possible that they "build Windows"? That includes things as diverse as file system drivers or notepad.
If I want to make a small change to notepad, I should not have to check out the whole Windows source code, but just notepad. Then you could have different development methodologies for different projects.
They should rip everything out piece by piece, and make it an addon. Then you'd have a minimal Windows core, a Windows shell, and the individual accessories. The shell alone would still be a huge project that you'd want to split up ideally.
The challenge with such a model is that you have to be really strict with interfaces between components. You have to define these interfaces, you have to quickly provide other groups with interfaces they need, and you have to provide backwards compatibility as long as any other component uses your interface. It's much more work, but it's better than the ad-hoc coupling you get if everything is one monolithic build.
227 comments
[ 5.6 ms ] story [ 191 ms ] threadFor years people sang about the many vulnerability of Windows at every turn. IOS spat out new features at a steady pace.
On the other hand, MS had to support the ever growing list of Windows versions and their incompatibilities - slowing down their rate of development.
The tech community was singing the praise of Lean and MVP.
Everyone loved to shit on IE for holding back the web. While praising Chrome for being chrome - having only one version to support.
And somewhere along the line, Google got the bright idea to remove the ability to disable Chrome's automatic update.
Add all these factors and more that I didn't mention and you'll see how MS came to the forced update decision.
Lest I forget, Nadella saw how he could fire Microsoft testers, reduce expenses and raise stock price with a forced update stroke. Irresistible.
If you don't see how an OS upgrade is different from an app upgrade within an OS, I honestly have no better way to explain.
(As for IE, don't tell a veteran what the Browser Wars were: IIRC, the rest of the browsers managed to move on without autoupgrades at first, so don't bring up that particular straw man: the issue wasn't autoupdate, it was "IE8 is the pinnacle of browsing, we're not going to update it for years, dev team dissolved.")
Oh, yes of course they got bullied! They got bullied into having a totally overengineered OS that is probably a nightmare to maintain, even without the many special switches that keeps faulty big player software from crashing. They got totally bullied into a naive design philosophy for their APIs and into churning out new framework after framework. And of course they got bullied into this by Apple and the media!!1 Google and Apple and all the rest bullied them with their despicable efficiency in rolling out features! /s
Sorry, but painting Microsoft as the poor victim here is a bit rich.
Windows is probably a nightmare to maintain and test for. I can really understand why the engineers wanted telemetry to track which API calls actually are still in use. They probably dream of having just to deal with a handful of subversions of Windows 10 and not with a zoo of rotting 7s, 8s, and XPs. Hence the forced updates.
Many other platforms are lighter and more agile. This entire container thing, e.g., would have been impossible to get started in the byzantine environment of Windows. Heck, I have a hard time imagining the elastic cloud getting started on an operating system that doesn't even allow your processes to continue after logout, and has a footprint in the 10s of gigabytes. Just for the basic needs.
And all of this is not caused by the inconsiderate craziness of evil outsiders, but by how Microsoft operated and designed in the 90s and early 2000s.
If Microsoft really wants to do "the right thing" they need to burn it down and start over. Something like ChromeOS with a Linux kernel and containerized emulation for win32/64 apps.
Remember how they rebooted Windows Mobile to Windows Phone? Didn't work as well. In fact, they rebooted Windows Phone OS three times (7, 7.5), (8, 8.1) and 10,[1]. Every single reboot cost them users.
[1](Microsoft's attempting another zombie resurrection with Core OS/Andromedia. Let's see if they release it and how it fares in the marketplace.)
I wouldn't even call ChromeOS a brand new thing. They turned an existing product - Chrome, into an OS.
See how Google's dragging their feet with Fuchsia? If their internal politicking (from the android team) is strong enough, Fuchsia will never see the light of day.
Point is, unless Windows' market share evaporates, it'll be insane for them to do the "right thing."
this is different than the side-by-side (WinSxS) support that allows parallel versions of the same dll to live on the system. that used to grow at huge rates when you had lots of system updates + lots of apps.
Since when? You can turn off Windows update service but it will turn itself back on. Even with Windows update turned off, they still have a way of quietly slipping stuff into your PC.
Use the Group Policy.
>Even with Windows update turned off, they still have a way of quietly slipping stuff into your PC.
No.
The settings I suggest don't disable it entirely - though I think that's an option, if not one I'd use myself - but it does let you choose when things get installed, after downloading them in the background.
I've been quite happy with this; I generally do want updates when they come out, but also want the option to potentially reliably defer them (or, more precisely, the potential reboot...) for a day or two.
(As for Windows versions, I use Windows 10 Professional.)
https://support.microsoft.com/en-us/help/4026834/windows-10-...
Most important: Windows doesn't allow me to set my USB modem connection as metered.
Not only they take ridiculously long, eventually you are forced to update upon booting in or shutting down. Never mind that you turned on your PC to, you know, get something done potentially urgently.
In contrast, I can upgrade my months-stale arch Linux box in under 2-3 minutes. After seeing how much better the same hardware can run, there is no going back.
However, that being said, Windows Update for me as a user that would apply all updates anyway, was unbearably slow, and a big part of the reason that I switched to Linux and FreeBSD years ago and never looked back.
I guess for enterprises that want to deselect certain updates for various reasons relating to their setup, Windows Update is probably a great selling point.
I still don’t get why it has to be so slow for the default case where all updates are applied though.
This could be me being completely ignorant of the details, but doesn't Linux have the same thing? I can individually apply package updates, even mess with dependencies -- but my computer updates quickly and doesn't require multiple restarts during the process. Usually, unless I'm updating the kernel itself, I don't even need to restart.
What are they doing that's even more granular than Linux's update process?
Obviously, this is rather insane and takes up a gigantic amount of disk space, and wasn't something they ever implemented. They must have realised this, so they built a facility into their DISM.exe utility to remove all updates that were superseded by the service pack (the switch is /spsuperceded). DISM.exe was released in Windows 7 SP1.
Note that there has never been, and never will be, a Windows 7 SP2, because Microsoft decided to go with the rolling update schedule. What this means, however, is that /spsuperceded will never work as they have never actually gotten to a second service pack.
It appears to me that Microsoft must have forgotten the original plan for clearing out old and useless patch files from SxS, because they rather surreptitiously introduced a new option into the disk cleanup wizard to remove old Windows Updates (to get to it, you need to elevate to admin via UAC in the GUI). This removes the old updates.
I have literally had systems with around 6-8GB of old Windows Update files. The biggest issue is that you think they are deleted, but it appears that Microsoft actually removes the updates after you reboot. I've had one system that took an hour to reboot as it was removing so much junk. I had a friend who had an even worse system, and he had to leave it overnight...
Here's another fun fact (not sure if it's fixed in Windows 10...) but the WinSxS folder is where system files are kept. NTFS does a symbolic link to these folders back to the System32 folder. The problem is that the metadata is updated in one location only, and so if you check the WinSxS folder and the System32 folder, you'll see different file sizes for each folder.
It creates hard links, not link symbolically.
https://techcommunity.microsoft.com/t5/Windows-for-IT-Pros-M...
The POSIX approach makes it easy to install updates without rebooting but opens you to weird failures if a process loads things during an update and gets the new library A and old library Z. This is generally a much easier problem to handle.
The big thing, though, is that they had a lost decade or so where the stack-ranking system heavily favored new features over improving existing code. Unless this was such a problem that it became a senior management priority I doubt anyone was jumping at touching it.
You can't just replace the files and reboot because you can't write to files while they're open, especially executables; so what happens is a huge pile of files get queued for swapping over at reboot.
I think the main reason Windows Update takes so long is that it has its own database, WSUS, which degrades badly as it fills up.
Considering that Microsoft still does have a lot of really bright engineers, I'm leaning towards the latter.
I have no idea how MS implemented the OS upgrade process this bad.
The fact that they didn't have a mechanism to forcibly install said improvement updates in the older versions before they install the kitchen sink for hours is infuriating, but I can't be that annoyed at them for not rewriting history.
I can, however, be annoyed that they decided never to formally make an SP2 and consequently left anyone running those Win7 environs up shit creek without a paddle, though I imagine that's a bug not a feature, given how afraid they are of another XP.
[1] - https://decentsecurity.com/enterprise/#/windows-7-fast-updat...
Using slapt-get (Slackware version of apt-get) back in the day was quite the revelation after manually solving dependencies.
Because it is way more complicated than apt: https://docs.microsoft.com/en-us/windows/deployment/update/h...
In Windows, can have individual updates to a library that fix bugs b1, b2, respectively b3. If so, you can install eight different variants of that library. If, later, a fix for bug b4 is released, its installer must be able to handle each of those variants. The installer also allows you to roll back any of those patches (example: patch b1, patch b3, patch b2, roll back b1, patch b3, patch b1 again)
In practice, it’s impossible to handle that combinatorial explosion, so you get updates that require b1 to b3 to be fixed, that require service pack x, etc.
However, the system still is designed to handle that. It sort-of must, given that Microsoft occasionally releases updates that it hasn’t tested on all possible hardware configurations, but that (may) solve a specific problem (https://blogs.technet.microsoft.com/mrsnrub/2009/05/14/gdr-q... is dated, but, I think, still illustrates the problem)
Honestly, if Microsoft would fix this one thing, I suspect they could speed up their update process by a factor of 2 or 3, possibly higher.
As an aside, the Windows Update datastore and the Windows AD datastore must be seriously some of the very last things to use the ESENT. Dunno if Exchange still uses it. Awful way of doing things though.
Windows Update is overly complicated and utterly unweildy. My perspective is that it was rather bolted together in the years when Microsoft decided to make the filesystem a database. They now have an inelegant mess that they cannot easily get rid of. I would hate to be someone who had to work on Windows Update code!
1. https://docs.microsoft.com/en-us/windows/deployment/update/w...
[1] - https://support.microsoft.com/en-us/help/3161647/windows-upd...
I believe someone mentions that feature updates like 1809/1803/etc are not actual patches based on current install, it is a complete OS reinstall, which explains the slow install.
See e.g. https://insider.windows.com/en-us/articles/were-listening-to...
However, the same comparison holds. I have an older backup PC in the basement with a hard drive, and it still takes just a few minutes to update in the background on Linux. Windows on that machine was simply unusable.
Single thread and cpu limited would explain it, since what I do have is almost unbeatable single-core performance from a high OC on an old i5.
Two things I don't understand: why updates are so slow; and why the updating can't be done out of band. Seems like it could be done either with hardlinks or using VSS, so that it's safe to do as a background process rather than effectively kicking the user off their own system for the entire duration. Both hardlinks and VSS have been around forever on NTFS.
While ReFS supports volume snapshots (but not hardlinks), its rollout as a replacement for NTFS appears stalled, only being recommended for specific use cases that aren't the general purpose use case (system disk).
2) Updates can be slow for a bunch of reasons. One of them is that the WU agent as shipped in e.g. Win7 SP1 had some nasty O(n^2) or worse operations that got fixed in [1] and later. One of the reasons the monthly rollups versus itemized bits were an enhancement is, if your install for each update is NUMUPDATES* O(start transaction + do install of update bits + swap into place + end transaction) , removing all but one of the start and end transactions is a nice speedup.
As far as using hardlinks and VSS to stage and swap updates into place...that is a thing that WU does already, and has done for quite some time.
ReFS also makes me sad because it has so much potential, but they rolled it out without being able to used for many use cases, so it's probably gonna stall and die.
[1] - https://support.microsoft.com/en-us/help/3161647/windows-upd...
How else do you prevent people from overwriting each other's changes to the same data? Whether the lock is at the file level, field level, etc., how else do you manage collisions? It seems so obvious that perhaps I misunderstand your question.
This allows running programs to be updated.
My other two top annoyances, for anyone curious, are the appalling filesystem performance and the high process-creation overhead.
However, Windows does allow you to rename such files. So you can rename an existing file to some random name somewhere in %TEMP%, and then put a new file with the same name in its place.
From my understanding with how the winsxs store works, almost every system binary is really a hidden symlink to the right binary in winsxs (with some having different cpu optimizations).
One of the cool things about symlinks is handles don't hold on them, they just hold on to the target, so you can change a symlink target without interrupting or getting blocked by handles that have that symlink open.
Windows update could put all the new binaries in to new winsxs loctions then just swap over all of the symlinks on next boot.
I know this works because I use it to deploy updates to a running game server binary so that the next time it restarts itself on round end it's using the new binary.
We also update the loaded dlls it uses this way.
As another person said, you can rename opened files and then deal with deleting them separately.
Your Ubuntu desktop only takes security and bugfix updates regularly.
If you've tried going from an Ubuntu LTS to another Ubuntu LTS, 2+ years on, you'd find tons of things changed too -- even if your old LTS had everyday updates.
If MS did commercially release Enterprise LTSC it wouldn't sell. Instead it would just encourage piracy.
Windows follows an LTS model. It can't go changing from under pros and businesses that use it everyday...
> Your Ubuntu desktop only takes security and bugfix updates regularly.
A rolling release explicitly doesn't just provide security updates, so my point is Windows updating more core components than Ubuntu LTS is no excuse.
IIRC on newer versions of the OS, updates are applied on a separate partition without interrupting you. I don't know if it causes performance loss during that time, so far it has been seemless for me but I don't have updates everyday either .. Only when the update completes will the OS asks you to reboot so it can start from that new version.
Sure it uses a ton of storage to do things this way, but it is very secure and pleasant to use.
And JunOS (the juniper network appliance operating system based on freebsd.) has had this since version 10.4 which was released in 2010.
Ubuntu also completely blows itself up into an unbootable state at least once a year after updates.
Windows Update and testing suck, but Linux package management and upgrading suck just as badly. Systemd upgrade bugs seem to cause the most un-bootable systems in my experience, with alarming frequency, even on LTS servers that see little churn.
and on servers (20+ VMs and a few hypervisors, some LTS some not) I had even fewer problems. for me things got especially smooth sailing after ubuntu switched to systemd.
The seamless updates feature originally came from Chrome OS. It's easily one of the best features of that OS.
https://www.xda-developers.com/how-a-b-partitions-and-seamle...
Fun fact: The Android update_engine which handles seamless updates is basically ripped straight from Chrome OS. Only recently were strings containing "Chrome OS" removed from update_engine’s log to avoid confusion for anyone who happens to check logcat.
I have often wondered if Microsoft could use this type of system for Windows 10? Not only would it make the update process more reliable, but faster too (especially when it comes to feature updates).
The other thing Microsoft should sort out is WSUS. It is such a flaky system!
From what I understand this isn't far from what Windows 10 does? Windows doesn't use a separate physical partition because it can't trust any specific OEM or user to follow a specific partition scheme, so it uses something more of a "virtual" overlay in NTFS for big Windows changes, based on how I understand it. It's something like a partition scheme in that it virtualizes entire directories (like C:\Windows) and then swaps them. For dumb backwards compatibility reasons, Windows can't just assume that it can just outright swap one C:\Windows directory for another one, so supposedly a lot of the time in major updates is stuff like inventorying directories like C:\Windows for non-Windows stuff and copying it across to the new pseudo-partition before the swap.
I've always wondered (seriously, not rhetorically) which are the technical grounds that make Windows update so bad.
In addition to reboot loops:
- WU has a long history of hanging; it took I think a couple of years to release the "final" patch for update hangs. I'm not even sure if it works; I wouldn't bet that a machine with Windows 7 would be able to download all the updates without hanging or taking days (we're talking about around 100 updates; apt, for reference, manages a pool at least 2 orders of magnitude bigger)
- the workflow is not deterministic; updates may or may not succeed
- the UX is abysmal: the status descriptions are unclear; the progress percentage doesn't reflect the actual time, or is disbalanced towards stages which don't make evident why they take so much time; the error messages are completely unhelpful.
- it's also completely unclear why some updates need to be applied both after shutdown and before startup.
"Thankfully" they gave the option to download them once a month, which all in all, equals to choose between usability and security.
In general terms, I think it's subpar in terms of usability, at least, when talking about "Google standards". Going down to details:
1. the web interface uses a sort of "dark pattern": it enforces delayed updates, to the point of ignoring user requests for refresh; when the user clicks on the refresh button, s/he'll see the spinner in action, but when it stops, there's no guarantee that the updates have been sent - in fact, attempting to close the browser at the point frequently shows a browser alert, then the spinner will spin again for the "real" update. It's a matter of seconds actually, but it gives the impression that the program is "lying" to the user.
2. the automatic recognition is extremely annoying when a note includes numbers and symbols that don't represent phone numbers/email adresses - Keep will forcefully recognize them as such, so that when one clicks on an auto-recognized string, a dialog will pop up, forcing the user to click Cancel, then hope that the landing character is the right one, otherwise, when clicking on another character, the popup will show again.
3. the reminders workflow is bizarre; it assumes that the main use case is the user setting alarms at four semi-fixed (fixed but customizable) times of the day. this doesn't really make sense to me, and adds one extra stage in the setup
4. at some point it seemed they introduced a clever reminders workflow - when the user would add one, the default would be around three hours from creation (with the exception of the night). this is not stable though - sometimes, the three hours interval is not respected.
5. I recently hit a bug where, when I select it from the Android task manager, the window closes.
Point #2 is definitely the worst for me; it really bites me on notes that include numbers and are frequently updated (eg. a gym schedule); I think this is a legitimate use case.
Point #1 may be a bug, although it's in a core functionality, which makes me think that it's intended.
News flash! I've just found a bug. There are four semi-fixed times of the day; but in the settings, one can only customize three.
Practically speaking, I think there isn't (enough) dogfooding in its design. More abstractly, I really doubt that it's up to standards with a company that is supposed to have the best IT professionals in the world.
The rationale goes like this: If you confront users with error messages, they get confused. The more technical the message, the worse the confusion.
Now what Windows does is to hide everything, ignoring that to be able to do that, your systems must never ever have any errors, lest you throw away useful information. I've got a Windows 8 installation I can't upgrade to 8.1 because all the update system does is not install the updates. There's no telling why -- the next time it still sits there telling you "by the way: there are updates you should install".
Contrast this with "user unfriendly" linux updates: They tell you loud and clear that things didn't work and give you a message you can google, if nothing else. OTOH, the Windows side of things involves reading tea leaves, clearing obscure chaches, wondering if mercury is in retrograde, deleting or adding random registry keys and in the end doing a totally new installation anyway.
The contrast with linux is night and day.
That's like me saying it takes over an hour to update my OctoPi instance when I remember to do it semi annually, therefore all *nix updates are broken.
I've used every professional version of Windows as a dev since Windows Vista and it's always fascinating to go online and read of the horror stories that people have with Windows.
The only time I ever complain about the OS is in your typical enterprise environment where admins load all sorts of terrible gunk in the name of security that every so often has your machine slow as molasses.
But my personal machines all get updates regularly and so far so good.
Mac OS means buying unaffordable or underpowered hardware. And being ok with living within the constraints allowed by Apple (on the hardware side).
Linux is not a consumer option. Ubuntu, for all its flaws, was the first distro that could actually be considered consumer grade, and that’s why pretty much any mainstream PC maker offering a Linux option offered Ubuntu. But as you can tell by just glancing at the comments on the release for Ubuntu 18.10, even they have seemingly abandoned the desktop market in favor of servers and IOT, etc. And that’s before you get to Linux’s Applications problem.
Windows is a fairly solid OS with a few remaining warts which MS stubbornly refuses to address. One of the issues was the years they spent trying to convert it into a Mobile first OS. That was such a waste of resources.
Unfortunately it is taboo to acknowledge that people, and especially groups of people have varying degrees of intelligence. Just watch this comment being downvoted into oblivion, for instance.
The real competition to watch is ChromeOS.
In what way? Literally every OS has a browser and all ChromeOS is is an embedded instance of Chrome.
It's a shame we can't customise it as much as Android, despite it seemingly replacing Android on tablets.
You're not the target market. I haven't had to help my parents with their computers since they switched to Windows 10 home.
Even better, I hope to replace it altogether with a Linux desktop or, even better, a Mac.
Just to state the obvious, home versions of operating systems aren't designed to run POS systems for businesses. That's what professional and enteprise versions are for.
You didn’t accidentally install a “checked” build, did you?
https://docs.microsoft.com/en-us/windows-hardware/drivers/de...
While it might slow down some of the feature work, I think it's clear that an always release-ready master branch is the path forward for Windows. Some of my more enterprising managers were already working on splitting our subfeature out of the Windows release tree just so that we could do that when I left a couple months ago. I hope they succeed, otherwise I worry for the future.
The stuff you and your (now former) colleagues have put up lately is remarkable. The last version of Windows I used on my home machine was Windows 2000, and Windows 10 is the first one I've looked at since then and said you know, I could actually use this thing, I guess.
I don't trust your (former) bosses enough to make the switch, but you folks have done some pretty amazing stuff lately.
Shuffles back to corner. Furtively plays with new TypeScript toy. Hisses at passerby.
I was a teenager.
One thing I’ve come to realize is that MS definitely excels at programming language design, coming out of college I had no experience with the MS CLR languages and I was pleasantly surprised at how well designed and usable their languages are.
Remember when we were allowed to customize our own color themes?
This is the norm in the software industry. As grunts or lower management getting tasked with the impossible, saying "yes" and doing "maybe" is really the only way. What they (upper management) gonna do, fix it themselves?
And then, of course, for the PM's and upper management layers, the fact that their project "met the date" is what is measured and congratulated all around. The product could be a stinking pile of XXXX, but "it met the date", so they get their kudo's, their bonuses, and the devs. and users are left with "stinking pile of XXXX".
About ten years ago I had the option of taking the red or the blue pill. I took the Windows pill by mistake.
Or maybe I just blame capitalism, haha. No deadlines! I do this because I like it!
Yes, they should have. adding tests long after the fact is next to impossible because, when you spend a long time not adding them, your codebase tends to degenerate into an untestable mess. One of the key benefits of strict TDD is that you feel the pain of testing your code before you write it, so your code is testable from the start.
It doesn't work this way, you can just sometimes abuse it to do what was not intended, but it's not meant to be done as in offering you options the official way.
It's infuriating to put the machine to sleep only to see in the morning (or days later...) that Windows woke it up at 3am.
Is it supposed to go back to sleep or is this honestly how someone at Microsoft wants it to work?
An issue that affects me daily and would be easy for Microsoft to test: my Bose Bluetooth headphones' computer voice knows how to pronounce all my other devices' names (e.g. "Chris's iPhone"), but it must spell out my Windows machine name letter by letter. Even if I rename my Windows machine to something I know my headphones can pronounce (like "Chris's iPhone"), they spell it out. Perhaps this is a bug in my Bose headphones, but these are very common headphones so I'm surprised no one at Microsoft or Bose has addressed this problem. My hypothesis is that Windows machine names are UCS-2 encoded and the headphones interpret the "extra" bytes as word delimiters.
I liked Windows 7 user experience. I had to boot up one in a VM the other day to debug a legacy issue. I realized how much I really did like it. I liked the control panel and all that. All that unified Metro(?) UI that has been developed since Win7 with mobile and touch in mind (that never happened?), with the new management tooling that seems to be only half way there combined with the near death of native Windows apps has effectively driven me to Ubuntu Desktop. Ubuntu userspace on Win10 is nice but then again, to me Win10 has been reduced to just something I run Firefox or Chrome when needed. Even Lightroom works well enough on Wine nowadays.
I get it - I am an old grumpy guy lamenting on change, probably off-topic too...but still, oh boy I wish they had decided to go some other direction! ;-)
It was the last version of Windows with a theme that wasn't butt-ugly.
> I would argue that Microsoft used to know how to ship software, but the world has changed... The companies that "know how to ship software" are the ones to watch. They have embraced the network, deeply understand the concept of "software as a service", and know how to deliver incredible value to their customers efficiently and quickly.
Windows is no longer Microsofts core product, Microsofts cloud offering are its main revenue base. As a side effect Microsoft decides to open source the Windows code base. Microsoft is already the largest contributor of open source on Github.
Windows becomes a application compatibility layer in Linux and are also ported to Mac OS X. You can now run Windows apps on Linux and Mac OS X including games without the update issue.
https://www.windowscentral.com/understanding-windows-core-os...
> Windows 10 Home users will receive updates from Windows Update automatically when it's available. Windows 10 Pro and Windows 10 Enterprise users will have the ability to postpone updates. The amount of time that Windows 10 Pro users can postpone updates is limited.
Basically: unless you pay a ton of money, we will use you as a guinea pig for testing.
[1] https://www.microsoft.com/en-us/windows/windows-10-specifica...
It seems a lot of people are using a Google-esque vocabulary where "beta" just means "new and fancy", and are really surprised when the beta release has bugs in it.
If I want to make a small change to notepad, I should not have to check out the whole Windows source code, but just notepad. Then you could have different development methodologies for different projects.
They should rip everything out piece by piece, and make it an addon. Then you'd have a minimal Windows core, a Windows shell, and the individual accessories. The shell alone would still be a huge project that you'd want to split up ideally.
The challenge with such a model is that you have to be really strict with interfaces between components. You have to define these interfaces, you have to quickly provide other groups with interfaces they need, and you have to provide backwards compatibility as long as any other component uses your interface. It's much more work, but it's better than the ad-hoc coupling you get if everything is one monolithic build.