What Really Happened with Vista
hackernoon.com
hackernoon.com
I remember one of the base team architects laughing and bragging about how and why they killed managed code and banned it from the OS — the technical reasons where valid, but the attitude was toxic. I think most or all of the generation of architects that had come from DEC have now moved on, but they also took tribal knowledge with them. I wonder how much they were encouraged to find other things to do because of this type of attitude (which not all of them had btw)
Moving on
The Avalon team appeared to be drinking their own cool aid. They had charts on the wall showing their performance goals and progress. All the performance measurements on those charts were annotated as "estimated". I remember an internal alpha that had strong polynomial execution time based on the number of elements in the logical tree. It felt like the design was good, but that the correspondence of the implementation to the design was missing.
When Avalon was booted, we were told to write UI in a broken framework called DirectUI which had a convoluted history, an arrogant maintainer, and a weirdly mismatched documentation. Much was documented that wasn't implemented, the standard answer to missing features was "add it yourself", but if I pushed a code change to shell code (where it lived in the codebase) it would typically cause a forward integration from winsec to base to be rejected.
Good times
There was an effort to componentize Windows. This was extremely hard to do, while the kernel itself had a very clean architecture, the layers on top - less so.
"Longhorn Basics" this was a list of fundamental stuff that every team had to either cover or explain why they didn't (Accesibility, I18N, security, etc.) this was a great way of making sure that these cross cutting concerns where handled consistently across an enormous team
Testing - it may be hard to see this from the outside, but the testing was off the hook. Hardcore static and dynamic analysis ran against everything
Edit: also BitLocker!
If you look at Vista as a hardware compatibility beta for 7, I think it was a resounding success. They pushed out an operating system with a new incompatible driver model, had to wait for driver manufacturers to catch up (giving the impression that Vista was the problem) and then by the time every driver was rewritten, 7 came off as a godsend. 7 wouldnt be 7 without the "disaster" before it. It also let them use home users as a giant testing base for enterprise customers.
and dont forget uac, which broke a ton of code that expected admin rights
What do you mean?
It was definitely the case that a large number of windows users, possibly a majority, would have their user account be a member of the Administrators group.
UAC changed the way processes were started to use a lower privilege level by default, or popup a permissions dialog if higher permissions were needed (based on a manifest associated with the process)
In parallel the code samples on MSDN that showed how to detect if the current process had admin permissions was subtly incorrect, so programs that had been written to do the right thing depending on privilege level would fail unexpectedly on Vista
There were also the obvious advantages of everyone using the same technology. At the time, the look and feel of a windows release was a closely guarded secret until fairly near the release, so the team that owned that experience needed to be able to apply that theme to everything fairly quickly.
Now with .NET Native, C++/CX and UWP, one can say the design of Longhorn is revenged.
The COM based infrastructure could already have been a thing, if there was a desire to collaborate during Longhorn's development.
Rarely do you get something for free, and assuming that this time is different is more likely hubris.
And when you do get something for "free", it's more about making trade-offs that no one notices (JIT) or doing incredibly clever things in a layer abstracted enough that people won't have to concern themselves with what you did (language and compiler design).
As for note, all modern mobile OSes have languages with runtimes, regardless of AOT or JIT compiled, but they all required architects with guts to push them through.
The article's author's assertion is that blindly using managed code in performance-critical components is a stupid idea, and I agree.
From the article, WinFS (the filesystem), Avalon (the UI compositor and renderer), and Windows Communication Foundations (networking) were all rewritten in the then-new/unstable C# for Vista.
Given that fate of the projects, I'd say history bears it out as being a stupid idea.
The projects were killed by political reasons, not technical. Specially after what was being done with Midori, also killed by management, in spite of the technical achievements.
You can't really do this with a managed (VM) language.
Sadly, this is how some open-source projects are run as well.
I offer here a response that you can use to add as a mental sed stage when reading mail from people that work for free and have little time:
Add it yourself -> Thanks for your suggestion. I will make a note of it but it is unlikely that I have the time and resources to implement this. You are more than welcome to submit a well tested patch.
But no, I'm not going to put in 30+ hours to download, build and try to figure out where the bug is in the actual code. There are people who are in a better position to do that. If everyone who has a car problem had to submit a diagram to the factory on how they would change the car's design, we'd all be spending a lot of time doing stuff we're not good at.
Everyone trying to drive to a stable release was happy to see it go, because otherwise our job was impossible.
1. In Vista, there was a completely new Antivirus framework that AV vendors had to use in order to support Vista. Good idea in theory, but because it was brand new (and because vendors had to write brand new code to support it), it had a fuckton of problems, mostly contributing to an enormous performance degradation compared to XP. Like, horrendous. And since every laptop you could buy in the store had 3rd party AV because that's how OEMs make $$, whoops every laptop is absolute garbage out of the box.
2. Windows Vista completely rewrote the USB stack, an extremely complicated, timing-sensitive component (like, add a printf, break a device kind of sensitive), and about 80% of the way through, the lead architect who planned the rewrite left the company. Meanwhile, there were a _ton_ of devices which weren't actually correct wrt the USB spec, but just happened to work with the timings that WinXP solely by accident would exhibit. A friend of mine made a lot of money in bonuses by slogging through bug after bug in the USB stack trying to make it right for Vista SP1.
It's funny, because Vista shipped a ton of great features, that then got attributed to Win7 - it really set the foundation for the modern Windows OS until Win10 came out.
So, if you learn anything from the story of Windows Vista, it's this: Performance is not a Feature, but it sure can make all of your other features not matter at all
This alone explains a lot.
They might not be irreplaceable but they might be hard to replace, and if they leave in the wrong moment, it could jeopardise everything.
I guess having a management team made up of several Steve Jobs might arguably feel safer for the share holders, but it's probably hard to find them and make it work.
There are risks to manage; For instance, treat them nice so whole teams won't quit in rage. Treat the unicorns even nicer.
And yet, in practice, that's how the majority of shops are run.
The headline being "NVIDIA Responsible for Nearly 30% of Vista Crashes in 2007", but the perception of Vista being terrible.
It's like they have "Make it easy to manage" as a priority, then don't talk to admins with non-MS experience, and then build features in a bizarre way.
I have heard that some people at Microsoft consider Vista a kind of public Beta for Windows 7. Maybe not intentionally, but that is the way things worked out on the road from XP to 7.
And Windows 7 is, as far as Windows systems go, very nice. Very stable, decent performance on not-too-old hardware, I like the UI very much.
It became much less of a pain in the ass when it comes to Windows 7's implementation, but it was a step in the right direction.
Yet another Microsoft OS with a fresh set of incompatible hardware drivers.
There was no clear vision about what a modern OS should be. It felt bloated and clunky. Vista felt like it was trying to be everything to everyone and not really being anything much special to anyone.
By contrast, OSX seemed to know what it was, and provided a cohesive integrated whole in which things just worked. Most importantly, Apple somehow managed to generally provide just one way of doing things. For example configuring networking on OSX happens in network preferences. On Windows, to this day, configuration seems to be all over the place, a bit here, a bit there, and many different visual and UI styles for the configuration. Made even worse by add in software for configuration from hardware vendors. Even now with Windows 10 I dread having to resolve ANY sort of network issue - where to start - which rabbit hole will the required setting be down?
Windows had - and still has - problems that have never bee fully solved and they make the platform so unappealing. Shutdown of the Windows OS could never be relied on to actually happen without hanging for some reason. Hibernate mode when closing the laptop lid was equally unreliable. Constant application crashes. Multitasking that just wasn't - all the time the OS would become unresponsive due to the behaviour of some application, which leads to the next major issue was a seeming inability for Windows to actually force kill processes when instructed - that rarely worked. Even something as trivial as deleting a job from a printer queue - basically forget it.
After Vista, Windows 7 seemed to clean things up a bit before they got even worse, with Windows 8 just being an absolutely definitive statement that Microsoft did not know what Windows was or where to take it - I mean for goodness sake - removing access to control panel? Crazy.
The latest versions of Windows are better but no-one has had the courage to do what Windows really needs which is to get rid of the registry - that chewing-gum-in-the-hair-mixed-with-spaghetti central configuration settings black hole.
The core problem with windows 10 for me is and remains the crappy driver situation. Drivers on windows are far less robust than on OS X, and OS and/or driver updates create many more problems. This isn't tied to any particular windows version, but W10 suffers from it more because updates happen with much less control over the when and where, which means drivers break in more awkward moments.
An example from my own workplace is that a lot of my coworkers have had their laptop keyboard break after a W7 update. Windows reboots to update, and ctrl-alt-del no longer works, not on the built-in keyboard and not on an external one, so you're locked out. The solution is connecting via remote desktop and logging in once, after which windows update picks back up and fixes the problem, but that's not always a convenient thing to do. I bet that microsoft doesn't even see that in their metrics, because to them it's just a remote desktop login, so they probably think those updates don't have any problems (after all, the update gets installed and people seem to go back about their business).
These days you can authorize Windows to log you in upon reboot so that Update the finish up.
The drivers ABI has only changed a few times, instead of every point release.
I could see the benefits of being able to throw up a "Warning: {Device name} is not behaving properly and may cause system instability" prompt. As opposed to just screwing up behavior at user interaction time without a clear "That piece of hardware you bought / company you bought it from is a POS" message.
With mmc and the various snap-ins, I get the feeling the code has not been touched in at least a decade.
Regarding the Registry, I have a funny anecdote: During development of Windows 7, Microsoft tried to be very open and communicative to rebuild some of the trust that Vista had shattered. So, there was this video of an interview of a few Windows developers about all the cool and interesting things they worked on. Halfway through the interview, the guy behind the camera asks, "So what do you guys think about the registry?". There was a long awkward silence, the developers started to grin and giggle. Eventually, one of them replied, "Let's just say it has turned out to be more widely used than its creators had anticipated".
(In other words, yes, the registry sucks like an industrial vacuum cleaner!)
Essentially, the Registry was a stop-gap to store configuration information about COM in Windows 3.1 until Cairo came along (which never did). Then the Windows 95 guys came around and decided to use it as the replacement for .ini files. And the rest is history.
Thinking about it, it strikes me that the registry is similar to the Office file formats. Effectively file systems rolled up into files.
http://www.macworld.com/article/1054364/allchin.html
Trainwreck seems a bit of an overstatement when discussing that time period.
This! I couldn't say it better myself.
> The latest versions of Windows are better but no-one has had the courage to do what Windows really needs which is to get rid of the registry - that chewing-gum-in-the-hair-mixed-with-spaghetti central configuration settings black hole.
The registry is exhibit A in the case for Windows being essentially a legacy OS at this point. Microsoft no longer seems to have the incentives, or, after the Vista disaster, the political will to make big architectural changes to fix basic problems of Windows: the configuration mess, the gaggle of different poor package management systems that PS PackageManagement is papering over, the muddle of logging, etc. Windows 10 also looks like Microsoft accepting a strategy of slow incremental improvements, or no improvements at all.
Good.
What's the main issue with registry or what would be better alternative? I think this kind of database oriented way of storing the settings with transaction support is actually pretty good approach.
E.g. all the missing Win 8 basic Windows functionality, where the underlying system existed but no GUI had been written to expose it
And how Windows Explorer search is still a cluster$&#@ that's regressed in functionality since XP (available operands to specify search params, scope, speed, etc).
The devs have also STILL not figured out how to give a simple and easy way to move windows from one monitor to another from the alt-tab menu.
Actually the control panel is present even in Windows 10.
You just have to dig it out of the Start view/menu.
I think SP1 fixed that significantly. In my current job, I had to install Vista twice, and I clearly remember that after installing SP1, performance became much better.
My own experience was basically this:
* 95 a - nearly unusable with the wrong kind of hardware (e.g. SCSI)
* 95 b - pretty solid
* 95 c - too few differences to b
* 98 - kinda meh, but usable
* 98 SE - finally fixed most of the 98 quirks
* 2000 - first time I felt Windows could be called "very stable"
* XP - pretty decent as well
* Vista - horrible mess on ~10 machines, worked ok on ~2
* 7 - second time I am actually ok with using it (just still greatly prefer Linux for work as a developer)In retrospect it is rather funny, but I did use Windows ME for that, and it never gave me the slightest trouble. (Of course, one might say, I hardly used it. True enough.)
Best i recall, Vista was the first Windows that used the GPU to accelerate the UI. And the prime example they had was the frosted glass effect of the titlebars.
Forgettable and boring yes, but plenty fast and stable on an old HP box that served as my workstation
Given the results, it seems that Apple had much better leadership/management and maturity in their team.
Apple's approach, while not perfect, clearly worked much better. I often wonder what it would be like if MSFT had taken that approach. I think the world would have been much better off for the last 15 years.
What were those OS innovations in iOS?
At the time I had a Windows Mobile 6 phone and while there was a lot of great things about it, Safari's browser experience - even on iOS 2 - was revolutionary.
It absolutely blew the alternatives out of the park.
Those things didn't come around by accident. It's because the OS was ruthless in cutting off applications from hardware resources, because its compositor was designed for basically moving a textured quad around the screen with very little latency on a mobile GPU, and because its main animation system ran in a high priority thread way above your applications.
All these little things are what made it feel "magical" to use the first iPhone, to have your finger perfectly tracked when pinching and panning on a mobile computer in the palm of your hand. It can't be overstated how important it is for a human to get an instant visual response to their touch, and how highly iOS prioritised this exact thing.
Symbian had 60fps one-to-one correspondence with your touch on a multi-touch surface in a handheld computer? It had a high priority animation thread that continued to run even if your application crashed? I was never a Symbian developer, but I don't recall any pre-iPhone Symbian devices performing in this way.
The examples I gave were all about driving the physics-based movement of an OpenGL based UI compositor on a very rudimentary mobile GPU. It's putting your finger on the screen and getting an instant response from the underlying visuals, and having that response tracked perfectly across the surface of the screen.
The innovations in iOS (e.g., resuming an app by showing a screenshot of it's last use while it came to the foreground) were all in favour of increased perception of responsiveness and actual increased responsiveness. Not just about maintaining battery efficiency.
The Series 90 was the very first touch driven device with hardware GPU, one year earlier than iOS got released to the world.
Putting a touch interface OS on a hardware GPU is not the same as the specific developments I am talking about. The graphics compositor (CoreAnimation / CALayer architecture on iOS), physics-driven animation and one-to-one correspondence with your touch at 60fps was what made the platform unique on its release.
Edit: this is the best video I can find of a 2007 Nokia device with touch interaction: https://youtu.be/YrS1PGj27VI?t=1m4s — the interaction is incredibly high latency and not at all one-to-one like an iPhone. Absolutely none of the innovations I mentioned are present on the Nokia (or if they are, they are not being used to facilitate human interaction with the device in this video).
Although I do concede that if it wasn't for iPhone's success, OpenGL ES would probably never had taken off, as Symbian was one of the very few mobile OSes that had some flagship devices with hardware support for it.
In the following video https://youtu.be/CUUnnf_gX1s?t=46s you'll see that when the button is tapped, the screen "tears" when the device re-renders its display. I doubt this OS was using the GPU to render and composite its components to the display. It seems more like it is software rendering the UI then passing the entire buffer to the GPU for display.
Notice also that the scrolling on the device is line-by-line rather than per-pixel. It's done to minimise screen redraws but it is exactly the opposite of what made the first iPhone so pleasant to use. The only one-to-one interaction in the Nokia 7710 video is the little sliders being moved by the stylus, but they too flicker when redrawing.
My point wasn't really about whether a phone supported OpenGL. I was pointing out the software design of the graphical compositor used to render and animate the UI, and how every small decision was made in favour of prioritising an immediate reaction to human input.
The only reason I mentioned the iPhone's meagre mobile GPU was to emphasise how iOS was able to produce such low-latency and smooth performance from very low powered hardware.
Yep—smooth scrolling was a famous obsession of Steve Jobs that was emphasized in just about every Apple product where it was feasible, the idea borrowed from one of the fated PARC demos. Little things like this go a long way in building a sense of symbiosis between user and device.
If the "new" Microsoft had materialized sooner and (e.g) successfully shipped .NET core in 2005 before betting on WinFS/Avalon then perhaps in 2017 we wouldn't be taping our backends together with javascript.
For those who may no know, Avalon was the code name (or perhaps just previous name) of Windows Presentation Foundation aka WPF - https://en.wikipedia.org/wiki/Windows_Presentation_Foundatio... - which was eventually formally released.
WinFS released a beta and a "beta refresh" but the project was cancelled before it was formally released.