Top
Best
New

Posted by naves 1 day ago

Microsoft hasn't had a coherent GUI strategy since Petzold(www.jsnover.com)
See also https://x.com/stevesi/status/2036921223150440542 (https://xcancel.com/stevesi/status/2036921223150440542)
740 points | 526 commentspage 2
PaulHoule 1 day ago|
The churn would have been much worse if Microsoft was rolling out successful GUI framework after GUI framework. As it is you can still write a Win32 app if that pleases you, or still write .NET (and damn that runtime download!)

Microsoft has bought into ‘make a web app’ since 1988, they introduced AJAX, they got flexbox and grid into CSS and numerous HTML 5 features to support application UIs. They ‘frikin bought npm!. I use Windows every day but I almost exclusively develop cross-platform systems based on the WWW, Java, Python, etc. Whenever I have developed with .NET it has been for a cross-platform front-end like Silverlight or Unity/itch.io.

I can’t say I have a desire to make a native Windows GUI app when I could make a web app: like if it worth doing from my computer isn’t it worth doing it on my iPad from anywhere with Tailscale? For all the complaints about modern JavaScript it gives you the pieces to make a very pleasant world in terms of DX and UX and you certainly don’t need to ship an Electron runtime for many applications.

judah 21 hours ago||
Your post is touching on a key question: why write a Windows-specific app?

I'm a developer who has built and published several apps. I want the biggest possible audience for those apps. Why would I limit those apps to Windows? (Or even to any single platform/OS?)

Web apps work everywhere. The web has grown increasingly powerful and capable. Why would I invest in a technology that can only run on a single OS? Doesn't make sense.

Just build for the web. You can package web apps for all the major app stores using PWABuilder[0], no Electron needed. Just fast, lightweight apps distributed by app stores and accessible from the web.

[0]: https://pwabuilder.com. Disclaimer: I work on this

kvuj 19 hours ago|||
> Web apps work everywhere. The web has grown increasingly powerful and capable. Why would I invest in a technology that can only run on a single OS? Doesn't make sense.

For me, I see these following advantages:

- Performance; Native & compiled is king.

- Ram usage; Kilobytes vs Mega(giga?)bytes.

- UI control which integrates with the rest of the OS (and updates when the underlying OS tweaks the UI)

From a business standpoint, I get your point that these points don't really matter. Users have shown to not care in the slightest at the bloat in programs.

However for code I write in my spare time, I would much rather write my native Linux program in compiled code than to ship a subpar experience to the few who will interact with it.

manytimesaway 17 hours ago||||
> Web apps work everywhere. The web has grown increasingly powerful and capable. Why would I invest in a technology that can only run on a single OS? Doesn't make sense.

You mean the hypertext platform that has been shoehorned into Java's paradigm, suffering from the same boof-o-rama as Windows, and whose lowest common denominator to support must be Safari for iOS?

PaulHoule 7 hours ago|||
Safari isn't that bad for most applications.

Sure it is a hassle to get notifications working, but my take on that for years as a desktop user was "I need another source of spam about as much as I need to get raped". For years I had bottom of the line Android Tracfones and wondered "how is it people get so excited about apps?" because they just didn't work but once I got an iPhone I started to appreciate that the McDonald's app would send me a notification when my food was ready. Recently it was pointed out to me that the application behind these cards

https://mastodon.social/@UP8/116086491667959840

really would benefit from notifications ("your photos are ready!") and I am looking at the hurdles I can jump through and it looks possible but weird. Like why would I want people to install my app on the homescreen where it will get lost on page after page of twisty little app icons that all look alike?

Then there is that PWA boondoggle, there is another app in that system that I can use to register those cards and it is a clear case where I might want to do it outside of cell coverage (say I was in the woods) save a form submission and upload when I get back in range.

What can I say? That service worker system is insane, something like Kubernetes that only Google could subject us to. I mean, Google could have worked out the math for synchronizing a local database to a remote database, by then the Lotus Notes patents were mostly expired, we could have gotten something good. Or Google could have added an API to control the behavior of the browser cache. Instead we got something half baked and barely reliable and then Apple went out and made something a little bit worse. Had it been a good standard to begin with the outcome could have been entirely different.

bad_haircut72 16 hours ago|||
still works everywhere? the snark doesnt get you firther than that
manytimesaway 15 hours ago||
Works everywhere on modern hardware only.
wiseowise 11 hours ago|||
Majority of software doesn’t need to care about that.
deafpolygon 12 hours ago|||
Every time I open a browser on my aging Linux computer (which is running the latest Linux updates), I'm reminded of this...
jemmyw 21 hours ago||||
I used to get hung up on this native vs web thing. But when it comes down to it, it's just one renderer or another unless you're actually drawing the controls yourself pixel by pixel. The sticking point is following the system style / theme. But all the popular desktop OSs seem to have deviated on this so much themselves I'm not sure how important this is.
simonask 11 hours ago|||
The inconvenient truth here is also that following the system theme is an anti-feature for most apps. On the desktop, you want your app window to be recognizable at a glance, meaning the primary color should be the brand color, etc.

I currently have open Chrome, Spotify, Discord, Aseprite, and Zed. All of them look completely different, and that's actively helpful for me, the user.

It's nice to follow the system's light/dark setting, and obviously the behavior of basic UI controls should be unsurprising, but beyond that there's no point in "consistency".

PaulHoule 7 hours ago||
This. So often features to use system colors can cause apps to be unreadable or just look like crap. The first time I get a bug report that people can't read something I will lock the colors the down, I just don't have time for that.

Who says the system theme is well designed at all? Back in the 1980s you could count on most text color combinations on a Commodore 64 or an IBM 3279 or a PC with a CGA working.

Today it is absolutely normal to type

   ls
on a Linux machine out of the box and if you are running X or Wayland some of the file names are dark blue on a black background and completely un-readable. To be fair, if you are logging into a Linux machine on Windows with ssh on CMD.EXE or most terminal software you get similarly poorly chosen colors. (To be fair, MacOS does do better!)

As a web developer it pisses me off because I am expected to follow

https://www.w3.org/WAI/standards-guidelines/wcag/

and regularly my management gets legalistic looking documents from customers complaining that we only have 6.5:1 contrast on something and you know what I do... I fix it. I wouldn't send anything to my tester that was unreadable and if I did I'd expect her to put in a ticket and I would... fix it. When MUI computes the coordinates wrong and something draws 20px right of where it should be... I fix it.

Whenever I've put similar tickets to the various parts of the Linux desktop mafia they close it as "won't fix" and often give me a helping of verbal abuse. Even Microsoft occasionally fixes something (even if half a decade late) and their people are polite.

trueno 19 hours ago||||
yea there's so many ways through this now. golang and wails is great, rust and tauri is great. both seem to not feel like the slug that is electron because they just use whatever os native web view your os has.

for the dedicated more native stuff dioxus is kinda cool if you don't want a web stack in the mix.

i'm enjoying golang and wails though paired with whatever front end i want, all apps i've made perform execellent on windows. bottom line = yeah i can't really think of a scenario where i personally would ever write an app for windows specifically.

i, like you, used to get hung up on native vs web framework. i'd encourage you to give it a go, possible you cede that mayhaps the native thing isn't as important as you thought.

skydhash 20 hours ago|||
The DOM is very ill-suited for most UI. Too complex and lots of missing features. It’s a whole bag of unneeded code and the resulting UI doesn’t fit anywhere.
jemmyw 16 hours ago|||
> The DOM is very ill-suited for most UI. Too complex and lots of missing features

Can you expand on this, because I'm not seeing it myself. The DOM, html+css is very flexible. It easily encompasses most UI. Most UI is some kind of data display, so lists, trees, tables, forms.

The need for JS might be what you're complaining about. I think we might be stuck with it as a UI control language forever.

skydhash 15 hours ago|||
The DOM(and CSS) is primarily built for documents and forms, even with the latest addition like Flexbox or Grid layouts. It is closer to typesetting tools like troff, latex, texinfo than any UI engines you can think of. And some that are not needed, like the difference between <i>, <a>, <span>, <strong>,...

Also with most GUI frameworks, there's some difference between widgets like label, button, menu, checkbox,... and containers that does layout management. And there are not a lot of elements in both sets. This is the reason why React Native has a very sparse components library. With simpler implementation, you have a simpler rendering path, and the developer have less elements to deal with.

Also some have ready-made implementation of really useful widgets, like tree, grids, tables, lists, and other dynamic things. You can find libraries for those on the web, but the web implementation of scrollable container is janky.

PaulHoule 3 hours ago||
The GUI system for the NeXT was based on the Display PostScript system which in turn was based for the PostScript system designed for rendering to printers. Quartz in MacOS X is a further evolution of that.

Inside HTML 5 you can find facilities for rendering documents and you can find facilities for rendering applications, including those forms. There is not a clear line between one and the other.

skydhash 3 hours ago||
PostScript was for rendering graphics to a printer with a good emphasis on texts. Most of HTML is about marking up and styling interactive documents. There’s no clear line between the two, but an API for applications UI has different goals than one for document typesetting (even interactive one).

HTML have a lot of tools for devex, but if you’re going for a good codebase and simple implementation for a desktop application, QT is way easier.

neutronicus 8 hours ago|||
I don't know about "most UI" but it's sure as shit ill-suited for CAD (what I work on).
PaulHoule 7 hours ago||
In which case you get canvas, WebXR, etc.
l72 7 hours ago|||
Why don't we have more great UI toolkits for the canvas?
pjmlp 15 hours ago||||
Because many of those features aren't Web, rather Chrome OS Application Platform, but apparently folks forgot everything about IE history lesson.
voidUpdate 13 hours ago||||
What happens when the user doesn't have internet access, or only has very slow internet? What if they're on a metered connection?
PaulHoule 6 hours ago||||
Seems to me the point of the web is: no app store bullshit.

On the web if I want to publish a web app... I publish the app. If Apple things my app isn't good for their business... tough luck for them.

If I want to update a web app... I update the app.

If a user wants to use an app... They visit a URL and the app is there! No having to face id, go looking for the app in an interface that's designed to hide the search function, that is filled with spammy trash imitation apps (that somehow get approved by the app store anyway)

All the time I hear somebody crying that their developer account got canceled and I want to say "what did you expect? the contract for a developer account is a suicide pact for your business." Stay free!

DeathArrow 14 hours ago||||
>Your post is touching on a key question: why write a Windows-specific app?

Why write an anything-specific app?

bigstrat2003 18 hours ago||||
> Web apps work everywhere. The web has grown increasingly powerful and capable. Why would I invest in a technology that can only run on a single OS?

There are other options besides "web app" and "only one OS". A cross platform app which uses something like GTK or QT will be a massively better experience for your users, one a web app cannot hope to equal.

PaulHoule 7 hours ago|||
I know one of the GTK developers who dropped out of my research group in the 1990s who's been in charge of triaging tickets and he's the kind of guy who doesn't care if there is just 1.05:1 contrast between text and background and will refuse a one-line patch to make menus render right in rootless X windows because he wants to punish you for doing things in a way he thinks is wrong.

And he probably wonders why it is never "the year of the Linux desktop" but hey it is OK because Red Hat Linux is something enterprises subject their users to and if it had the slightest bit of flair customers would complain.

So when I hear GTK I think Nein Danke!

In general Linux has the kind of fanbois problem that MacOS had maybe 10 years ago. There are so many things that still "just don't work" after years and they never get fixed because you can live without them. For instance I can tell you how to install some package like

   sudo apt-get install mypackage
and that's all! I can make 10 pages of screenshots to tell you to click and click and click and click and click to install "mypackage" with the GUI [1] and you may wind up looking at a spinner for 10 minutes or longer (eventually you give up) and you might wind up corrupting your package database and not being able to install or update anything until you look up how to rebuild it. The Linux desktop is stuck with having done the 20% of the work that gets it 80% done and never does the rest of the work because you can use the command line anyway.

[1] and you still might misunderstand it and need intensive tech support

vscode-rest 15 hours ago||||
What’s an example of a well made GTK or QT app in your opinion? And what would be the steel man Web app to compare that to?
u8080 6 hours ago||
Telegram Desktop (Qt)
vscode-rest 6 hours ago||
We might contrast that with Slack, yes?

This thread comes to mind: https://www.0xsid.com/blog/wont-download-your-app With Slack that’s trivial, Telegram impossible.

u8080 4 hours ago||
Except Telegram Desktop is opensource and they also have full-functional Web version.

But tdesktop is really well-made Qt piece of software, snappy, feature-rich and multi-platform.

vscode-rest 2 hours ago||
Interesting, at first pass I’d say the source availability has little to do with the topic at hand. But on second thought it might be rather significant. No company would finance making 2x identical cross platform apps, but if you have a pool of OS folks who are free to contribute at their leisure, the calculus changes a bit.
wiseowise 11 hours ago||||
A lot of grandeur but zero substance. Aside from performance, what would being written in GTL/Qt bring to VSCode or Obsidian?
GandalfHN 15 hours ago||||
[dead]
GandalfHN 14 hours ago|||
[dead]
direwolf20 13 hours ago||||
Features. Speed. Do your web apps only work in Chrome by the way?
PaulHoule 7 hours ago||
I am a Firefox-first developer, almost everything I write works in Firefox/Chrome/Safari without a lot of drama.

I have one application at work that loads a table with 40,000 rows into a data grid that works really well on Chrome and lags on Firefox, that's the one case where the performance difference matters.

This year I've been interested in biosignals applications that read data with the Web Bluetooth API and Web Serial API which are ordinarily Chrome-only. I was about to get one of my junk Android tablets out of mothballs when I found there is Bluefy for iOS which supports the Bluetooth API so I have no problem going to labs where they have a really klunky HRV system based on a PC and show them something sleek on my iPad and in 20 minutes i can demonstrate to you, with your own physiology, everything you actually need to know out of a big review paper on HRV.

baudmusic 10 hours ago|||
[dead]
tannhaeuser 13 hours ago|||
Windows until 24H2 (when Edge and the last remnants of IE were replaced by Chrome) supported HTML apps [1], introduced with Windows 98 Active Desktop. They weren't used much but actually not that bad for end-user needs.

[1]: https://learn.microsoft.com/en-us/previous-versions/ms536495...

zanderz 9 hours ago||
It was decent, we shipped one but switched to .net because of high dpi scaling issues IIRC
bigstrat2003 18 hours ago||
> For all the complaints about modern JavaScript it gives you the pieces to make a very pleasant world in terms of DX and UX

There is no such thing as pleasant UX in a web app. The best experience will always be a native app, a web app is at best a port in a storm solution.

PaulHoule 6 hours ago|||
When Windows wants to nag you it makes marketing-oriented screens that I think are visually attractive in a commercial way if not quite as 'cute', 'cool' and 's--y' as a gatcha screen from a mobile game. These sure look like they were drawn with an HTML-based rendering system and if they weren't, they were certainly inspired by commercial art on the web.

When MacOS wants to nag you it pops up a Liquid Glass vandalized version of the 1999 retread of the modal confirm dialog from the 1984 MacOS.

I wish both of them had NEVER OPEN A MODAL DIALOG THAT I DIDN'T ASK FOR EVER AGAIN button that took 80% of the space and a tiny little greyed-out link at the bottom that said "maybe just maybe I want to hear about this in three years" but from a graphic art viewpoint I laugh at MacOS.

wiseowise 11 hours ago||||
> The best experience will always be a native app

Nonsense. The best experience is the one that solves user’s issue. Technology choice is orthogonal to that.

vscode-rest 15 hours ago|||
Figma is far superior to the native apps it replaced. As is VS Code. Slack.
Anamon 11 hours ago|||
One could (and I would) argue that they achieved that despite their web-tech-based UIs, not because of. At least those of us who were around for the days when most apps were still native, do notice and get bothered by the input lag, for instance.

Slack is, in fact, one of the worst offenders. It is so incredibly sluggish. And it doesn't need to be, when I compare it to the speed (and memory consumption) of Pidgin with the Slack plugin.

PaulHoule 6 hours ago|||
Async comm in web apps often keeps them responsive when the native app experience is: spinner... spinner... spinner... spinner... lock up the window and you can't move it... spinner... spinner... spinner... "should i reboot the whole machine first thing or should i try killing the app with task manager and starting again?"
vscode-rest 6 hours ago|||
Their killer feature, being able to share a link with anyone at the company and instantly collaborate (live!), is made far easier on the web platform vs native. “The input lag” frankly does not matter in the big picture, imo.
neutronicus 5 hours ago|||
> As is VS Code.

That is, uh, controversial.

Along both "alleged replacement" and "alleged superiority" axes.

vscode-rest 5 hours ago||
[dead]
lenkite 1 day ago||
The problem is that they just could not commit to anything for more than 2 years after Win32.

They had something reasonably good in WinRT. They should have stuck to that. But Nadella came in, said Azure Cloud is the future and abandoned the Windows platform.

rbanffy 21 hours ago||
At this point one must ask if Microsoft is still a software platform company - whether their products form a substrate where an ecosystem can form and build a coherent software environment for the users of their platform.

Microsoft used to be the Windows company (after being the BASIC company, then the DOS company). Then it became the Office company. Now it’s SharePoint and Office365 and Azure, a utility. Windows is a relatively small part. Office is both desktop and web (and spacecraft, where they have two versions of Outlook and none of them works). If you are confused at this point, so am I. There is no vision as to what Microsoft is. If Satya Nadella knows what Microsoft is, he isn’t communicating it properly. It’s not Azure, because there is also Office and Windows. And on-prem server products. And a line of hardware products. And stores (do they still exist?).

pdonis 20 hours ago|||
MS has never been a software platform company. That's the fundamental reason behind the issue the article talks about.

MS has always been a software application company. Windows was never anything more than a way to sell MS applications--and Windows 3.0 and later wouldn't even have existed in the first place if IBM hadn't dawdled so long over OS/2. Even in the MS-DOS days, when MS was reaping the benefits of IBM's previous bonehead decision to hand the PC OS market to them, MS was selling Office applications--on the Macintosh.

The basic Windows API, in all of its many incarnations, has always been a second-class citizen; MS Office applications have always done their own things that other Windows applications couldn't do without using undocumented features that MS could change at any time (and often did). One could argue that the only reason MS even allowed third-party Windows developers to exist was so that they would, in the words of one of PG's essays, do market research for MS. When a third-party dev came up with something that got enough traction, MS would simply incorporate it into their apps.

rbanffy 2 hours ago|||
Microsoft was a language company at the start - they had a huge share in 8-bit computers and their BASIC made into the ROMs of almost every computer sold in the 70s and 80s. Then they branched out to applications, with little success (I remember Multiplan on CP/M, DOS, and Mac). When they started selling PC-DOS and MS-DOS they had no applications play to speak of. Office only came much later, and the apps that appeared for Mac, Word and Excel, were ported to Windows starting on Windows 2. Word for DOS struggled in the market and never reached a significant share.
pdonis 13 minutes ago||
> Office only came much later

In the sense of being marketed as a single integrated package, yes, I agree. I was using the term loosely to refer to the apps themselves (Word & Excel were the first two, as you note, the others came after).

furyofantares 9 hours ago||||
How do you reconcile this with their history of bending over backwards to achieve backwards compatibility for third parties?
pdonis 6 minutes ago||
Because their strategy for getting their applications in front of everyone has always been to get Windows in front of everyone, and that meant having to support third party applications that they chose not to try to incorporate into their own apps, but which got enough usage that not supporting them would mean losing those Windows desktops, and thus losing those users of the MS applications that were on every Windows desktop.

It's quite possible that this attributes too much intentional strategy to MS, and also treats them as a single entity with a single strategy more than they deserve. The MS internal teams that were bending over backwards to maintain backwards compatibility were not the same as the teams that were churning out new APIs, building Azure, etc., and quite likely had very different incentives.

coliveira 19 hours ago|||
This makes sense, because even in the best times Windows was not the biggest money maker for Microsoft, it was Office. So MS was never fully behind Windows, it was only the means to an end, which was selling the most software for enterprises.
kmeisthax 17 hours ago||
Ironically, Office was the original poster child for Microsoft reinventing it's own widget toolkits, even back when Microsoft had a coherent visual design and developer story.
hyperrail 19 hours ago||||
Microsoft has always had a broad vision of itself as a technology company; I feel it's perfectly fine to not be able to describe Microsoft in one sentence without using platitudes like "empower every person on Earth to achieve more" or "put a computer in every home and every office" (both paraphrases of actual MSFT company mission statements), and I suspect many other current and former Microsoft employees would feel the same way.

IMO Microsoft's best long-lived products have always been both finished solutions to your problems and platforms to help you develop more solutions, and Microsoft leadership has always recognized this. Examples: Windows. Office. Dynamics (their Salesforce competitor).

But even if a product doesn't meet that "why not both?" ideal, there is always going to be room for it at Microsoft, as long as it is not only a good or at least mediocre product by itself, but also works to sell you on the whole Microsoft ecosystem. Sometimes that is a bad thing (see all the Windows adware for Bing, Copilot, and M365). But that at least is where Microsoft remains consistent.

com2kid 13 hours ago||
> "put a computer in every home and every office"

That was such an amazing mission statement. It was a real measurable goal, and progress towards it was quantifiable. And Microsoft actually did it! That mission statement drove actual strategies (lower costs, don't complete with Apple on the high end, force OEMs to compete against each other on price, etc) that resulted in its ultimate fulfillment.

drob518 21 hours ago|||
Nadella thought he could take the reins and start yelling “Cloud! Cloud! Cloud!” and that would be successful. He doesn’t have a strategy and now that’s becoming apparent.
orthoxerox 13 hours ago|||
He had a strategy and it worked very well. But every strategy must be updated. It's basic BCG matrix stuff every MBA graduate knows by heart: sooner or later your star product becomes a cash cow and then a dog. To keep your company growing, you need to identify your next potential stars among question marks, boost them with cash from the cash cows, put competent managers in charge and remove those who get in the way.

Gates did this with Windows, Office, XBox among other things. Ballmer failed to do this this with Windows Phone. Nadella did it with Azure, but he needs to do it once again with AI. You can see that he's pushing hard with Copilots everywhere, what's missing is a manager that has a coherent vision of what AI at MS should look like. ScottGu is in charge of both Azure and AI at MS, but I don't know if he can deliver.

drob518 2 hours ago||
I agree with most of that. To be charitable to Nadella, at the time he first came into the role, Microsoft needed someone yelling "Cloud! Cloud! Cloud!" because the company was certainly behind folks like AWS. But for a long time he basically stopped there. Office migrated to the cloud and they pushed out Azure. Then he went on the AI rant and they decided that putting AI into everything, whether customers wanted it or not, was "the next thing." But now we're learning that Azure is a steaming pile of crap with customers leaving, and this article about GUI strategy shows they don't have an application development strategy. Everybody is fed up with Windows. Everybody is fed up with all the numerous "CoPilots." You actually have regular people investigating moving off Windows to Linux desktops. The one thing that Microsoft did exceptionally well through the 1990s and early 2000s was keep enterprises and app developers moving in the same direction. They bent over backwards to keep old Windows 3.1 applications running even on Win32 systems. That all ensured that nobody questioned whether they would work with Microsoft. They were the default and they commanded huge market power because of it. But that's all changed, and they have nothing to replace it. With everybody starting to ask questions that Nadella doesn't have answers for, it's going in a bad direction. Nadella needs to call his EVPs to account and force them to make some hard decisions about what lives or dies and then pressure test the resulting strategy with his customers, both old customers and potential customers. Surely, cloud and AI are a part of that future strategy, but he needs to figure out the rest of it.
wvenable 16 hours ago||||
Cloud is now massively larger than any other part of Microsoft. It's why he became the CEO in the first place.

He maybe never had a strategy for Windows but he wasn't hired to have a strategy for Windows.

gdhkgdhkvff 20 hours ago|||
Nadella took the reins in 2014 and the stock has 10x’d since then. In the same timeframe, the sp500 has 2.5x’d. Sounds pretty successful to me?
a_vanderbilt 20 hours ago|||
In theory, the market should be pricing in based on future potential. As it has become increasingly clear this past decade, the market is not rational.
drob518 19 hours ago||||
In a bubble, everyone looks like they’re doing well. Don’t confuse that with an actual strategy.
gdhkgdhkvff 19 hours ago||
But I compared it to sp500. Even QQQ only 6x’d in that timeframe.

Which bubble are you talking about? Even if you remove everything after January 1 2020, it’s still up 4x since nadella took over. And that follows a decade of stagnation under Balmer.

What numbers do you know of that show that Microsoft hasn’t been successful since nadella took charge?

Complain all you want about the products, but the stock under nadella has been a success.

user____name 10 hours ago||||
Sure, but how much of that had to do with the design and implementation of Windows? You know, the OS that runs half of the modern economy. Microsoft is just milking it without a coherent vision.
snarfy 8 hours ago||||
Cloud was taking off at the same time. Anybody in his spot would have been successful.
pndy 10 hours ago||||
Maybe financially MS is successful but at the cost of flagship product becoming adware and people fleeing slowly away
bigstrat2003 18 hours ago||||
Stock price going up is not the success criterion for a business. Making money is. And Microsoft's decisions are undermining their ability to make money in the future, which makes them bad decisions even if the stock price has gone up or if they make more money in the short term.
andsoitis 18 hours ago|||
> Stock price going up is not the success criterion for a business. Making money is.

Microsoft’s net income is up roughly 5.4x from ~$22B in 2014 to $119B today. Profit margin also expanded, from ~25% net margins in 2014 to over 36% today.

adrianN 15 hours ago|||
If the market agreed, the stock wouldn’t go up.
sph 13 hours ago|||
If your only metric is stock price, yes. That’s the value proposition of enshittification.
stefan_ 20 hours ago||
WinRT was technologically terrible (which immediately flows from "no one at Microsoft was actually using it to make anything useful"). But that wasn't even what sunk it - the whole requirements around "of course your WinRT app is going to be in the Microsoft Store^TM its the future" did that. The fucking store is a joke, and those requirements existed solely to boost a bunch of idiots internal careers.
collabs 19 hours ago|||
The Windows Store thing was so terrible that I would argue the only good thing that came out of it was that it made Valve/Steam invest in Linux.

I still don't understand why the windows store search sucked so badly. It isn't like they had billions of apps. So why did it suck?

coliveira 19 hours ago||
Most probably it was on purpose. MS is famous for the infighting of internal groups and how the management doesn't know how to control their divisions.
pjmlp 15 hours ago||||
Correct for the Windows 8 and 8.1 initial versions, it was already quite good with UWP on Windows 10.

But then they rioted internally to kill C++/CX (the only time they had something comparable to C++ Builder), Project Reunion got announced and misused from the original goal, porting WinRT back into Win32 killed .NET Native as well, most of the key team members left to Amazon and Google, Azure or AI teams, the team is now mostly interns or juniors from Microsoft India, no direction, and is a mess, naturally.

I went from a WinRT advocate, to pointing out devs to stay away from it, this is how bad they treated those that actually believed WinRT could be it.

zanderz 9 hours ago||||
Part of the reason was that WinRT was aimed at tablets and other low power devices, where unrestricted Win32 API use could drain the battery too quickly. They were trying to put the genie back in the bottle to have more control in this new ecosystem, like Apple enjoyed on iPad, etc. Much of the weird signing and app store evaluation was to make sure your app used only the blessed APIs and wouldn't, for example, stay awake in the background listening on an arbitrary port and drain the little tablet battery.

Painful and nonsensical from a desktop standpoint but also kind of impressive in a way.

garganzol 18 hours ago|||
My favorite example of that was when WinRT app .exe files could not be launched from the command line. Only via some Windows Store voodoo dance with approvals, signatures and "security" that made WinRT for developers essentially a dead-on-arrival technology.

I would not be surprised if you still cannot launch a fricking .exe.

pjmlp 15 hours ago||
This was sorted out in Windows 10 with the unification of WinRT programming models under UWP.
rigonkulous 10 hours ago||
My coherent GUI strategy: just use JUCE.

Invested in it, shipped it, seen it solve the cross-platform problem beautifully.

Can just write C++, and see it running everywhere.

The JUCE GUI capabilities are more than adequate for many, many things.

There are other platform-scaffolded cross-platform frameworks. JUCE is cromulantly FNORD.

InfiniteAscent 5 hours ago||
Use JUCE as much as you like, but please, stay away from those 'out-of-the-box' horizontal sliders it seems to prioritize (given how they swarm in the many VSTs made with JUCE).

If sliders are vertical in the real world, there’s a reason for it that Bruce “Tog” Tognazzini summarizes perfectly:

“Most of us […] have our forarms mounted on a pivot we like to call our elbow. That means that moving our hand describes an arc, rather than a straight line. Demanding that pivoted people move a mouse pointer along in a straight line horizontally is just wrong.”

Source: https://www.asktog.com/columns/022DesignedToGiveFitts.html

rigonkulous 3 hours ago||
JUCE' GUI framework is extremely versatile - if that default irks you, its a couple lines of code to get pretty much any control to behave itself.
SyneRyder 9 hours ago|||
That sounds intriguing - are there examples of desktop apps (eg productivity apps) that are made with JUCE?

I'm already very familiar with JUCE in VST plugins, I have hundreds of VSTs made with JUCE and I love their UIs. But I don't think I've ever seen it for a standalone business application?

The JUCE pricing is certainly far more reasonable than Qt.

rigonkulous 9 hours ago|||
>desktop, productivity apps

You can configure your JUCE project to build to any of the standard audio plugin formats, or for it to build a standalone app for the target platform (i.e. plugins, desktop, mobile, embedded) or indeed to build all of these targets, at once, in one build.

However, during app (i.e. non-plugin) development I often switch between linux and macos environments as part of my workflow, and during testing after I've pushed to the proper branch, the build server plops out the .exe/.pkg/.app/.tar.gz bundles as needed for the test group to crack at it.

JUCE, being at heart a C++ framework intended to be the engine of a very diverse swath of different OS, plugin, and packaging standards, does all the glue to get you there - how you use it, is up to you. (All of this can happen in github actions, btw, really easy to set up..)

Yes, there are 'business'/'productivity' UI elements in JUCE app targets, and yes they are consistent across all platforms. And yes, you can for example build a UI from an .xml form, with cross-platform datastore and so on, easily enough.

Here's a nice place to start, if you wanna understand JUCE capabilities from a 'productivity'-app perspective:

https://www.youtube.com/watch?v=3IaMjH5lBEY

David Rowland, a core JUCE developer, explaining the guts of things.

Basically, the scope is high performance applications, and there are no really good reasons for why a high performance application cannot also be a productivity app - the distinction is arbitrary - except of course you ask, for the GUI!

But: JUCE' GUI is pretty darn good, I have to say, in face of the onslaught of platform vendor fuckery. You can embed a WebView if you really need it, and wire it up to the rest of the cross-platform event handing system, etc. But I think its not really needed, given the plethora of 'normal' UI controls, out of the box.

If you're serious about looking at JUCE for a variety of application types, then a lot of the questions you're going to have about JUCE' GUI suitability for standalone business applications can be answered by running the DemoRunner application that's built-in to the JUCE codebase.

Clone the repo, build the DemoRunner project for your platform (or all of them), and you'll see - there are plenty of business-like cross-platform UI elements in the kitty. A huge collection of business-/productivity- like UI elements, right out of the box. (High-performance plugin UI's are there with the business UI stuff, too.)

And .. once you've marvelled at the glory of DemoRunner(.exe,.app,.apk)[etc.] .. please do yourself a favour and spend an extra hour parsing the awesome-juce list:

https://github.com/sudara/awesome-juce/

JUCE is marvelous, and awesome-juce is awesome.

SyneRyder 6 hours ago||
You might have sold me on this, because on top of the productivity-ish stuff I do, I'd really love to get into VST development. If I hadn't fallen into Photoshop plugins first, I would always have been an audio plugin dev. I loved PSP VintageWarmer in the late 90s.

The UI in Rowland's demo at 32min is feeling a little DearImGui / Reaper-ish, kinda bland while also being non-native. But I've seen all the UIs that Arturia & everyone else makes with JUCE, even what Valhalla does with it with their NASA inspired interfaces, so it can clearly make amazing stuff.

I can't believe we're now looking to PACE of all companies to help indie devs. I hated iLok for so long even though I have two iLok dongles now ;)

hermitcrab 8 hours ago|||
Qt Small Business pricing is very reasonable.
SyneRyder 7 hours ago|||
I think I prefer that JUCE is a one-off licence at $800 (for small business) and that they offer a 30% discount if you want to upgrade when they release a new major framework version. I'd rather not get locked into Qt's annual $618/subscription every year just to continue distribution & development.

But Qt has the bonus of also running on HaikuOS, and I've definitely seen more business apps in Qt (pretty sure 010 Editor is Qt).

okanat 6 hours ago|||
You can also use LGPL. You only need to disclose the changes you made into Qt itself and allow changing it with another DLL. That's it.
duped 6 hours ago||
JUCE has too many downsides to seriously recommend imo. "Just write C++" is also doing heavy lifting, since JUCE is its own bespoke flavor of C++.
gt0 12 hours ago||
When a platform can’t answer “how should I build a UI?” in under ten seconds, it has failed its developers. Full stop.

That's fine, except no platform answers this.

Obviously Linux doesn't, but the Mac doesn't either. Apple of course has it's recommendation, but most developers do not take Apple's recommended path because of course, it's Apple-only, most developers make cross-platform apps these days.

Even if Microsoft decreed the one-and-one Windows development path, most developers are not taking that path.

It used to be the case that Mac developers used Apple tools, Windows developers used Microsoft tools, but those days are gone. Developers want to use Electron, or Qt, or some other system to support multiple platforms in one codebase.

Microsoft has less to do with this than the article makes out. I'm a desktop developer. I don't care what Microsoft recommends, or what Apple recommends, because neither work in the real world where supporting only their platform just isn't realistic.

vladvasiliu 11 hours ago||
I think the mac mostly does this. Developers not caring about the answer is a different thing.

But I gather from your comment that you don't actually care to ask that question, since you have a different need, and already have a solution which works for you. Which I guess is fine if you're happy with the compromise.

But this is about people who actually still care to have "native" applications.

rwmj 11 hours ago||
Linux can answer the question, but you're considering Linux as a monolithic platform which it isn't. If you ask "how do you build a UI for Gnome / KDE / Android?" then the answers are pretty clear.
haskman 11 hours ago||
Also, being KDE native means using QT which is a good cross platform toolkit anyways.
mikkupikku 10 hours ago|||
Tbh Qt is so big you've still got a few minutes of decision making after you've decided to use it. What parts will you use and how will you use them?
iamcalledrob 10 hours ago|||
...but then feeling out of place on GNOME / GTK4 / LibAdwaita-land

Linux is a mess, but at least it's unapologetically so.

mikkupikku 10 hours ago||
They've got unified themes that make GTK and Qt applications look nice alongside each other. Users who care will be using those. Users who really care might refuse to use your application because it isn't the toolkit they like, but you shouldn't lose sleep over satisfying such particular and demanding users. They're not paying you anyway.
regularfry 1 day ago||
Having spent some time kicking around the Delphi space I got quite into WPF in 2007ish. By 2010 I had not just sworn off it, I'd sworn off Windows entirely. The constant stream of rug-pulls as one bit of MS managed to pull off a political heist over another and - oh no - yet another "latest and greatest" technology was effectively deprecated within 18 months of launch, invalidating all the effort you put in to staying up to date just became a pointless treadmill.

Fortunately Rails was taking off at that point so it was fairly easy to change horses and just ignore it.

PacificSpecific 1 day ago||
If I'm writing Windows desktop GUIs I still stick to WPF. Might be Stockholm syndrome but I quite like it.

I don't see the reason to use any of the new ms ui frameworks. Especially if ms themselves don't even really use them.

As far as I know visual studio is still a WPF project so I'm not super worried about it no longer working.

RajT88 23 hours ago|||
WPF looks much nicer. Personally I find it hard as hell to debug.

Winforms just work, and have a well defined set of behaviors. It does not matter that they do not look as nice for most people.

imron 21 hours ago|||
That’s not so bad. I still stick to win32
taylodl 1 day ago|||
Microsoft had a lot of great talent suffering from a lack of leadership and coherent vision. They foreshadowed everything wrong with Big Tech today.
functional_dev 13 hours ago||
what surprised me is how different the rendering architecture is for each framework.

Win32 -> message loops & GDI

Winforms -> managed C# via P/Invoke

WPF -> throwse all away and uses DirectX

UWP -> Appcontainer sandboxing

WinUI -> decouples from OS entirely

This visual breakdown helped me to see it clearly - https://vectree.io/c/evolution-of-windows-gui-frameworks-fro...

FeistySkink 10 hours ago||
As far as I remember, WinForms is just a thin wrapper around Win32 with a message loop, i.e. not all that different.
calvinmorrison 22 hours ago||
At the same time VB still works and runs, so they don't always rug pull.
rbanffy 21 hours ago||
They might have forgotten to pull that rug.
WorldMaker 17 hours ago|||
They did pull that rug, twice, in two different directions.

1) VB7 (VB.NET) entirely split the VB developer community.

2) VB6 IDE has not worked well and is entirely unsupported in every Windows after XP. It's generally recommend to build VB6 apps in an XP VM and XP being out of security support it's now a huge "Use at your own risk" and "Do your best to isolate the VM from ever having an internet connection". (Not to mention that installers like Install Shield that still understand VB6' super messy version of COM are generally also out of support and security support.)

It was alleged that Microsoft almost dropped the runtime components for VB6 in Windows 11. It starts to feel like only a matter of time before they do.

int_19h 20 hours ago|||
Definitely not, since it actually takes quite a lot of red tape to ship something as ancient as MSVBVM60.DLL in Windows 30 years later, and guarantee that it is still working.

It's just that it's a piece of tech from back when Microsoft corporate dominance on the desktop was at its peak, and many large companies bought into the then-current tech stack, including VB6. So now Microsoft is stuck maintaining it because those are the customers that bring consistent revenue.

markus_zhang 1 day ago||
Steven Sinofsky wrote this piece a couple of weeks ago about the same topic:

https://x.com/stevesi/status/2036921223150440542

orthoxerox 2 hours ago||
I've read this and the relevant chapters on his Substack and I think I get the idea that he tried to implement, but it's obvious in 2026 where his vision diverged from what people really wanted.

In the ideal world, Win32 applications would have automatically run in a sandboxed WinRT environment with granular permissions. A program thinks it's accessing a USB webcam, but it is actually accessing a Win32 shim that goes to the WinRT that first prompts the user to obtain the necessary permission and then goes to the real Win32 USB API to interface with the camera. A program is trying to access a file that hasn't been selected in the "Open file" dialog or dragged into it or passed as a command line argument? Raise a "malicious access" warning.

Overly complicated programs like antiviruses would have been able to get a "hall pass", either by registering their builds with Microsoft or asking for an administrator-level exception.

Of course, this would've been terribly hard to implement. Doing it natively would be supremely complicated, much harder than just designing a whole new userland API like WinRT. And sandboxing every application in something similar to Sandboxie would've been too taxing on the PCs from that time.

int_19h 20 hours ago|||
It's very amusing to see Sinofsky of all people all but dumping on .NET and (still?!) not understanding why developers so proactively jumped ship from Win32 & MFC hell to WinForms. Or why the HTML/JS app model in Win8 never really took off.

I was in DevDiv during his great WinRT push and the overall feeling I remember was that the guys in Windows had zero clue as to what the devs actually wanted, but were hell bent on scorching all the ground that wasn't theirs. My team actually did some prototyping for Python/WinRT support, and we had it working to the point of the visual WPF designer in Visual Studio even. Unlike JS, it was full fledged - you could use anything in WinRT same as C#, extend classes etc, while JS limited you to a "consumer" surface of the API. That prototype was killed because Windows (i.e. at the time = Sinofsky) said they didn't think developers cared about anything but JS so they didn't need another high level language.

It was also when Windows was aggressively pushing their Metro styling on everything in the company, sometimes to ridiculous lengths - e.g. Visual Studio at the time "aligned" with Metro by, I kid you not, making the main menu bar ALL UPPER CASE so that it looked like Metro tabs! You can still see the blog posts announcing this "feature" when it shipped in the first public beta of VS 2012, and the comments on them.

And then there was Windows RT (not to be confused with WinRT, because Microsoft product naming!). Aka the Windows-on-ARM that ditched decades of backwards compatibility because Sinofsky decided that rebooting the ecosystem is the only way to compete with iPad or whatever. What actually happened was that the users went WTF because none of their native apps - which, contrary to his take, were very much alive and kicking! - worked there, and devs went WTF because they were told that they'd need to rewrite everything yet again in some new thing that was kinda sorta but not quite like WPF, because Windows just hated .NET that much and couldn't accept that the devs liked it over their stuff. So the app store was a barren waste, and without apps there would be no users.

Some of the technical details in there are plain wrong, too. For instance, .NET 3.0 actually shipped in Vista, contrary to his claim that it was shipped in Win7 (and that it was the first time .NET shipped in consumer Windows - in fact, that would be .NET 1.1 shipping in WinXP SP1).

randomfool 16 hours ago|||
Sinofsky kept talking about how many devs were making apps in JavaScript and how they would just be at home in Win8. This was before React, ES5 (no native classes! or promises!), etc- jQuery was still very popular and SPAs were extremely rare. He completely overlooked how dependent many of these devs were on their servers- Python, Ruby, PHP, etc.
cjbgkagh 16 hours ago||
They thought after V8 the performance was going keep improving and reach native speeds, they didn’t understand that the major performance wins were all upfront and it would hit a wall.
cjbgkagh 20 hours ago||||
Often kind of person who makes such mistakes is the kind of person unable to learn from them. The post by Sinofsky is exactly as I imagined it would be.
orthoxerox 12 hours ago||||
> It's very amusing to see Sinofsky of all people all but dumping on .NET and (still?!) not understanding why developers so proactively jumped ship from Win32 & MFC hell to WinForms.

Yeah, he's talking about WinForms like it was a whole new thing, but it was a very transparent OO layer over Win32 and extremely similar both to VB and Borland Delphi. It was one of the reasons why .NET survived at all when Linux servers became the default option.

markus_zhang 8 hours ago||||
I have always been tempted to use WPF but I’m reluctant to learn a whole new language for side projects. Especially nowadays C# seems to be as huge as C++. Oh well maybe I should grit through the beginning phase.
hyperrail 3 hours ago||||
(disclaimer: I was an individual engineer in the Windows division during the Windows 8 project, i.e. reporting through Steven Sinofksy)

I think you're being a bit unfair to the Windows division during the Win8 lifecycle. Maybe that's just my rose-tinted glasses though. I know there are some HN/proggit commenters who like to harp on the supposed toxic rivalry between the Windows orgs and Microsoft developer tools orgs and how it has made Windows' developer platform much worse over the years, but I have always thought we had a better relationship than that, since my group's product was the main reason for yours for many years, and your group delivered so much for us in turn. Clearly your side had at least some reason to see things differently. On behalf of all of us, yes even up to stevesi, I'm sorry.

Now let me completely undermine my apology by nitpicking your comment :)

[continued in my replies to this comment]

hyperrail 3 hours ago|||
> It's very amusing to see Sinofsky of all people all but dumping on .NET and (still?!) not understanding why developers so proactively jumped ship from Win32 & MFC hell to WinForms. Or why the HTML/JS app model in Win8 never really took off.

At the risk of getting my Microsoft history wrong, I'm fairly sure that Steven Sinofsky wasn't working on Windows or even MFC (i.e. what he did as one of you guys) in .NET's early days of 1999-2003. He was leading Office at that time. Office of that era was transitioning from the Windows XP look that still persists in Windows Forms to the early Ribbon, and was then (as now?) using very custom GUI code that didn't correspond to any specific higher-level Windows app framework.

Mac OS Office apps had just separated their codebase again from Windows apps after being unified in the mid-90s to get to feature parity (which annoyed Mac users who felt they now had non-native-feeling apps that were slow and bloated), and the "Office framework" was still quite distinct from any single-platform Windows app as a result of that.

So if Sinofsky did not understand why people went from USER/GDI to WinForms, that may just have been the fact that nobody working for him had felt the need to make that transition.

hyperrail 3 hours ago||||
> What actually happened [re Windows RT, but I think the point applies to UWP in general] was that the users went WTF because none of their native apps - which, contrary to his take, were very much alive and kicking! - worked there, and devs went WTF because they were told that they'd need to rewrite everything yet again in some new thing that was kinda sorta but not quite like WPF, because Windows just hated .NET that much and couldn't accept that the devs liked it over their stuff. So the app store was a barren waste, and without apps there would be no users.

The fact that UWP XAML was its own new thing and not a extension of an existing Microsoft GUI app framework like WPF was not necessarily a "we hate managed code" thing, or even a "we hate those guys who invented managed code and want to screw them because we're Windows" thing. After all, .NET managed code had equal access to UWP through the .NET WinRT projection!

And to me at least (I didn't work on UI-facing stuff in Win8), it was absolutely conceivable that UWP could have just delivered Windows Phone 7 Silverlight's version of XAML to native code apps, with a thin adaptation layer to let even unmodified WP7 app binaries run on the desktop Windows .NET Framework with the WinRT projection and to allow slightly modified WP7 apps to look good in landscape mode on both Windows 8 and WP8. If we had done that instead of making UWP XAML its own thing, and if we had integrated the Windows Store with the Windows Phone Marketplace from the beginning so that Windows and Windows Phone apps could be sold as variants of each other through a single Store/Marketplace product entry on Windows 8 GA day, then I think we could have brought a lot of people forward who were already making good WP7 apps, and the Store wouldn't have been so empty.

Furthermore, IIRC much of the original UWP XAML implementation was done by the original people who built WPF and Silverlight the first time, and they would have known what they were doing in separating UWP XAML from Phone Silverlight. That they didn't go in the direction of extending Phone Silverlight was not necessarily shortsightedness on the part of provincial Windows people. Maybe they thought Phone Silverlight actually demonstrated fundamental limitations of WPF or Silverlight XAML or the Silverlight "coreCLR", or they wanted to make breaking changes as lessons learned from Phone Silverlight, which was put together about as hurriedly. (Windows Mobile 6 -> Windows Phone 7 first previews = 1.5 years; Windows 7 -> Windows 8 first previews = 1.5-2 years, tending toward 1.5 years if you account for the frantic re-planning after iPad came out in early 2010.)

hyperrail 3 hours ago||||
> And then there was Windows RT (not to be confused with WinRT, because Microsoft product naming!). Aka the Windows-on-ARM that ditched decades of backwards compatibility because Sinofsky decided that rebooting the ecosystem is the only way to compete with iPad or whatever.

It's important to remember the specific reasons why Windows RT 8 chose to not support third-party desktop apps. The most important aspect of "iPad compete" that we wanted on Windows for ARM was not "all app UXes look and work well on touchscreen tablets" but "you can't ship malware, not even by rebuilding your x86 malware from source." Thus, every 3rd party app on Windows RT would have to live in the AppContainer sandbox that UWP apps are in by default, and the requirement that you ship through the artist formerly known as the Windows Store would be a second line of defense against malicious apps. And with the forced-enabled Secure Boot, subverting the user-mode controls by secretly installing a bootkit would be hard even with physical access to the PC.

Even within the Microsoft world only, Windows Phone 7 had proven the success of this approach of locked-down apps only available through an app store that checked apps on submission and afterward for security. It was not unreasonable to think that similar lessons might also benefit users of "big" Windows, which is why Windows 10 and 11 have the opt-out "S mode" which defaults to the Windows RT restrictions.

I do wish though that Windows 8 had learned different lessons from WP7 (about which more in another point).

hyperrail 3 hours ago||||
> It was also when Windows was aggressively pushing their Metro styling on everything in the company, sometimes to ridiculous lengths - e.g. Visual Studio at the time "aligned" with Metro by, I kid you not, making the main menu bar ALL UPPER CASE so that it looked like Metro tabs! You can still see the blog posts announcing this "feature" when it shipped in the first public beta of VS 2012, and the comments on them.

fair. but that struck me as strange even then. if anything, visual studio should have adopted the all-lowercase typography of the original metro-style design language from zune and windows phone 7, not AN ALL-UPPERCASE ONE.

Perhaps that was just another way that Windows 8 Metro-style apps' design and developer platform was like Windows Phone 7's Metro style, yet different in seemingly gratuitous ways. That is something I would attribute to internal Microsoft politics. Steven Sinofsky and Terry Myerson (leader of Windows Phone at that time) never really got along, and in the Microsoft philosophy of that era where engineering divisions were completely locked down from each other by default, that rivalry would have discouraged what little natural collaboration would have happened anyway.

hyperrail 3 hours ago|||
> I was in DevDiv during his great WinRT push and the overall feeling I remember was that the guys in Windows had zero clue as to what the devs actually wanted, but were hell bent on scorching all the ground that wasn't theirs. My team actually did some prototyping for Python/WinRT support, and we had it working to the point of the visual WPF designer in Visual Studio even. Unlike JS, it was full fledged - you could use anything in WinRT same as C#, extend classes etc, while JS limited you to a "consumer" surface of the API. That prototype was killed because Windows (i.e. at the time = Sinofsky) said they didn't think developers cared about anything but JS so they didn't need another high level language.

I think the real mistake there was not so much that a particular projection of the Windows Runtime was stopped, but the more general idea that developers should be forced to consume what became known as the Universal Windows Platform or author custom WinRT components through only Microsoft-made WinRT projections.

In the name of winning over new or inexperienced Windows developers with "simpler, safer" projections, we in the Windows division almost completely failed for about 5 years to document or even explicitly say that WinRT was essentially just "COM: The Good Parts, Version 2012". (Martyn Lovell's Build talks on the origin of WinRT were a notable exception to this.) This discouraged people from using their existing COM skills to develop Metro-style/UWP apps or to gradually adopt features from UWP APIs that were accessible to them in their existing desktop apps. Other people have written that "WinRT=COM" thinking is actually a bad idea because it forces people to deal with COM and its more annoying ideas (separate IDL etc.); I disagree because we should have reached out to people who live in COM world to get a ready developer base.

That mistake was a key part of the still larger mistake you touched on of trying to make the UWP and desktop worlds 2 completely different developer platforms that happen to co-exist on the same desktop edition of the Windows OS. That was the key "we didn't listen to developers" mistake that set up UWP for its market failure. Another example: Even today, you can't adopt the battery-friendly UWP app lifecycle using Windows App SDK, which is supposed to be the UWP successor for desktop app developers. So much for WinAppSDK (or indeed UWP/Metro-style apps in Win8) enabling a true no-compromise user experience.

It took real tours-de-force like Kenny Kerr building C++/WinRT and blogging about it, Raymond Chen blogging about using WinRT APIs through the unprojected "ABI" interfaces, or the VideoLAN organization building a Win8/Win10 UWP version of VLC in C, to get the word out that the UWP world wasn't some alien thing with dark magic that only Microsoft wizards had full access to. And it doesn't help that the wizards really do have a few special powers that they jealously guard even now.

pragmatic 17 hours ago||||
How is he dunking on .net?

I think one of his main points is server .net was (and is) great.

But the UI part of it was cloudy.

I see it as complimentary to the post not contradicting it.

int_19h 11 hours ago||
The UI part is exactly what I meant. WinForms was a godsend for professional developers making line-of-business apps, because previously if you used first-party dev tooling, you either had to deal with the considerable limitations of Visual Basic, or you had to deal with MFC that was low-level enough that all the things that were tedious about Win32 remained tedious. In comparison, Borland had Delphi, and there was a good reason why it was so popular back in 90s and early 00s, and why Microsoft ultimately acqui-hired its main designer specifically to work on .NET (and it very much shows in the design of both C#, which owes as much to Component Pascal as to Java, and of WinForms, which is so similar to VCL).

With WinForms, we actually got something that was convenient without shackling you. And the whole cross-language story was great, too, especially around .NET 2.0 - with C++/CLI you could very easily wrap any random native code C or C++ library for consumption from .NET, with end-to-end integration in the build system, IDE etc.

ack_complete 1 hour ago||
Eh, WinForms did a lot to make Win32 UI accessible and usable -- especially layout and easy customization -- but I have to differ on the cross-language story. It was great, IF you were making primarily a C# program that happened to use some C/C++ components.

From the native code side, it was not so great. The .NET 2.0 CLR had very poor support for hosting from the native side and really wanted you to make a program that was .NET first, it didn't work well if you wanted something like primarily a C++ program that hosted a C# UI in the same process. Reverse P/Invoke via native exports wasn't exposed, so creating DLLs for consumption by non-.NET programs was difficult. Mixed mode debugging was and still is painful, with the debugger being glacially slow at some operations like OutputDebugString() processing and blocking some native features like data breakpoints, and the CLR eating access violation exceptions from native code so they couldn't be debugged properly. Build-mode wise, we had to ban C++/CLI assemblies depending on C# assemblies because the C# project system didn't handle incremental builds properly and forced the dependent C++ assembly to rebuild all the time.

These issues still largely exist and are an issue with WPF. It's a great UI framework, but it's unusable unless your front end is primarily a C# program.

pjc50 13 hours ago||||
> making the main menu bar ALL UPPER CASE

I remember that. Especially silly.

> Windows RT (not to be confused with WinRT, because Microsoft product naming!)

The gold standard will always be "Xbox one series X", designed to be confused with Xbox one series S.

Windows RT had one other anti-consumer and anti-developer feature: it was locked down like a Chromebook, so you could only use Store apps on it.

int_19h 11 hours ago||
> Windows RT had one other anti-consumer and anti-developer feature: it was locked down like a Chromebook, so you could only use Store apps on it.

That was at least in part due to the aforementioned obsession with iPad and generally mobile. One thing that Sinofsky is not wrong about in his post is that the classic Win32 app model is not conductive to good battery life - there's very little there to properly handle things like automatic background suspension or low-power push notifications. WinRT was designed with that in mind, but that would make no difference if the apps would just ignore it, hence the heavy-handed push for WinRT apps only (AFAIR it wasn't restricted to Store, although you had to jump through some "developer mode" hoops to deploy apps directly).

ack_complete 5 hours ago||
The main reason Win32 can't handle automatic background suspension or low-power push notifications is simply that those features haven't been exposed to it. There's nothing preventing a Win32 program from receiving those types of notifications and then being force-ended by the OS if it doesn't respond in time.

When I first started porting programs to Windows ARM64, I didn't have an ARM64 device and had to test in QEMU. It ran extremely slowly, probably 1/50th of real time. All UWP programs like Calculator ran like a slug. But which programs still ran reasonably? Classic WinDbg and Task Manager. Two programs that were still plain Win32.

There are significant issues with Win32, namely its lack of a permissions and isolation and lack of hardware acceleration in the old windowing UI (User/GDI). But the idea that Win32 is inherently power inefficient is, IMO, just BS. Its roots go back to CPUs that were orders of magnitude slower than modern CPUs and there is nothing difficult about making a Win32 program that idles at 0% CPU when not in use.

DeathArrow 13 hours ago|||
It seems Windows division has too much power and they used it to break their things.

Also, Windows division is shipping a subpar product now.

In a sane world developer division and Windows division would think things together, developer division would produce the tools and the same tools would be used by Windows, other Microsoft products such as Office and third party developers.

Why that doesn't happen at Microsoft, I don't understand.

And I don't understand why Nadella doesn't do anything about it.

sirjaz 7 hours ago||
It's that Nadella doesn't really care about Windows, even though the kernel is the root of Azure. In addition, all the newer gui frameworks abandoned RAD interface. That is what made and still does make Winforms and WPF popular.
dang 22 hours ago|||
Since that article is a response to this one, we'll add a link to it in the toptext above. Thanks!
markus_zhang 20 hours ago||
Thank you!
CamperBob2 15 hours ago|||
Is there any way to get to the article without going through x.com? xcancel.com just says "Nitter doesn't support this feature yet, but it might in the future."
dejongh 4 hours ago||
Fun and sad. Garbage collected languages like .NET, Java, and Go are slow compared DIY languages like C, Rust, and Swift. So, no wonder the Windows team dislike them. However, it seems the Windows team had to live with a React start menu for quite some time. How does that fit into the over all battle between the teams and UI frameworks?
d-us-vb 3 hours ago|
That wasn't the issue. The problem was that most of Windows system utilities are not managed, but the WPF move was trying to make a patchwork quilt of managed vs. unmanaged utilities, making the entire system very difficult to reason about and introducing regressions constantly. From the Windows Team's perspective, the .NET people just made a mess out of everything they touched.

Perhaps if WPF really did stay at the presentation level, or used VMs or something to keep it away from the Windows core, it would have panned out better. But is it goes with "paradigm shifts", when a company thinks it has a great idea, it wants to suddenly do that great idea everywhere.

eqvinox 18 hours ago||
The answer is, clearly, Qt.

(This isn't even a joke. Assuming you're not going Electron.)

Part of the reason here is that it's their main business. They can't afford letting it languish and/or changing direction every 6 months.

ansgri 2 hours ago|
Which one? The classic QtWidgets, which implements consistent controls but sometimes talked about as deprecated (same as WinForms), or QML, which is "modern" and "actively developed" but does not provide native look and feel and requires (or at least used to require) a lot of manual work to support proper keyboard control and accessibility?
sirjaz 7 hours ago||
The biggest issue in my opinion is that Microsoft is chasing web devs. XAML is pita, just like css and html markup. They need to pick a lane and just use it. Allow other frameworks access to the default low level api such as Win32, but document it to the same level as Google does on Android and Apple with SwiftUI
mghackerlady 7 hours ago||
I actually like the idea of GUIs being represented in a markup (whether that be XML, QML, GNOMEs new Blueprint (which is kinda a markup language I think?) but I also thought display postscript was elegant so maybe I'm backing the wrong horse
hnthrowaway0315 6 hours ago||
I think the whole world sails on that ship and MSFT just wants to catch up. Their most darling developer tools since 10 years ago are mostly by web and for web: Typescript, VSCode.
kombine 14 hours ago|
I remember I was trying to learn GUI programming in late 2000s. I took an attempt at MFC but no matter how hard I tried, it just didn't make any sense. Then I found out about Qt 4 and it felt like magic immediately. I ended up working as a professional Qt software developer for 3 years.

Fast forward to now, and KDE Plasma is state of the art Linux desktop that I've been daily driving for years. It's also built on Qt.

More comments...