When everything was simple…
The first day, Microsoft created UWP, it was great and an easy thing to understand. Alleluia.
As a user, if you were able to download the application from the Store and not compatible with Windows 8.1 -> it was an UWP application.
As a developer, if you were able (but not mandatory) to target other Windows platforms (Windows 10 mobile, XBox, Surface Hub, Hololens), if the window of your application was based on CoreWindow or if your application supports tombstoning/hibernation, it was an UWP application.
…then everything became complicated
Then the second day, Microsoft created bridges, starting with Islandwood and the short-lived Astoria, then Desktop Bridge.
Bridges connect people and make communication easier… but only in the real world. In the case of UWP, they made communication between users/developers/journalists much more difficult and confused everyone.
Although “UWP” is a technical term, journalists and users have made it a trademark/brand and used it for years to talk about these new and modern applications. But here’s the big problem: Desktop Bridge had absolutely nothing to do with the definition used by users.
From mid-2016, Microsoft changed the definition of the popular and beloved term UWP. The U from UWP was now totally ignored, an application only able to run on Desktop without any possibility of running on other Windows platforms became Universal, the opposite of the original definition.
3 years later, a majority of users and developers are still confused, even MSDN still uses UWP to describe modern XAML/WinJS applications.
If Full-UWP applications are electric cars and win32 applications are gasoline cars, Desktop Bridge applications are in this case a Toyota Prius, it is still mainly a gasoline car but claiming to be electric because of a small dynamo making it slightly better.
What should I put on my résumé? UWP developer? What does that mean? Can I also write that if I code only Desktop Bridge apps?
As I mentioned before, communication is key, and the “new” UWP definition made communications complicated.
If Desktop Bridge is an UWP app, how should we call applications using C#/XAML ? Full UWP? Pure UWP? Real UWP? No one knows. How can a journalist/user/Best Buy salesman or even Microsoft explain to someone else that this new device/xbox/surface hub/hololens can only run “modern apps”? They can’t use the word “UWP” because it also includes Desktop Bridge, they can’t use Store applications because of Desktop Bridge again, there is really no way to easily explain this concept.
Although there’s no doubt or ambiguity about what a WPF application, WinForm application, MFC application, Electron application or React Native application is, we still don’t know how to call these UWP applications using C#/XAML and able to run on all Windows devices, which is regrettable.
Marketing: This amazing new device supports UWP apps!
Journalist : Great, so I can install iTunes on it!
Journalist: But you told me it supports UWP apps!
Marketing: Yes, but not those ones
Is UWP an UI technology?
From the very beginning, UWP wasn’t restricted to a single UI technology, it was quite possible to create a full applications without XAML, but using HTML and WinJS.
Not only modern XAML (WinUI) is no more limited to UWP apps, but more ways to develop a real pure UWP application (meaning with CoreWindow) without using “modern XAML” have been added: React Native, Xamarin Form, Unity…
Is UWP a Store application?
No, else it will be called “Store application”.
UWP apps can be distributed out of the Store, updated via App Installer.
What about apps for Windows IOT in this case? IOT doesn’t have a Store, but only “full UWP” apps can run on it.
Is UWP an application you can deploy using MSIX?
No, because MSIX isn’t limited to UWP application. Not only you can deploy traditional Win32 applications with it, but it’s also compatible with Windows 7, 8, 8.1!
So what is UWP in 2019?
I won’t and can’t give an answer, only my personal point of view.
Although I understand why Microsoft wanted to include Desktop Bridge in the definition of UWP in 2016, it’s also important to recognize that things have changed since then:
- .Net 5 merging all the .Net frameworks
- WinUI allowing you to build a win32 non-sandboxed app using modern XAML instead of WinForm/WPF.
- XAML Island allowing you to add modern XAML controls to your WPF/WinForm application, even without Desktop Bridge.
- MSIX allowing you to select the sandbox you want to use for your traditional app: none, equivalent of Desktop Bridge, equivalent of Pure UWP…
- More and more WinRT apis are accessible to non-sandboxed apps.
- ReactNative apps are UWP on Windows.
If we use the same logic than in 2016 (Desktop Bridge is a UWP because they have some common points: access to WinRT API, Store and a kind of sandbox), we must also need to include many .Net 5 apps, all applications using XAML Island, all traditional applications using MSIX, etc… A Desktop XAML application (.Net 5/Win32/modern XAML) is much closer to pure UWP applications than a Desktop Bridge application is… Let’s be honest, it would not make sense anymore.
The same way we changed the definition in 2016, I would suggest to change it again, but this time, not include Desktop Bridge and go back to the roots:
UWP is an app model: an app using CoreWindow, supporting Suspend state and able to run on more than Desktop. This app model can only be used with MSIX and mainly with WinUI, but neither of them make an app “UWP”, only the app model does.
Let me know what you think about these simple definition via Twitter: @rudyhuyn
Bonus: Is UWP Dead?
Let’s be clear about that. No, UWP is far from dead, it’s one of the keystone of the future for Windows. Let’s remind that a large majority of first party apps and Windows components (Start Menu, Action Center, Settings…) are UWP. Let’s also remind that Microsoft invests a lot in this technology: Ink, Windows ML, ONNX…
These journalists/bloggers writing that UWP are dead, are also the same writing articles about how amazing is Surface Hub 2, how they are excited for the future of Hololens, how Xbox Two will be a revolution…
I would like to ask them a simple question: what technology will we use to create applications on these devices? If you dream of a folding tablet, what types of applications do you see on it in your dream? Probably not win32 applications.
To be clear: UWP is the only technology which, when targeted by a developer, ensures an app can run natively on any windows 10 (including variants: Xbox OS, Windows Lite, Windows Core..) device and able to fully use the capabilities of this one.