What does it mean to be a Universal Windows 10 app?
Now that we are evidently heading into a storm of new and updated apps for Windows 10, there seem to be a lot of misunderstandings from the casual reader about Microsoft's Universal Windows Platform (UWP).
A lot of this comes down to details of app development that non-developers do not understand, which is fine. It's akin to an astrophysicist explaining a black hole e.g. what Stephen Hawking does in his well-read books. While he "dumbs down" what a black hole can and cannot do based on mathematical theory, the real nitty gritty details are left for those with Ph.Ds. In other words, don't expect to win an argument with him over how information could escape, but why light cannot.
One common misunderstanding over so-called universal apps revolves around why we see some apps on mobile but not PC (think Pandora, until yesterday) or in reverse like Twitter's new Windows 10 app. It can be confusing and that's why we'll break it down for you to better understand.
What is UWP?
The Universal Windows Platform (UWP) is a combination of the Windows 10 OS and Windows 10 SDK. On one level there is a shared kernel, code base and APIs that span everything including PCs, tablets, phones, Xbox One, Internet of Things (IoT), and HoloLens.
This is where the 'code once, release everywhere' mantra comes from and it is accurate in a broad sense. However, there are a few caveats, including:
- Developers choose where to release an app to. Just because it's UWP does not mean devs are forced to put their app on phone or Xbox if they do not want it there
- Developers are very much encouraged to modify code to ensure a more custom experience for each platform
The fact of the matter is while your PC and phone may share the same OS the displays and hardware are very different.
Take a PC. The majority of the world's PCs today are non-touch. If you make a phone app that ran on PC and it relied heavily on touch elements using a mouse and keyboard may not be ideal. Things like jump lists and title bars suddenly matter on the PC, but not on the phone. In reverse, a phone app has the status bar to account for, plus vibration, orientation sensors, and more.
Xbox, which has neither mouse, keyboard or a touchscreen, requires a whole different way of thinking about user interaction. Xbox apps are much simpler (think point and click) instead of having a menu-heavy format with an AppBar.
Regarding hardware, phones have a back button whereas PCs do not. Developers need to define and refine how that interaction occurs. Windows Phones have limited memory and in Windows 10 only seven apps can run in the background. Sometimes these apps are terminated based on memory constraints, so you have to handle that behavior too.
There is also the UI and scaling, which are different between phone and PC. While a UWP could just squish onto the phone and expand on PC developers can (and should) take the time to adjust elements for each experience so that it looks and feels right.
These choices assume that the developer cares about the experience, but it is safe to guess that they do care.
Finally, some developers may not want their app on PC and phone – just one or the other. Take what are considered 'mobile only' apps like Snapchat, Untappd, Instagram, camera apps like VSCO and even banking apps. The old way of thinking is either people won't use these apps on a desktop PC, or they can just use a browser. For many, it is not clear what the advantage would be to a Windows app in those environments. Alternatively, you could release a high-performance game for Windows 10 that won't scale properly to a mobile phone (or runs into hardware limitations).
For all of these reasons, Microsoft does not force a developer to make apps for all of their platforms. What they did do is make it very easy for developers to write once and – with some modifications – put the app anywhere at their discretion.
Microsoft's UWP is a step into a new era for developers. The core of the code can stretch to the PC on your lap to the phone in your hand and eventually to the Xbox in your living room.
However, it is still at the developer's will where and when to release. Developers can very easily spend all their time on the PC version of a Windows 10 app, release it, get feedback and when they feel ready update it with the phone experience.
When you are a company as big as Microsoft, working on multiple apps for the OS e.g. MSN News, Weather, Xbox, etc., you likely have one team doing the core coding but have different timelines for features on each hardware platform. One example is how game streaming is in the Windows 10 app, but not for mobile – that needs to be coded and handled differently. Or for Messaging where SMS and MMS is important for phones, but not currently for PCs. These aren't trivial programming matters.
This discrepancy is why sometimes we see different version numbers in the Store for the "same" app.
While it would be nice if programming were literally 'one button' to send everywhere, at least, today this is just not possible. However, as we move to a mobile world with Surface-like devices, the hardware discrepancies between phone and PC will fade. When that happens Windows 10 will be right there to leverage it.
Just remember, a universal app does not mean the app is automatically everywhere at once or that it should be. It is up to the developer to make that happen, and they operate on their own internal development schedules.
Give them feedback, tell them what you want and let's watch UWP grow in the coming weeks, months and years on Windows 10. It is exciting times, but we are still in the early days so let developers have their moment to familiarize themselves with this brave new world.