2 things Microsoft failed to do in the last 15 years are:

1) They abandoned their mobile phone, tablet, and wearable strategy. So, today if you develop a native Windows application, it will only work on desktops and laptops. That is it. It is not attractive for a developer to learn a whole new UI framework just to target a single form factor. And I don't know if there is any solution for this at this point, they shouldn't have completely abandoned those markets.

2) They did not back 1 UI framework for a long time (I mean 10 years+), instead they did significant changes to their UI framework strategy every 3-4 years. It takes a huge time for developers to trust, learn and develop complex and polished apps in a UI framework. Also it takes a long time for a UI framework to become mature. If you change your UI strategy every few years, you will never have complex and polished apps written with it.

To be honest I am not sure if Windows will ever be able to recover in the long term and keep its market share. The only reason it seems to be alive is because enterprise runs on Windows and it is hard to change that.

I feel like an Apple + Google dominance will be more likely in the long term for desktop operating systems. I am not sure if Google will be able to avoid the first mistake I wrote above but they are working on bringing Android to desktop. It is a good idea but it requires at least 10 years of supporting and polishing it despite not getting much traction. But if Google persists, we might be all using MacOS and Android on desktop 20 years from now.

Yeah, a striking difference between windows and linux at this point is that the linux UI frameworks are hyper stable. If I want to make a linux desktop app, I'll choose QT or GTK. Heck, if I want to make a windows and macOS app, I'll probably choose QT or GTK.

What do I chose with Windows? Who knows. It literally changes every time I look into it.

That's just insane.

It's gotten so bad that probably the right way to do a modern windows desktop app is react native. At least you could predict that it will stay up to date with the ever shifting decisions at MS to create and abandon UI frameworks.

Windows Forms is the answer you seek. It still receives updates to this day. I've been writing and shipping Windows Forms apps for 25 years. High DPI, dark mode, Edge web views, Blazor integration, we've got it all. Users don't even need to install .NET these days with self-contained deployment.

I will boldly claim Windows Forms is more stable than Gtk and Qt. Don't let random teams at Microsoft confuse you because they released yet another unrelated framework that you don't have to use. They are engineer-sirens trying to lure you from the true path. Let them pursue their promotions in peace while we rely on a stable workhorse.

On Windows, I would chose WinForms. Even today, even over WPF. It's as stable as QT and GTK, still supported, and has a large community of contributors and 3rd party vendors.

GTK 2, GTK 3, or GTK 4?

Various versions of GTK which introduced breaks but didn't really change the core philosophy of how you build a GTK app. IMO, this is the preferable way to evolve an ecosystem.

The problem microsoft has is instead of making "Win32, but with these extentions or these APIs removed", heck even as a separate "framework". What they did instead was "You know what's hot right now? XML. So let's make an XML based UI framework. Actually, it's javascript and css, so let's do that. Actually, people really like electron so let's do that."

That is to say, it is possible and I dare say easy to migrate an application from GTK 3 to GTK 4. It's basically impossible to migrate a WPF app to UWP. You have to rewrite the whole thing.

win32 seems to be stable, albeit a bit dated. It's good enough for small things (at least good enough for m$ to use)

All the various windows UI frameworks are stable, but not supported and not receiving new updates.

That's the problem.

And what makes matters worse is because of all the shifts, the documentation throughout MS is in just varying states of outdated. For example, this document which recommends using UWP [1] to handle high dpi problems. But of course, UWP (which was the right way to do gui in Win 10) is now defunct for win ui.

[1] https://learn.microsoft.com/en-us/windows/win32/hidpi/high-d...

WPF is also stable. Microsoft's UI strategy is similar to keeping all of Motif, GTK2, Qt5 alive while engineering new stuff into Qt6 without deprecating anything.

Btw Linux UI is not by any measure stable. It is the furthest thing from stable.

Strong agree!

They had great devices before iOS/Android and then again after. That Lumia phone was awesome. They had one of the best cameras. Their live tiles they had on the phone & desktop OS were really good. Even Windows 8 had a cool CRM app in its infancy that tried to link all your social media & email accounts together.

They killed all of that even with multiple chances to win people over. It seemed they wanted to win the new markets in less than a year.

For as much flack as Google gets for short lived awesome products, Microsoft is right up there. Which is why when they've announced new things like Blazor, MAUI, etc., no one expects them to live long enough to trust their apps on.

I also strongly question their enterprise MOAT when most kids are growing up on Apple & Google devices the past decade. Microsoft seems to lack long term strategy.

> They abandoned their mobile phone, tablet, and wearable strategy

They were way too late to make a dent. Ballmer made the mistake when the iPhone came out to not get their ass in gear to compete. Microsoft's first potential real competitor to the iPhone came with Windows Phone 7 at the very end of 2010. The iPhone was announced in January 2007 and they didn't have anything to compete until almost 4 years later. I'm not sure how they could have recovered from that by the time they gave up on Windows Phone/Mobile in 2017. Anyone who worked in mobile sales at that time knew most people who did buy a Windows Phone ended up returning it when they realized none of their apps were there. They could have had apps if they recognized the iPhone's threat earlier and reacted appropriately.

Also worth mentioning that in their time competing for mobile they did a fairly hard reset of the platform 2 more times for Windows Phone 8 and Windows 10 Mobile. Go find what developers who tried to keep up have to say

https://news.ycombinator.com/item?id=15432720#15434572

Yeah, especially funny since they had the early lead with their iPaq PDAs and Windows CE. Which they completely squandered by ignoring them.

Then they acquired Nokia that already had an almost-ready ecosystem of apps, with good snappy UI. And then spent two years building a (shitty) framework on top of the long-neglected Windows CE kernel. Which was known from the start to be a stopgap solution before they port the full WinNT kernel.

totally.

MS ended up where it was at because there was basically NO upgrade path between the few different GUI frameworks they had. They broke the whole thing in 2002 when they decided .NET was the way.

You had to basically retool your whole GUI for whatever they were pushing at the time. Then they basically abandoned win32 GUI items and put them in mothballs. Then change their minds every other year.

No sane person is going to pick that model of building an application. So the applications kinda stagnated at whatever GUI level they came into being with. No one wanted to touch it. If I am doing that why am I sticking with windows? I can get the same terrible effect on the web/mobile and have a better reach.

Even their flagship application windows is all over the place. If you click on the right thing you can get GUI's that date back to windows95. Or maybe you might get a whitespaced out latest design. It is all over the place. It has been 10 years at this point. They should have that dialed in years ago.

I do not think Google will be able to pay attention long enough to have a stable GUI. Apple maybe. As for MS you can see it from the outside there are several different competing groups all failing at it.

MS needs another 'service pack 2' moment. Where they focus on cleaning up the mess they have. Clean up the GUI. Fix the speed items. Fixup the out of the box experience (should not take 4gig of used memory just to start up). Clean up the mountain of weird bug quirks.

Didn't Google give up on chromeOS? For all their faults, at least Microsoft has a desktop os

Not really. They are merging it with Android. Or in other words, they're making Android into a full-blown desktop OS.