What it is: Universal Apps is Microsoft’s promise to allow software to run on multiple Windows devices from smartphones and tablets to desktop and laptop PCs.
In the old days, alchemists searched for how to turn lead into gold and an elixir that would let you live forever. Needless to say, their goals may have been admirable, but turning their wild dreams into practical use proved far more difficult.
That’s the same problem facing the idea of universal apps. In Microsoft’s latest incarnation, not only do they want developers to be able to write one program that can run equally well on any size Windows device, but they also want to allow Android and iOS developers to port their Java/C++/Objective-C code to run on Windows as well. The dream is to make Windows the most attractive and versatile software platform in the world.
Of course, achieving that dream remains a sticky technical challenge. Assume a developer creates a Windows program specifically for desktop/laptop PCs. With just minor tweaking of the user interface, developers can also get their programs running as smartphone and tablet apps. The idea is that by writing a program once, you can run it on multiple devices running Windows 10.
Now here’s the technical reality. Ignoring the user interfaces differences between desktop programs and smartphone apps, if you create a program designed for desktop/laptop use, you’ll likely put more features in that program than if you originally designed it as a smartphone app. Likewise if you originally create a smartphone app, slapping a desktop/laptop PC user interface on that same program will still leave it with the limited functionality of a smartphone app.
In other words, your program will always be optimized for one type of device (smartphone/tablet or desktop/laptop) and not optimized for other types of devices. That’s just the nature of software.
Porting a mobile app to a desktop will leave it with limited functionality compared to similar programs specifically designed for a desktop/laptop. Porting a desktop program to a mobile device means an overwhelming number of features that make it harder to use than similar smartphone/tablet apps.
While universal apps sounds appealing, it ignores the harsh reality that software works best when optimized for the device that it’s running on. Run a supercomputer program on a smartphone and it will likely prove frustrating despite any user interfaces changes. Likewise, running a smartphone app on a supercomputer will feel weak and limited in comparison to other supercomputer programs. This occurs regardless of how Microsoft solves the technical problems of making software run seamlessly on different devices that have different processors and other hardware differences.
Focusing on the ability to port Android and iOS apps to Windows sounds good in theory, but it also removes any incentive for developers to write native Windows 10 apps for smartphones and tablets. Why bother when you can just write an Android or iOS app, sell it on those respective markets, and then port your code to run on Windows as well? The ability to run Android/iOS code on Windows insures that developers will simply target Android and iOS first and Windows 10 last.
So the idea of universal apps runs into two huge obstacles. One is the problem that software that runs on different devices won’t be optimized for other devices. Two is the problem that developers have no incentive to create native Windows mobile apps when they can just focus on Android and iOS instead.
Universal apps sounds good like searching for the Fountain of Youth or the elixir of immortality. In reality, universal apps needs to overcome both technical obstacles and psychological obstacles that remove the incentive for anyone to develop native Windows mobile apps, not to mention tweaking their programs to run on devices they weren’t designed to run on.
Universal apps is a great idea like peace in the Middle East or the elimination of corruption in world governments. The reality is that universal apps are a dream that can’t help but fall short of its lofty goals. To pin your hopes on the success of universal apps is like pinning your hopes that you’ll suddenly win the lottery jackpot three times in a row. As much as you may want it, it’s not going to happen, and universal apps are no different.