Now unlike many tech enthusiasts, I don’t tinker with tech too thoroughly – I don’t have the time or the willpower to create apps with every technology that is announced. Yea, I will read up on it, I may tinker with the tools, but it would take a very serious use case that involves me making a dollar or two for me to dive in.
With that being said, .NET technologies has earned me the most money and I credit a fair amount of my earnings over the years to the brilliant minds at Microsoft that created the tools, languages, libraries, and the .NET platform in general.
The brain-trust at Microsoft didn’t stop with .NET 1.0 of course, as each subsequent version brought a new world of capabilities. After the much profitable and heavily adopted “WinForms” successfully overtook MFC as the choice method of making a Windows program. New ways to better build Windows Applications were constantly being invented and iterated upon.
However – Microsoft wasn’t satisfied with WinForms as is. So, they followed WinForms with the much more competent WPF (Windows Presentation Foundation). A stronger platform for incorporating Graphic capabilities with systems, facilitate competent development through nesting and separation of application data and functionality, a fully thought out markup language for the front end, and strong cross compatibility across everything .NET
WPF was widely praised, and slowly adopted. Yes – you had to relearn everything you were doing AND even though there was much more to pay attention to for you to get the same result as a basic winforms program, you could “technically” go further with much cleaner team friendly code. Unfortunately all the basic components that came in the Visual Studio tool box for WPF were limited, but, on the bright side – they were easy to extend or improve. So, if you were willing to completely write a data-grid from scratch and add all the sorting and paging functionality yourself --- or --- if you dropped $500 on a paid component, you could arguably create the same WinForms program with more time and money required! Needless to say, the use case for me to replace my old WinForms programs never presented itself.
As any programmer would easily say WPF is a great technology, there was still plenty hesitation for developers to adopt it as the resources behind it were slow to come to fruition.
Simultaneously while WPF started rolling into prevalence, so was another technology: JQuery.
JQuery pushed the urgency for “standards” as the world was salivating over the thought of a website that works like an application on any device that is connected to the internet. This was Web 2.0, and this was in demand. On the 2.0 wave, other technologies like “Bootstrap” and “Skel” started filling in the gaps ensuring websites were easy to develop for small and big screens alike. Additional technologies soon followed like Node.JS turning those web applications into real, offline, applications for any operating system of choosing.
As it stands, I don’t need any fancy tools to make an application: create an html file in notepad, bring in some jQuery, then add a bit of bootstrap – include node.js – and voila a competent application that is mobile, tablet, web, offline ready and good to go for whatever operating system I want.
Microsoft’s response was yet another iteration of .NET WPF, called “Universal Apps”
Conceptually, Universal Apps is brilliant. Much of the technology that comes out of that massive company usually is. The goal of Universal Windows Applications was to allow for the same code to cross the whole family of Windows products – XBOX, PC, Tablet, Phone, VR, iot, ect. This concept is way overdue and it has potential that is through the roof. It even almost makes sense to be the platform of choice for anyone who wants to make an application in 2017.
But Brilliant does not necessarily mean practical:
The downfalls of WPF I mentioned earlier are only amplified in Universal Apps. Less standard components, less resources all around, and a version of visual studio that eats up the resources of my spec’d out machine – seriously why does my box seem like it’s going to die just to compile a hello world application!?. On top of that, WPF’s touted capability to expose the systems graphics architecture is nearly completely eliminated as the components you have to use are intentionally minimal to best adopt the variance in screen sizes and device types.
Microsoft may also stress that WPF markup works similar and more intelligently than HTML5 – but – even so, it doesn’t compile into HTML5 and cannot be interpreted by web browsers. More importantly, even though they created a great system to do MVVM development, the failure to break apart style from the XAML source is something of an oversight hard to excuse.
This failure to have a CSS equivalent is an important factor in making an application that is hard to ignore. The sheer simplicity by dividing Style from an application allows a developer the freedom to develop a web application separately from the way it looks. CSS (Cascading Style Sheets) gives HTML5 an easy solution to designing an application for a big range of screen sizes without having to tinker with the object model or code behind it.
Finally – Universal Apps with all it’s intention to go across the Windows family of devices, leaves you in complete anguish – as they appear to be distancing themselves away from making Windows 10 phones ever since they acquired Nokia.
I won’t even mention deployment. That… that is another rant in of itself.
TLDR: Microsoft is pushing Universal Applications without providing a compelling use case for making Universal Applications.
This rant of course will probably go unheard, and, I only express my opinions knowing full well that in the upcoming months I will be forced to write at least a couple of fairly large applications for windows.
I completely expect Microsoft to respond to the concerns I have expressed above as the industry itself appears to be at the same crossroads I am. Knowing that the 2017 Build Conference is just weeks away I expect Microsoft to make some big announcements that cater to developers, I suspect one of the following four scenarios may play out:
- Windows Universal Platform and Windows Phone 10 will be “supported” but have no roadmap meaning that they are just going to let it die in favour of other technologies.
- Windows Phone 10 plans become unveiled, a surface phone, or some other mobile resurrection strategy thus revalidating Windows Universal Platform
- Windows Universal Platform will be made the default platform for developing Xamerin related applications for iPhone and Android.
- Progressive Web Apps as an alternative platform for developing apps – allowing people to use Web Technologies to make native windows applications – similar to Google’s own Progressive Web Apps for Android and Chrome OS.
As a Windows Phone fan, the first option doesn’t surprise me, and it would make complete sense if they adopt the last option of Progressive Web Apps. However – anything is possible, and for a company who develops in the open with more open source technology than ever, and insider developments available for the public – they are surprisingly unpredictable in what direction they aim to go into.
I just hope they are thorough and accommodating, because I sincerely would like to get back to making money as easily as possible with the coolest tech as possible
Until May 10th, 2017,