I have been pondering today on user interface platforms in the modern world. But first, let’s take a look at history of UI. If you are a Microsoft developer, you had been accustomed to Microsoft dominance in the world of UI platforms since maybe mid nineties. Visual Basic 6 was truly the platform for business applications in the late nineties. Majority of people you talked to then who were on Microsoft bandwagon wrote apps in VB 6, including the company I worked for then. Granted, there were other platforms, like Java, FoxPro and others, but I believe everyone would agree that none of them came close to popularity of VB 6. Then .NET came to the scene. Again, Microsoft provided the most productive easy to use UI platform for Windows – Windows Forms. Many companies also used Web Forms as well. It was almost as productive as WinForms and more portable. Not that portability was a bid deal in early 2000s. Nonetheless Microsoft dominated the world of the business apps. Then WPF came and soon thereafter Silverlight. Microsoft clearly positioned Silverlight as the UI platform of the future, promoting it as the UI framework for business apps. Portability was more important in 2006-2007 time frame, and the fact that Silverlight could run on Mac was a bid deal all of a sudden. Then Apple decided that they will never let Silverlight run on iOS, both iPhone and later iPad. With increasing popularity of iOS Microsoft decided to accept this fact and declared that HTML is its platform for cross operating systems applications. On the other hand, is HTML a UI platform that Microsoft owns? Not really. They provide two main frameworks for building HTML apps – WebForms (still) and ASP.NET MVC. So, now we came back to the title of my post.
So, if one assumes that UI platform is now in free-for-all state, where does Microsoft role lies? IMHO, Microsoft continues to do what it does best. It keeps providing excellent tools for developers. I , of course, am talking about Visual Studio. They also added Win RT, a UI platform for Windows 8 that directly competes with iOS. .NET is still an excellent framework for building back end services, using WCF or newer HTTP centric Web Api. So, if you are a Microsoft developer your future is still pretty bright.
Granted, there are still Windows based desktop apps being developed. If you need access to devices and hardware in general, you really do not have much of a choice. WPF is probably your best bet. However, it is important in this case to develop robust service layer that will enable you go HTML at some point without replacing all layers in your app. Why you ask? I think you can see that the rules that used to restrict browser access to hardware are being relaxed slowly. For example, you have access to camera on iPad through browser. Somewhat restricted access, but it is there. One could pontificate that in the future users will be able to opt in for browser to access more and more hardware. At that point HTML will be the platform to write business apps in, likely with very few exceptions. Very, very few.