The Marginalization of the Operating System

It occurred to me that the phone marketplace is like a microcosm for what is happening in the desktop world. It’s a little like watching the common cold mutate through a season. The gestation period for something so small is so short, that huge changes can occur in an extremely short period of time. As such, we’ve seen huge market share swings from Blackberry, Apple, Microsoft, and Google. Google’s Android lately has been pushing out other market players with (arguably) sub-standard, but cheap software and placing the consumer’s focus back onto what they can hold in their hands – good quality phone hardware.

Although not to the same extent, much the same thing is happening in the desktop world. Although still king of operating systems, Windows is being eroded ever so slightly in market share by MacOS (and to a much greater extent in mind share). Once people start getting used to the idea that their desktop can be something other than Windows, the floodgates will open with cheaper alternatives like Linux – just as what’s happened with iOS (providing a compelling user experience through good design) and then Android (by being good enough at no cost). I also think Microsoft knows this and it has been the driving force in some of the newer software platform decisions.

We’re seeing the foundations being laid for true software as a service in the form of Silverlight, a platform that will extend Microsoft’s reach across all operating systems and allow them to retain the crown as THE platform provider. It will allow them to continue their main software platform business by providing a common API to all operating systems and allowing their software to continue to be sold to everyone. The technological specifics of the platform allow some very interesting business models for selling software as a nice bonus as well, to be discussed another time…

Besides writing a plugin for the most of the major browsers across both Windows and Mac, Microsoft has also been collaborating with Novell by providing source code, specifications, and test suites towards the creation of Moonlight – the open source implementation of Silverlight for Linux and Unix systems. If that’s not a clear indication of what Microsoft considers their “platform”, I’m not sure what is.

Windows on ARM

It probably escaped the notice of most consumers, but a fairly major announcement was made at CES 2011 that will shape the future of mobile computing for the next few years.

Yes, Microsoft announced that Windows has been ported to the ARM processor. I don’t mean Windows Mobile (Microsoft’s now legacy Mobile OS, or Windows Phone 7 – built on Windows Embedded Compact 7) which already runs on ARM. I mean the Windows desktop, the OS that there is a 91% chance you are using if reading this article from a desktop computer.

ARM processors power a significant portion of mobile and low powered devices including smart-phones, TVs, and industrial hardened portable devices. They can be found anywhere that a system designer needs to conserve power due to battery life, or needs a low-heat high performance processor for a specific task. If you haven’t noticed, this is not the world of Windows.

Windows has always been relegated to mid-range to high performance computers for consumers or businesses. But there is an entire emerging market of smaller embedded computer devices that are becoming the norm. From smart phones to tablets, there is an overall pattern that is becoming apparent. The hardware these devices are running on is starting to rival desktop computers from a few short years ago. Desktops that are still perfectly capable of running a modern operating system with a few bells and whistles turned off. In the time between now and when this software is ready for prime-time, the gap will close even further. In fact, it’s highly likely that Windows 8 and Windows Phone 8 are going to be the same operating system.

Some would argue that Microsoft is late to notice this trend, just as they were late with noticing the trend towards touch based computing. This is further from the truth as can be. It takes years to produce working software as complicated as an Operating System. It takes quite a bit of time, planning, and financial backing to port an OS to an alternate micro-architecture. It’s likely that Microsoft put the plans in motion several years ago for this announcement, just as the Microsoft Surface sat in R&D labs at Microsoft since the beginning of the last decade before making its public debut. It takes careful consideration to release a product into the marketplace, and it’s all about timing.

Back on the subject of ARM however, some would point out a small issue on this subject. Software. You can’t run x86 or x64 compiled software on an ARM processor. You can’t run any natively compiled software on a processor that it’s not specifically compiled for. So this small caveat prevents almost every commercially available piece of software ever written for Windows from being run on Windows for ARM. So why would they do such a thing? Again, it’s all about timing.

The .Net Solution

.Net is a hardware agnostic technology that Microsoft release in 2002. It’s largely been relegated to development of Line of Business software due to its nature. It allows rapid development of software for several mediums (Windows, Web, Mobile) while using a (mostly) common API and set of languages. When used by a skilled team of developers, it’s a technology that produces a high return on investment by lowering development costs and making your IT department as versatile as possible though the application of the same skills to the various target platforms.

What’s special about .Net is that an application is compiled to MSIL (Microsoft Intermediate Language), a processor agnostic language that is JIT-compiled at runtime on the target platform, or pre-compiled during install time, again specifically for that target architecture. Although you can target your compilation for a specific architecture with .Net directly, there are usually specific reasons to do so that would prevent you from running a particular assembly on an alternate architecture anyways.

.Net is not a technology that is widely used in commercial software. There are likely very few software packages the average consumer has installed that use .Net. But it is there. Windows Vista and Windows 7 both have a desktop rendering engine that uses .Net. Microsoft began its push towards full .Net user interface several versions of the framework ago. A push that is finally starting to show a return on investment.

An application written in .Net and compiled for “Any CPU” will run on an ARM based Windows implementation the same as an x86 or x64 PC. It’s the runtime installed on the specific OS that knows about the underlying architecture, freeing the developer to write software that meets business requirements and not just internal platform specific plumbing.

There is a drawback though.

.Net has no first party equivalent on alternate OSs. Yes, there is Mono, but Mono is not a complete implementation of the .Net framework and has no real support or commercial viability due to timelines for support of new features.

Instead, Microsoft has spun off purpose specific versions of .Net. Silverlight, XNA, and to a lesser extent, the older deprecated .Net Compact Framework (Windows Mobile 6.5 and below).

XNA can be used to develop games or 3D interfaces – and works for Windows, Xbox 360, and Windows Phone.

Silverlight is usually found in browser distributed software and exists as a plugin to host the runtime for all the major browsers on both Windows and Mac (and through the Mono implementation for Linux).

Silverlight and XNA are in fact the only way to develop for Windows Phone (an alternate platform for embedded phone devices that shares only its name with the Windows desktop). A move that has ensured that all Windows Phone software moving forward will continue to work on every iteration of the OS and for every type of hardware. This is quite important if what I predicted earlier becomes true – that the Windows desktop OS will displace the current Windows Phone 7 OS in the mobile space. The consumer should not notice.

It’s also possible to use Silverlight for Web development for both Windows and Mac. And through a Silverlight specific version of Click-Once deployment called Out-Of-Browser, you can run Silverlight software just like regular desktop applications, including having a start-menu entry for start-up.

Although not perfect (it would be nice to have one framework to rule them all ;-) they’ve done an admirable job of organizing the chaos with all of the different platform possibilities out there. It’s also quite an exciting time for .Net development from the perspective of someone like me as commercial development begins to take hold and wider industry adoption takes place. The possibilities seem endless.

IE9 beta Privacy

If you downloaded the Internet Explorer 9 beta, then the first thing you probably noticed just like me was how sparse the UI has become. It’s clean. It’s fresh. It’s missing something… Ah yes! My good old friend – the Search box!

One of the things I always liked about IE, and had issue with in some other browsers was the separate search box. Why would this matter? Well, all good search providers try to do their best to help user’s do one thing – find the information they’re looking for. And what helps a user get that information quicker than a dropdown list of suggestions.

Well, in order for this magic to work, a few things have to happen. Each time a user presses a key, the string being typed is sent to a web service that belongs to the configured search provider for the browser. Which search provider doesn’t matter, by default it’s Bing with IE, but an end user is able to change their default search provider to any search engine they prefer. In any case, as the user is typing, this remote service works on looking up common search suggestions to auto complete the text the user is entering, and returning the best results to the browser. The browser then displays these results in some sort of dropdown list below the textbox for the user to pick from…

Now, I don’t really have any issue with this, after all, you are entering text into the search box in order to send to a search engine in the first place. Either way, you are about to send this text to whichever search provider is configured. The problem I do have is that this search box is now integrated with the web address textbox. Now, anytime you type anything into the address, this information is being sent to your friendly neighbourhood search engine to be collectively or individually analysed for monetary gain (yes, search engines are businesses, and despite how some spin the truth, they only have one purpose – to make money).

So now whenever you decide to enter the address of your favourite website into the address bar, Google or Bing or whoever knows where you’re going. There is absolutely no reason whatsoever to involve a third party every single time you decide to use the internet. Microsoft knows it, and in fact has used this as an argument NOT to use alternate browsers before. Microsoft argued specifically that Chrome did not respect your privacy by implementing the search suggestions in this way.

Such an about face is a little jarring in my opinion and makes me wonder what internal political struggle may be happening to sacrifice privacy for a cleaner interface. It wouldn’t be the first time another business unit in Microsoft influenced the bahaviour of an Internet Explorer feature. In fact, it would be the same business unit at work here…

I’ve always been an advocate of Microsoft technologies, especially since I make a living developing .Net software, but sometimes it’s a little difficult to defend their actions. I have no further comment besides recommending people disable the search suggestions in IE9 – simply to prevent these people from gathering more information than they are entitled to. Or switch to Firefox.