Microsoft Confirms UWP Is Not the Future of Windows Apps
thurrott.com
thurrott.com
I have experience across a heap of stacks... Cocoa, Cocoa Touch, Android, Win32/WinForms/WPF, Web, Xamarin Forms etc... I love UWP. It was pretty ordinary in the first few releases but it has matured well, has great documentation and the UI framework is developed in the open on GitHub.
I am by no means suggesting you could write something like Autocad or Photoshop in UWP; perhaps you could with a rethink of the UI. But UWP is an excellent choice for probably 70-90% of desktop applications, including enterprise LOB that are just forms over data or integrating with an online service of some kind.
If you're drawing your own conclusions based on what you read from others writing (who are likely doing the same) - actually try the framework, you might be pleasantly surprised.
Finally, I think Thurrott has lost the plot. He has been waging this war against UWP for many years now - to the point of a crusade - I just ignore any statement he makes on this.
It it? I've never developed windows GUI apps, so can't comment on a technical level. But from a consumer perspective all the UWP apps I've tried, including those shipped by Microsoft with Windows 10, are awful. I think Windows 10 Mail could be the worst GUI application ever written. I used Windows 10 for most of the last year, and it got to the point where the Windows Store became my primary filter for apps - ie. if an app was available there, I'd cross it off my list of candidates.
What makes you say this? I'm a heavy desktop user and find Windows 10 Mail to be the fastest and simplest way to interact with mail. It works perfectly with attachments, and calendar invitations, etc
Enough people have used UWP apps and been repulsed enough by the experience to not want to inflict the same upon the users of apps they themselves write.
But UWP is an excellent choice for probably 70-90% of desktop applications
No. It's a massive failure even for something as simple as the Windows calculator, which is one of the apps that MS rewrote so you can actually compare the Win32 and UWP versions.
Maybe I'm missing something, but the feeling I got regarding UWP is that it is an effort to unify the UX across all platforms and devices by aiming to lowest common denominator of all platforms. It meant that simple and useful utility like calc became a visually bloated app with sluggish UX. It meant every app takes double the screen size and offers half the functionality. In short, it made useful computer programs into passable mobile apps.
Isn't it obvious that mobile apps UI/UX is poor and is only acceptable as a compromise due to form factor limitations?
Did the strategy folks at Microsoft thought sacrificing the desktop will get them the mobile?
Isn't this the direction that MacOS is going too? I hear complaints of "iOS apps" becoming default on macOS too.
That’s an artifact of dealing with the real estate challenges on the phone and the side effect of this era where apps need to hustle users for marginal dollars first and do something useful second. That said, they failed on mobile, and the tablets are more like laptops than iPads. And the market likes that!
I think the younger developers are doing to flip to Chromebooks and Windows, as the Unix tool sets are there, and both vendors take their vision of PC seriously.
Microsoft took mobile-first too literally and applied it to their entire OS
Server 2012.
The lack of good keyboard accessibility is particularly frustrating, because the ribbon paradigm and even the menu accelerators in old-school Win32 apps both had outstanding, highly discoverable keyboard control.
That's an excellent example. A calculator does not need a loading screen, nor should it take over a second to start on any remotely modern machine. Fortunately MS have released the source, so you can see for yourself just how much bloat there is:
https://github.com/Microsoft/calculator
To compare, you can also see the source of the old "classic" calculator from Windows 2000 here:
https://github.com/pustladi/Windows-2000/tree/661d000d50637e...
That said, Windows CE was an attempt "to unify the UX", being basically a subset of Win32, and that didn't cause anywhere near the same level of disgust, so I'd attribute the bloat more to the cruft of "modern practices" than anything else.
UWP as an API is very good. UWP as a user interface wasn't well received.
There was a talk at the recent Build conference about it, which is now available on YouTube if you want to find it and judge for yourself.
I don't know if the newer MSVC compilers can be configured to do it, but it's definitely possible to create a single self-contained binary for a GUI app that will run on everything Win95 and newer, and which uses a fraction of the resources of newer UI frameworks. A lot of developers these days are used to even simple apps taking over 1MB of disk, and when shown a native Win32 one will be astonished at how small and fast it is; what they often don't realise is that all apps used to be like that.
Win32 is the past, the present, and the future.
The problem is there hasn't really been a present for anyone starting new desktop projects, at least with common corporate restrictions. Can't build on win32 because that's not the future, can't build on WPF because that's not the future, can't build on UWP because that doesn't work on windows 7, can't build on qt because we're an MS shop and don't acknowledge the existence of third parties. For several years it's just been "fuck it, we'll make a web app".
> A lot of developers these days are used to even simple apps taking over 1MB of disk, and when shown a native Win32 one will be astonished at how small and fast it is;
This is the most promising part of the librem phone for me, a couple dozen lines of C and you have a an app. On android you can't even get to hello world without downloading a bloated IDE, a huge SDK and a dozen xml files, they don't even provide instructions on how to build outside of an IDE.
So even if they aren't really pushing the UWP "brand" anymore, if you have a UWP app you are already using all of the "new" stuff.
> And the way we know that’s true is that Win32, WPF, and WinForms have all been “elevated to full status”—Gallo’s words—in Windows 10 all these years later.
It sounds like they're promoting Win32 as a long term option. I wouldn't expect them to say "UWP is dead", MS has a history of playing "it's not dead it's just resting" with UI frameworks, WPF was one of those.
I'm also curios what these changes mean for compatability? Anything that can't be used on windows 7+ will be dead on arrival. If they could just provide a "This is how you build windows apps for 7,8,10+ that we won't deprecate in future" I'd be happy.
The truth as of now is that WinUI (the UI stack from UWP) is the only one of these frameworks actually getting significant new feature development. The main reason for this is that unlike winforms or WPF, it doesn't have a dependency on .NET, so it can be used by projects like Windows and Office that for the most part never adopted .NET and managed code.
Like if you watch this session from the conference -> https://www.youtube.com/watch?v=hKMzFjGfoy0 , it's billed as a talk on the Windows presentation platform as a whole, but they spend basically all their time talking about WinUI. The new React Native implementation for Windows is also being built on top of WinUI.
Now it feels like it is kind of too late, unfortunately.
The last few years sometimes for dynamic/customized/personalized corner case uis have been using fast AXML provided by codejock label or using css+html by terra informatica HTMLayOut/Sciter
Microsoft lost a lots of local enterprise lob custom apps with the always evolving dotnet platform and heavy resource requirements, lighter alternatives won their market
I guess these three.
If I had to do a windows app I would seriously consider electron. Which is very sad...
I expect that in a few years electron will be a very good experience on Windows.
To distribute software the normal way you need to at least be able to register a domain name and run a web site and it seems the bottom 20% of app developers can't do that.
Anyone who has used Office 365 in their browser can see that for many desktop things, you no longer need a framework. For everything else, it’s probably a custom library on top of DirectX anyway.
And I’m not saying I agree with this, but MSFT opened that door and others will follow whether they want them to or not.
Now, I don't use windows on a regular basis, but clearly something was wrong with the UWP UX design.
But we don't need to replace it with a web based version of everything. Imagine electron based apps for your calculator....they'll be very very resource heavy.
If you build to the new release, there's a good chance it's not going to work well on the next one though. This is part of why Windows Mobile failed. There weren't that many apps to begin with, but you needed to build differently for WP7, WP8, and WM10 if you wanted things to really work. And WM10 never got any users.
They really need to just figure out how you make a GUI app on windows.
I want to make a GUI app in the same framework the Office team uses, if its good enough for them then good enough for me, see "eating your own dog food".
Despite the appearance of being separate processes because of separate windows, excel is basically a detached MDI interface where each sheet gets its own window, but same process. I think the other Office products are the same (but I'm not sure). I dont know how many hours I wasted at a previous employer trying to figure out what was wrong, but finally gave up after many frustrating hours.
Bit of an aside here, but what for example? I'm using Linux these days as the least-worst option, but I wouldn't have claimed app quality as one of its advantages. It has the best terminals (matched perhaps by iTerm on mac), and most of the important cross-platform apps are perfectly fine (VS Code, IntelliJ, Firefox, Chrome etc). Could you list some of the linux-specific apps you consider great?
There are obviously reasons to use Linux (I do), I just don't think unique (end-user, GUI) app availability is amongst them.
What it doesn't seem to have is any linux-specific apps compelling enough to drive one to use it. This used to be one of OS X's big strengths, diminishing in recent years I think.
WinUI is the UI stack from UWP, which is being split into its own open source package and made available for use by Win32 apps as well.
I respect JavaScript, but what I would add is this: We can not stop on JavaScript. JS is cool, brought dynamic new features that helped to reshape the other languages, but we need to also allow the other languages to run on the Web, since they got isolated when the Web expanded.
So if this new XAML initiative runs on the Web, it would be awesome!
Before I make a long comment, please spend a few minutes to take a look at this video and make your own conclusion: https://youtu.be/GrKA4D_8ngY?t=382
I have done native development for UWP, iOS, Android. UWP delivers the most consistent API, advanced tooling, and productive devrloper experience by far. This is part of why we picked UWP as the abstraction API for Uno.
That said, I believe that modern web development frameworks offer an even better developer experience, thanks to projects like TypeScript and React. I can't comment about Flutter yet.