Why Microsoft is not like Sun Microsystems
DISCLAIMER: I am a former Microsoft employee and I used to work for Bing. This article reflects my PERSONAL opinion and does not necessarily represent the position of my past employer: it is a personal interpretation of facts going on at the moment
Recently, there have been some discussions going around the open sourcing of .net and the possibility of using .net to develop on non-Microsoft systems such as iOS, Linux and Android. Those discussion were trying to draw parallels between the choice of Microsoft of opening up .net and the choice — many years ago — of Sun Microsystems of opening up Java.
While there are obvious parallels between the two, I do not think that we can predict, for Microsoft, the same destiny that Sun Microsystems faced as, for instance, the environment is not the same as it used to be long time ago. As all the good stories, let's start from the beginning.
It was 1994 and Sun Microsystems was a company which main business was producing and selling high-end hardware running its fabulous — I was a big fan of it! — operating system Solaris and before that SunOS. Their hardware ranged from extremely powerful workstations to servers with hundreds of processors. All of that was based on the SPARC micro-architecture which was RISC based and not compatible with the intel one. It was an exceptionally good architecture using register windows, etc. The problem was that all of it was crazy expensive. Opening up Java made possible to use it on platforms that were, maybe not as good as Solaris on SPARC, but they were cheaper. Moreover, the market started moving towards web-services which have the "bad" habit of scaling very well horizontally and the solution to the majority of the problems was not buying a more powerful machine but it become buying more, maybe less powerful, machines. A lot of dumber and cheaper machines were a better choice than a big-iron to run such applications. If those applications were Java application, moving from Solaris/SPARC to Linux/x86 (or whatever) was extremely easy. That's it really. Sun Microsystems become its own competitor and all the moves that it tried not to die miserably — as adopting MySQL, PostgreSQL, etc. to be able to provide a full-stack solution to its customers and competing with, let's name one, IBM — were not, at least in line of principle, wrong. They were just "too little, too late". Sun Microsystems finished its history acquired by Oracle. Oracle, after the acquisition, was able to provide full-stack solutions to its customers: Sun hardware, the Oracle DB, the Java programming language and an army of consultants. Which is more or less what Sun Microsystems tried to do, at the end, to save itself. With the difference that Oracle was already in that sport. It just missed its own hardware to complete the picture.
Now, let's jump to the present and let me explain you why Microsoft move is not the same.
Today, the name is the game is "cloud". You have a VM running operating system X, running inside a machine running operating system Y and you do not have to buy hardware anymore. You buy time/CPU/memory tokens from some cloud provider and you have your "instance" running in the cloud. Microsoft is one cloud provider exactly as Amazon and Google. Its cloud is called Azure and you can run any hosted operating system in your instances: Windows, Linux, etc. Moreover, your servers will be used to push data toward personal machines that are PCs, Windows Phones, Android Phones/Tables and iOS devices. Maybe, the data will be pushed to other services in other clouds as well. Moreover, opening up .net means using it to develop applications on the client systems: PCs, phones and tablets. Having .net running on a variety of systems would make that appealing to developers especially because they can write their code once and run that everywhere. On top of that, Microsoft has the best development tools around. Visual Studio is a joy to use and it permits developing .net applications quickly and efficiently.
The difference is that Microsoft is becoming a cloud, services and tools company (on a certain extent, Windows is a tool with respect to your application) while Sun Microsystems was still stuck on its old business model. While Sun Microsystems, opening up Java, created an internal competitor, Microsoft, opening up .net, created a full world of opportunities for selling more Visual Studio, more VMs in Azure and provide more consultancy to potential customers.
If you permit me to conclude with a joke, the choice of opening up Java by Sun Microsystems has been one of the most spectacular suicides in the history of computing industries. I often depict that in my mind as the suicide of "El Macho" in the movie "Despicable Me 2". Here it is in all its beauty: