Thursday, July 24, 2014

Why I think CNN is clueless on Technology

Apologies: This Is A Moderately Technical Post


It's not very often that a news article makes me angry, but last night I read this CNN article on Microsoft stopping it's Windows RT product;
Microsoft's most boneheaded product is about to be killed off

The morning has come around, and it's still aggravating me because it's wrong, so I'm going to try and lay out why here, because when you understand what most don't (including the people at CNN) you'll see how wrong it is.

As we all know, computer technology has for decades remained somewhat mystical to the consumer.  Most have no idea about Von Neumann architecture, endian problems, stacks, and such because outside of computing, these things are not used much.  Whilst the recent (past decade) operating systems have become infinitely easier to use, the media is now showing it's ignorance when trying to educate consumers and is actually muddying the same waters that have recently been cleared.

So, let's dive in as to what's wrong, starting with a little history.

Traditionally, the Windows architecture has been successful because of it's open architecture where peripherals is concerned.  By moving core pieces of the OS to drivers that plug-in, the details of these peripherals is shielded from the OS.  This means the OS can accommodate new things as they arrive.  Ironically, however, the core part of the OS is optimized for the Intel x86 instruction set.  This means you need an Intel processor, or Intel clone (AMD, etc) to run it.

Digging further into Windows, we see that it is comprised mainly of DLLs.  
Under 16bit windows, everything sat in C:\Windows\System.
Under 32bit windows, everything sat in C:\Windows\System32.
Under 64bit windows, everything sits in C:\Windows\System32, for compatibility reasons.  

Yes, System32 holds the 64 bit DLLs on 64 bit systems.  Obviously, to be able to thunk down the pointer instructions and run unmodified 32-bit programs seamlessly, you need to ship the 32-bit DLL's, so these reside in C:\Windows\SysWoW64.  Yes, the 32-bit stuff is in the directory ending in 64, and the 64-bit stuff is in the directory ending in 32.  

If you've no idea what WOW64 (the latest incarnation of Windows on Windows) is, read this.  

Remembering that all the peripheral drivers have to talk to these DLL's, you can appreciate that they need to also be compiled to only run on Intel processors, because when a DLL is loaded and wired up, the VTable needs to point to the function at the correct address, or you'll get a blue screen.

So, lets revisit the "Vista" debacle for a second...

Up until Windows Vista was conceived, the driver architecture had not changed since Windows was first introduced.  If you printed, you still had brushes, canvases and such, but the printer hardware was moving to capabilities far beyond what the OS was aware of.  Same thing for cameras - what started off as a picture device was now turning into a combined picture and video capture device.  Throw in VPN's, smartphones and other new technologies, and it was clear that the driver interface of Windows needed to be updated.

Unfortunately, an update of this magnitude requires breaking changes.  So, Microsoft tore down the driver architecture and brought it up to date.  Then, due to market pressures, they forced this new architecture out of the door before everyone had a chance to rewrite their drivers to use the new specification.  As history shows, what happened technically and what the media and public saw are two different things:
  • Technically, the OS just got future proofed.
  • Consumers thought the OS was broken as their printer/camera/etc stopped working.
This wasn't the OS's fault - though it was certainly Microsoft's fault for pushing it out of the door too quickly.  Today, Windows still uses the same driver architecture, only now the device manufacturers have had time to update their drivers and iron out the kinks.  However, everything was still only compiled to run on Intel instructions.  After Vista was pushed, Windows 7 came out.  Windows 7 was effectively Vista with fixes in place, and some new features.  

The public and the media committed Vista to their collective memory as a total failure, for all the wrong reasons.  Even the media reported Windows 7 as "going back to the old Windows", when in fact it was just Vista fixed and moving forward with the same old plan...  There was no "going back".

The next problem to address was mobile devices.  Intel chips are known to be fast, power-hungry and hot.  If you're going to make Windows a truly mobile operating system, you're going to have to face the fact that the successful devices all run on ARM processors, not Intel.

At this point, it shouldn't take a genius to understand that if you're going to run Windows on an ARM processor, all those Intel optimized DLL's will have to go.  The problem here is that some of the routines in these DLL's are so crucial to the running of the operating system in terms of speed and bottlenecks, they've been tweaked over the decades to include manually written assembly code.  

This is therefore no small undertaking.  

What Microsoft did was rewrite nearly everything - and thus the WinRT (Windows RunTime) was born.  The WinRT component can target both the ARM and Intel processors, and acts as a broker between your app and the hardware underneath.  In a loose sense, this is like putting Windows services into a driver all of it's own.

The next piece of the puzzle was to rewrite the desktop and everything else to sit on top of the WinRT foundation.  This was done, and hence "Windows RT" was born.  So, now you have an RT-ready desktop sitting on an ARM capable runtime.  If you write a managed app to run on the new managed architecture that targets WinRT, you're app will run on desktop, ARM and Windows phones.  This is primarily where "apps" come in, but it's not exclusive to the Metro app style.

So, Windows RT is now created and works.  So what did Microsoft do?  They pushed it out the door too early, again.  They hadn't even finished writing Office when Windows RT was released.  Major software manufacturers like Adobe hadn't had time to go through the WinRT architecture to begin thinking about a migration process...

So, the media deems this marvel of engineering as a piece of crap and then Microsoft puts the icing on this cake by confusing the public as to what Windows RT really is, as well as simultaneously bandying about the WinRT term.

Fast forward, and Microsoft is now killing off RT.  You can bet your bottom dollar this is in name only - after all, we can't make all this progress of finally having a Windows OS and universal apps that run on your desktop and XBox, only to take this away.

Having a thorough understanding of the monumental engineering that happened, lets go back to the CNN article where we see stuff like this:
  • "Windows RT was supposed to usher in the tablet era for Microsoft. But Windows RT has two fatal flaws: it's missing crucial apps, and it's poorly designed."
  • "The biggest failure of Windows RT was that it took away the single best part of Windows -- the fact that it can run just about every app ever created."
  • "Still, you can't run iTunes. There's no Chrome or Firefox browser. You likely can't run your company's custom-built software. Pretty much anything that requires a desktop is a no-go."
Yes, these people probably complained that they can't put diesel in their petrol consuming car... This is the same problem - it's not the OS's fault that 3rd parties haven't yet ported their apps to the WinRT platform.  

Another point that also got my goat was this:
"Microsoft didn't take away the desktop in Windows RT. No, no, no. Curiously, Microsoft kept the desktop around so you can run a separate, more robust version of Internet Explorer."

They missed the point again.  The "desktop" version of IE is the WinRT ported version of IE that will get reused on other platforms.  The core components of that desktop version (such as the rendering engine) are shared with the metro version which is designed for fat-fingered use on smartphones and tablets, not mouse/trackpad with precision.

To drive the penultimate nail in the coffin on this CNN article, we can use the article against itself.  On the one hand, it says this:
"You likely can't run your company's custom-built software."

And on the other hand, it says this:
"But Microsoft never made a compelling case for why you should buy a Windows RT tablet over a rival tablet except for the fact that it runs Office. And that argument just went out the window when Microsoft brought Office to the iPad earlier this year."

The simple answer to this is you open up your custom software that you likely spent a lot of money on in the latest version of Visual Studio and you port it (something you generally have to do every 5 years or so anyway, unless you want to be stuck only working on Windows NT 3.51 forever).  Once you port it, you have a lower learning curve for the users, lower cost devices (ARM is cheaper than Intel) and so the list goes on.

But I said that was the "penultimate"nail in the coffin...  So what's the final nail?

Simply that regardless of what happens to Windows RT in name, it has no bearing on it's technology - the guts of RT will proliferate.  That RT desktop that currently has few apps will be the same WinRT-based desktop you're running in a few years on your shiny new laptop.  Yes, the RT-debacle will clear up in exactly the same way that the Vista one did - it's an adoption/timing issue.  

The catalysts for this move though will be the Windows Phone and XBox.  Microsoft is moving it's "Universal Apps" to more devices, and what this means is that if companies want you to run their software on those devices, they'll be porting it over to the new architecture.  

The irony of this, of course, is that whilst the media no doubt fawns over Windows 9 and it's ability to write once, run everywhere, they will simultaneously forget that we were already there with Windows RT and yet whilst they stand on the shoulders of this huge endeavour, they will likely be mocking it in ignorance.

I hope that now you understand why the ignorance of the CNN article makes me so mad.