15 ms·
Microsoft hasn't had a coherent GUI strategy since Petzold
See also https://x.com/stevesi/status/2036921223150440542 https://x.com/stevesi/status/2036921223150440542 (https://xcancel.com/stevesi/status/2036921223150440542 https://xcancel.com/stevesi/status/2036921223150440542)
- kerv 6mo agoPetzold literally had the Windows logo tattooed on his arm. He was a true believer.
- PaulHoule 6mo agoThe 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 6mo agoYour 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 https://pwabuilder.com. Disclaimer: I work on this
- jemmyw 6mo agoI 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.
- skydhash 6mo agoThe 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 6mo 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 6mo agoThe 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.
- bigstrat2003 6mo 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.
- vscode-rest 6mo agoFigma is far superior to the native apps it replaced. As is VS Code. Slack.
- Anamon 6mo agoOne 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 6mo agoAsync 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 6mo agoTheir 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 6mo ago> As is VS Code. That is, uh, controversial. Along both "alleged replacement" and "alleged superiority" axes.
- tannhaeuser 6mo agoWindows 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(v=vs.85) https://learn.microsoft.com/en-us/previous-versions/ms536495...
- zanderz 6mo agoIt was decent, we shipped one but switched to .net because of high dpi scaling issues IIRC
- furyofantares 6mo ago> Dead silence. One person suggested WPF. Another said WinUI 3. A third asked if they should just use Electron. The meeting went sideways and we never did answer the question. > That silence is the story. These LLMs are just awful at writing.
- c-c-c-c-c 6mo agothat part really didn’t make sense to me. This is true for all desktop platforms.
- furyofantares 6mo agoI agree, although I was talking about: Dead silence. Here's what 3 people said (the opposite of silence). Then the meeting went sideways (also the opposite of silence). The silence is the story. WHAT SILENCE?
- avazhi 6mo agoHe immediately said they never did make a decision, so probably that indecision. Having said that, this article feels like AI slop to me. Couldn’t get through it.
- g-b-r 6mo agoJust have a look at the final picture if you're unsure if it's slop
- lynndotpy 6mo agoIn a more generous interpretation, there was silence, _then_ people said something. That makes sense. But "That silence is the story." is still a pretty telling non-sequitr, and it doesn't seem like the kind that comes from sloppy editing. The punchy "Thing. Thing. Thing." is used constantly. We see it constantly in this article: > 852 pages. Win16 API in C. > Message loops. Window procedures. GDI. > One OS, one API, one language, one book. But those are minor sins. But in the end of the article, Snover states that Microsoft pitched C++ in 2012. That's so incorrect! The contents of this blog post are at least partially falsified. Plus, the thesis statement is nonsense: > When a platform can’t answer “how should I build a UI?” in under ten seconds, it has failed its developers. Full stop. "Full stop" is a pretty heavy thing to end a nonsense statement with. How an inanimate software platform can "answer" things is not implicitly obvious, either. Is it a human representative? Are they the docs? Is it through a good UI? The post is about Petzold's / Reccold's "Programming Windows", but it is apparently 852 pages, so that certainly wasn't answered in under 10 seconds either.
- bananaflag 6mo agoThis barely mentions Windows Forms, which is the cleanest and fastest way to code Windows GUI apps. A few years ago, I wanted to prototype something quick and I wrote it in Windows Forms over C# (all code, no visual editor).
- formerly_proven 6mo agoWinforms is a Win32 API wrapper, so on the same level as MFC, not a separate UI framework.
- int_19h 6mo agoIt is a wrapper, but it's not quite on the same level as MFC. MFC really is a thin wrapper, almost 1:1 in most places. WinForms is more like VCL or VB6 in that it uses Win32 where it can but doesn't design around it, so in practice it's more high-level.
- Almondsetat 6mo ago>This barely mentions Windows Forms Apparently, you do too, since what you said is basically the same as what the article said (.NET wrapper for C#, fastest prototyping to date)
- tonyedgecombe 6mo agoI went from win32/C++ to Windows Forms and I got a huge increase in productivity and quality. It wasn’t all roses though, the high dpi support was atrocious.
- rwmj 6mo agoI always felt the problem with WinForms was the name. For many, many years I assumed it could only do forms (ie for data entry).
- grandpoobah 6mo agoI haven't touched it in years but I remember moving to WPF because it had a better answer for binding UI elements to data. But while WPF does have an answer, everything is so fucking verbose and clunky.
- markus_zhang 6mo agoSteven Sinofsky wrote this piece a couple of weeks ago about the same topic: https://x.com/stevesi/status/2036921223150440542 https://x.com/stevesi/status/2036921223150440542
- deleted 6mo ago[deleted]
- dang 6mo agoSince that article is a response to this one, we'll add a link to it in the toptext above. Thanks!
- markus_zhang 6mo agoThank you!
- int_19h 6mo agoIt'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).
- regularfry 6mo agoHaving 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 6mo agoIf 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.
- taylodl 6mo agoMicrosoft 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 6mo agowhat 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-from-win32-to-winui-3 https://vectree.io/c/evolution-of-windows-gui-frameworks-fro...
- binarymax 6mo agoGiven how bad windows has become since windows 7, I’ve been wondering. Does Bill Gates still use Windows? Does he put up with the horribleness?
- markus_zhang 6mo agoI think Bill pretty much chilled out since he stepped down?
- binarymax 6mo agoYeah of course. He has nothing to do with Microsoft operations or strategy. But does he still use the products?
- throwaway132448 6mo agoI couldn’t know, but generally speaking, older billionaires don’t typically interact with the world in the same way most of us do (well, those without a social media addiction anyway). The device is someone else’s problem.
- seanmcdirmid 6mo agoHe still visits Microsoft occasionally. A friend showed me a picture of him visiting Microsoft in Beijing a few months ago (he was excited about BillG visiting). So my guess is that he still has an interest in Microsoft products.
- calvinmorrison 6mo agoHe's mostly been hanging with Epstein and asking for people to buy him STD medication due to his endless trysts
- cjbgkagh 6mo agoHe’s still around as a part time advisor, he has to officially step back or no one would take Satya seriously, but on important stuff like AI he is a bit more active.
- Surac 6mo agoToday i still use C# with Windows.Forms. All my old knowledge is still usefull. People know how to use a Windows.Forms program.
- grebc 6mo agoIt’s great, some vendors have fantastic component libraries for reasonable prices. Unreal that MS bet the farm in Windows on so many other turds instead of boring old WinForms/Win32.
- whynotmaybe 6mo agoAs of today, I only use 2 solutions for Windows GUI : - windows forms in .net - flutter All the rest always presents itself with a sheer aura of "It was a great idea but we couldn't finish it". Without ever discussing with anyone from MS about it, I think they stopped improving/working on this because of electron. Any web developer can build a good enough website and a good enough desktop app with electron.
- mentalgear 6mo agoI'm planing on switching over to QubesOS - way more secure (especially considering rogue LLM-agents) and visually not much worse from windows ... maybe even more cohesive.
- TazeTSchnitzel 6mo agoI'm not sure I can take such an article seriously if it doesn't mention that the WinRT/UWP/WinUI stack is also based on XAML, and that a fundamental design goal of WinRT was to let people use either C++ or C# according to taste. Also, the AI smell in this article is just too much.
- goalieca 6mo agoThe writing style was really poor. Too many words saying too few things.
- luma 6mo agoEntirely AI. I just can't with this style anymore.
- OptionOfT 6mo agoCase in point after Edge updated this morning: https://imgur.com/a/dWp5Ohj https://imgur.com/a/dWp5Ohj Did they even try to make it look like the new context menus?
- okanat 6mo agoWell, Edge is Chromium. They need to maintain a hard fork, not just a reskin with a bunch of Microsoft webpages and adware. Chromium basically allocates a window and completely draws everything inside using DirectX APIs including menus.
- supliminal 6mo agoI used the more recent Petzold examples to successfully bind DirectWrite to Direct3D, but yeah it’s been a crapshoot otherwise. Still have the Windows Programming (5e?) bible around here somewhere. Took awhile to grind through it. I dread modern-day windows programming it seems like every OS release some new API is going to overtake the others. I moved on.
- fassssst 6mo agoIt’s web. Just use electron or Tauri.
- lenkite 6mo agoThe 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 6mo agoAt 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?).
- drob518 6mo agoNadella 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.
- gdhkgdhkvff 6mo agoNadella 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 6mo agoIn 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.
- steve1977 6mo agoThat illustration at the end of the article is quite something.
- g-b-r 6mo agoQuite some slop Has it become unreasonable to use an image editor for anything? At least to stamp some readable text on top of your slop??
- steve1977 6mo agoSometimes I really don't know whether to laugh or cry.
- lynndotpy 6mo agoThe slop-typos aside, "Jeffrey Snover" is just completely wrong all over his infographic. He's claiming Microsoft pitched "WitdFT" (sic), "HTMLAl5" (sic), and "C++" sonuitaneously (sic) at Build 2012. HTML5 was released in 2008 and the C++ reference was released in 1985. How is this acceptable?
- bediger4000 6mo agoWhat are you talking about? As a "Chrondum and frade.js" developer, I found it very flelpful.
- steve1977 6mo agoI for one am on the Mindows Seam, where I can enjoy the books of Charloy Reccold.
- api 6mo agoNobody really has. Apple comes the closest but they keep rug pulling it in weird ways. Windows and Mac in the 90s had very consistent GUIs with such consistency in things like keyboard shortcuts that apps could easily be learned. The term “intuitive” was king in the realm of UI design. Then the web hit and all that died.
- antiframe 6mo agoNot nobody. KDE has a functional and consistent GUI.
- lunar_rover 6mo agoThe problem with things from the Linux world is that they never reached the height of commercial desktops to begin with. If you really enjoy worse Windows XP UX with hamburger menus in recent versions then by all means go ahead, it does function.
- antiframe 6mo agoI thought we're not discussing whether we like one UI over another but whether an OS's UI was (internally) consistent. You may dislike KDE, but it uses it's design language all throughout the UI from window manager, the application launcher, the settings dialog, everywhere. Windows famously has three (or more?) styles of control panel UI. You may prefer that, and to each their own, but it is inconsistent, which was the topic of this thread.
- DrinkyBird 6mo agoKDE has the newer QML-based Kirigami and older Qt Widgets frameworks that are not consistent. Widgets apps absolutely look like actual desktop apps (menus, toolbars, dialogs), Kirigami apps look like mobile apps (nav bars, hamburger menus, page-based navigation). There is definitely a visual and functional inconsistency between the two, even if they use the same theme pretty well.
- WesolyKubeczek 6mo ago
- hermitcrab 6mo agoMicrosoft GUI development is a mess. They don't seem to care. Just look at the mishmash of different GUI styles in Windows 11. Thankfully I have been mostly insulated from it by sticking to Qt and C++ for the last 25 years.
- joezydeco 6mo agoQt/Win is enough to get the job done. Not always pretty, but it works. I used to be somewhat ashamed I never learned the actual Win32 API to write native apps, but now it looks like that was time saved. This is a great article.
- jpeter 6mo agoSo the windows team hates .NET, so they use react webviews and put them in explorer and start menu???
- praisewhitey 6mo agoThey use react native
- int_19h 6mo agoYou have managed to concisely summarize the progress of Windows UI development for the past 15 years, yes.
- arbirk 6mo agoI think that is an insult to MS Bob
- cosmotic 6mo agoThis is what happens when one's performance is measured by "impact".
- politelemon 6mo agoThis is a problem with all the OSes.
- antiframe 6mo agoI disagree. KDE and Gnome both have pretty consistent UI strategies. You may or may not like them but they have clear identities and design guidelines and follow them.
- hulitu 6mo agoGTK1, GTK2, GTK3, GTK4, GTK5. Qt1, Qt2, Qt3, Qt4, Qt5.
- antiframe 6mo agoYes, those are all different versions of the underlying widget frameworks. I don't understand your point. My current GUI is KDE Plasma 6.6. The only libraries I have installed are Qt 6 (which I am not sure why you didn't list). I have no need for version 5 or 4, or any other. The GUI is consistent. When I last used Windows, on a fresh install, I saw a mixture of different frameworks used for core OS components from the same vendor. When I last used OS X, it was pretty consistent but I hear complaints from friends that its no longer the case.
- kjellsbells 6mo agoI blame "Impact". That's what you are graded on at Microsoft. Every performance review ('Connect'), every stock award, every promotion run: did this person have that magical impact. Ostensibly, grading by impact is fine: they want people who make a positive difference. In reality, it means that creating is better than finishing. Now add in the cold realities that at any given time in Microsoft, some groups are on the up and some on the down. What's a great way for a group to regain some status? Launch something. Jazz it up for the Build or Ignite crowd. Get some dev evangelist to talk about it. Then get on the job board and slide over to another team ASAP. You're a High Impact person. Who wouldn't be happy to have you?
- snarfy 6mo agoIf my assigned tasks are A,B,C and I do all three 100% correctly, on time, etc, it makes zero difference on my impact. I need to ignore those and do D,E,F instead to get promoted.
- anthk 6mo agoOLE objects are just like disk images.
- rbanffy 6mo ago> From their perspective, gambling on a new managed-code framework had produced the most embarrassing failure in the company’s history Most embarrassing failure in the company’s history that far.
- deleted 6mo ago[deleted]
- pipeline_peak 6mo agoWhy tie your app to Windows at all? Microsoft developed VS Code and Teams in Electron. That says a lot about how they see the future.
- deleted 6mo ago[deleted]
- segphault 6mo agoIt's bad enough that Microsoft doesn't have a satisfying answer to this question, but what makes it worse is that WinUI feels weirdly non-native in ways that sort of uncomfortably result in Electron apps feeling more like real Windows applications. It's worth noting though that Apple is on a similar trajectory and is now in a very nearly as bad position given all the serious issues with SwiftUI and how badly it has fragmented/degraded Mac desktop application development. It's almost like the major desktop platform vendors have all given up on supporting high-quality native desktop applications.
- GeekyBear 6mo ago> It's worth noting though that Apple is on a similar trajectory and is now in a very nearly as bad position given all the serious issues with SwiftUI and how badly it has fragmented/degraded Mac desktop application development. Apple (and Next before it) have been iterating on Appkit/UIKit for three and a half decades. Now they have added SwiftUI as a second option and have been iterating on it for a bit over half a decade. This is in no way similar to Microsoft creating and abandoning another UI framework every couple of years. If Microsoft had been steadily improving Win32 all these years, where would it be today?
- teyc 6mo agoThe web revolution is to Windows UI what vibe coding is to programming today. It brought in a massive group of people who didn't need to understand message pumps, or handles or non-blocking api calls. On top of that, it delivered incrementally more capable result each year. View source taught millions how to build modals, blurred overlay. Meanwhile, the old group of programmers were still worrying about how to protect the knowhow behind compiled languages.
- bigstrat2003 6mo agoI agree with the thesis of your post, but where we differ is that I think both of those were (are) bad things. Both web apps and vibe coding are causing the market to be flooded with low quality software, not only making the market worse but also giving future generations fewer examples of well-made software to look up to.
- mrtksn 6mo agoI remember when ChatGPT exploded and Bing had it integrated, the idea was brilliant because unlike ChatGPT it didn't have information cut-off since it can access the web. I was very excited to ditch Google for AI chat with web access. How did MS actually implemented it though? After a few messages the chat is blocked because MS did not choose to walk the extra mile and maybe compact the context so that their product can be actually usable. Of course OpenAI, Perplexity and others later implemented that properly and its integral part of modern AI chat and I actually ditched Google for the most part. Had Microsoft done it, they might have had a shot in replacing Google and maybe becoming the AI Chat provider. But no, Microsoft can't have a well thought UI to provide a delightful UX. IMHO it's a culture thing. Lack of cohesion is a result of it, I used to be annoyed by Apple that doesn't allow to ship its own UI libraries together with the app so to support old versions etc. but Apple had it right, thanks to the limitations UI is coherent.
- 0x1ceb00da 6mo ago> Apple that doesn't allow to ship its own UI libraries You can just render on a canvas like flutter and KMP. Most end users don't care
- nusl 6mo agoThis article smells so strongly of AI that I'd be surprised if the author did much of any writing.
- boutell 6mo agoI found the article itself very informative and not particularly ai-tastic. But then I got to that infographic at the end. Holy smokes was that disappointing. It seems clear they didn't even bother to read the captions the AI scribbled.
- belkinpower 6mo agoIt starts out alright, and then ends with a pile of classic Claude-isms and an unreadable slop graphic. Like the author got bored of writing it halfway through.
- grandpoobah 6mo ago"Unreadable slop graphic" xD
- navigate8310 6mo agoThe summary of various frameworks and languages available is very concise and informative though.
- supliminal 6mo agoThere’s a poster on here who keeps posting and re-posting about their dinner with a Microsoft executive and how they were told Microsoft is all-in on enterprise. Waiting for that copy-paste to make its way over here. Microsoft keeps footgunning things so hard I think even enterprise might be reluctant to go with them moving forward [0]. I don’t have Netcraft numbers in front of me but I doubt things have notably improved even if they do have a strategy shift to enterprise which includes crapping all over Windows for no good reason. I’m personally glad FOSS is going strong but that’s a complete aside. [0] We got burned by Azure as I’m sure many other enterprises have, and they did exactly nothing to remedy/compensate the situation, SLAs be damned. At this point our strategy is to move off of reliance on any Microsoft/windows tech. We moved off of ActiveDirectory not too long ago. Bing/Edge/etc honestly who cares.
- mapontosevenths 6mo agoMicrosoft was so focused on the enterprise they forgot that enterprises are made up of individual users. Any trade-off that favors the enterprise in lieu of the user actually benefits nobody in the long term.
- mohamedkoubaa 6mo agoThe end state of genAI is that the end user is the enterprise
- Krssst 6mo agoThe end state of genAI could as well be a few billionaires being their enterprise and everybody else being unemployed or working at the factory. Robots are not there yet (far from it) and someone needs to build and maintain the thing as well as food for everyone. High unemployment could drive salaries down and make lots of thing unavailable to the common people while making humans cheaper than automation for boring manual work. That's an extreme scenario but today's politicians are not very keen into redistribution of wealth or prevention of excessive accumulation of economic power leading to exceeding the power of the state itself. I see nothing preventing that scenario from happening.
- hyperrail 6mo agoBoth this blog post and the Steven Sinofsky response really set my blood boiling, because they both reek of retired-executive score settling, a kind of blame game that gets played out decades after the fact between ex-high-ranking people in hopes that whoever writes last is able to cement the conventional wisdom. People who play this corrosive game either refuse to believe that they are at fault for not changing what they were doing at that time or speaking up about what they were observing then, or they know they're at fault and want to deceptively distract us from that fact. Either way, ask yourself this: "Aren't they sorry?" If they're not, just move on.
- ack_complete 6mo agoThe most offensive part of the Sinofsky response is this part: > WinRT (2012) - it (or the embodiment in Windows 8) failed in the market but it also showed both the problem and potential solution to building for new markets while respecting the past I can't express how wrong this is. WinRT was the most destructive thing that the Windows team ever did to the OS. It drove a hard stake into Windows, splitting it in half and declaring that anything previous to Windows 8, oriented toward desktop, or using primary input through mouse and keyboard over touch was dead. Microsoft basically told all existing Windows developers that if they weren't building a new, touch-oriented, mobile-style app specifically for Windows 8, they didn't matter and wouldn't get any support whatsoever, which is exactly what happened every time they broke existing desktop functionality. Calling this "respecting the past" is a crass insult and taking no responsibility for damaging the Windows development experience and accelerating development away from native Windows apps.
- WorldMaker 6mo agoI think for Sinofsky the "respecting the past" refers more to WinRT was/is still just Spicy COM under the hood. Most of the article as I read it is about how .NET was a mistake for Windows UI development and a return to (Spicy) COM its savior.
- ack_complete 6mo ago
- baud9600 6mo agoAt Redmond, there was also the Patterns & Practices group (P&P) that tried to make sense of the dev products, and built extra libraries “to show customers how to use them”. They followed the bouncing ball of the frameworks releases from the main development teams. It suggests that it wasn’t clear exactly how you’d use the main products: so P&P said, ‘try it like this.’ I also think the article didn’t say much about MS in the web era. The company survived webdev IMO, but it definitely wasn’t the leader
- HumblyTossed 6mo agoI very much dislike WPF. If I have to do a windows UI (and usually when I do it's a simulator for some piece of hardware), I honestly just grab WinForms. It's stupid simple.
- Surac 6mo agoSame here. Also the benefit of a visual Editor in Visual Studio is just Premium. Windows.forms also allow all those „modern“. Takes on ui either with ownerdraw or some grids/hand layouting.
- nullbyte808 6mo agoI would bet in Avalonia UI. It's like WPF but cross-platform. https://avaloniaui.net/ https://avaloniaui.net/
- topspin 6mo agoSDRPlay is using Avalonia for its SDRConnect desktop UI. That's the one native application based on Avalonia I've spent significant time in. It's ok. I give it pretty high marks. There is a good deal of "lowest common denominator" in it, naturally due to cross platform abstraction. But, it's generally nice, and commercial licenses are affordable.
- senfiaj 6mo agoFor some reason I associate this with this article https://blog.hiler.eu/win32-the-only-stable-abi/ https://blog.hiler.eu/win32-the-only-stable-abi/
- barrkel 6mo agoWindows frameworks got web envy. Xaml and styling and all sorts to try and compete. Trouble is, it made desktop development harder, and it didn't win against the web. It left the simple and safe formula of standard and common controls for a designer's playground, but the designers preferred the web. And if you make something for the web, you can package it in Electron and get cross platform cheaply.
- dev1ycan 6mo agoStarting with Metro every Windows UI framework has been beyond ugly. there's just something so backwards over how nice the UI was in Windows 7, I simply can't understand it.
- lunar_rover 6mo agoMetro was created partly to run smooothly on cheap Atom tablets and Windows Phones. Then Microsoft shifted their focus elsewhere and iOS 7/OS X Yosemite happened so they have all the reasons to stay flat. Updated apps look fine, but the majority aren't. And with that bizarre "Show More Options" nesting in the Windows 11 context menu it almost seemed like Microsoft is no longer capable of upgrading old components in place.
- fg137 6mo agoWorth mentioning a discussion on a similar blog post two weeks ago; Windows Native App Development Is a Mess https://news.ycombinator.com/item?id=47475938 https://news.ycombinator.com/item?id=47475938
- Retr0id 6mo agoA decade or so ago, I had a clear idea of what a "native ui" should look and feel like, even if there were multiple routes to get there. I don't know any more.
- zer0zzz 6mo agoCouldn’t someone do a similar story about scripting on windows, and make Jeffrey Snover one of the punchlines?
- brookst 6mo agos/\sGUI\s/\s/g
- userbinator 6mo agoThe tl;dr is basically to stay with Win32 and ignore all the new and shiny. That AI image at the end was more amusing than informative. Almost lost it at "Win15" and "Chrondum + frade.js".
- garganzol 6mo agoThe UI strategy of the future may very well be HTML. It's widespread, standardized, sufficiently performant, and pretty rich. What's still missing is deeper integration with native OS concepts and programming languages other than JS. Frameworks like Electron are a step in that direction but they come with notable drawbacks. Applications often struggle with things that should feel natural like managing multiple OS-level windows. Another PITA: Electron apps repeatedly bundle large portions of Chromium, leading to unnecessary overhead. Those duplicated modules lead to bloated RAM usage: every app has its own Chromium copy and OS must keep all that zoo in RAM without a possibility of reusing the otherwise shareable parts.
- bigstrat2003 6mo ago> sufficiently performant In no universe is HTML performant compared to actual desktop applications. It sucks big time.
- w4yai 6mo agoI've been hearing that for 10+ years. This is not going to happen.
- garganzol 6mo agoThis has already happened de-facto. Optimize it properly, and the whole problem disappears.
- lazide 6mo agoHTML and CSS are also absurdly hard to actually do anything useful with or interactive compared to normal desktop or app frameworks. Orders of magnitude more BS, plumbing, awkwardness, head scratching, etc.
- garganzol 6mo agoThat was indeed a pain point, but not anymore after CSS flex layout became available some 10 years ago. It's not worse than WPF for sure. It's even better than WPF because you have access to tons of UI components and toolkits that work everywhere.
- mwcampbell 6mo ago> WPF was good As someone who saw what impact WPF had on average users running average hardware in the late 2000s to early 2010s, I disagree. In 2011, my brother was in seminary, using an average Windows Vista-era laptop that he had been given in 2008. When he was home for Christmas in 2011, we were talking about his laptop, and he told me that the Logos Bible software ran sluggishly on that laptop. He said something about how, for reasons unknown to him, the current version of Logos required advanced graphics capabilities (I forget exactly how he phrased it, but he had learned that the slowness had something to do with graphics). Bear in mind, this is software that basically just displays text, presumably with some editing for adding notes and such. At the time, I just bought him another laptop. A few years later, I happened to read that Logos version 4 was built on WPF. Then, remembering my brother, I found this Logos forum thread: https://community.logos.com/discussion/6200 https://community.logos.com/discussion/6200 This shows that Logos users were discussing the performance of Logos on machines with different graphics hardware. For a program that was all about displaying and editing text, it shouldn't have mattered. WPF had made a bet on then-advanced graphics hardware for reasonable performance, and that was bad for these users. And that's just the one example I know about.
- rincebrain 6mo agoI would argue that was less that WPF was the wrong life choice and more that Microsoft shouldn't have bent the knee to Intel's antitrust push to say their crap hardware was sufficient. [1] [1] - https://arstechnica.com/gadgets/2008/03/the-vista-capable-debacle-intel-pushes-microsoft-bends/ https://arstechnica.com/gadgets/2008/03/the-vista-capable-de...
- bombcar 6mo agoApple had been doing GPU-accelerated GUIs since the early NeXT days; it was certainly possible on hardware weaker than what Vista required.
- runjake 6mo agoMinor correction: Apple introduced GPU-accelerated GUI in 10.2 with the introduction of Quartz Extreme. Display PostScript did not have GPU acceleration, as far as I know. https://en.wikipedia.org/wiki/Quartz_Compositor?#Quartz_Extreme https://en.wikipedia.org/wiki/Quartz_Compositor?#Quartz_Extr...
- deleted 6mo ago[deleted]
- eqvinox 6mo agoThe 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 6mo agoWhich 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?
- psychoslave 6mo agoMicrosoft itself is a business driven by a consistent strategy of striving for market dominance no matter the means. looking for coherence in the resulting DX is missing the forest for the tree.
- MarcelinoGMX3C 6mo agoThe deeper problem is that Microsoft keeps trying to solve GUI consistency at the framework layer instead of the design system layer. WinForms, WPF, UWP, WinUI -- each one a new framework, each one eventually abandoned. Apple solved this by treating the design system as the product and letting the framework be invisible. Microsoft has it backwards every time.
- gunsle 6mo agoInsightful comment
- GaProgMan 6mo agoI agree. Except that WinForms has not been abandoned. In fact, it's one of the supported paths in the modern .NET stack.
- Dwedit 6mo agoWinForms is a layer built on top of raw Win32. So it's not portable. Even though Wine exists, Win32 calls can only be made from Win32 programs, not native Linux programs. So a WinForms app using the latest dotnet would need to run the Windows version of dotnet under Wine, and not use the Linux version of dotnet.
- DeathArrow 6mo ago>WinForms is a layer built on top of raw Win32. So it's not portable. Neither are SwiftUI and AppKity.
- pjc50 6mo agoTrue, but: Microsoft haven't made a better UI framework that's portable to Windows yet. Everything after WPF has near zero adoption, including (critically important!) by Microsoft itself.
- anthk 6mo agoMono used to have libwine embedded. You know, libwine exists as a library running and compiling Win32 natively under Unix. Instead of PE binaries you would run ELF Linux ones, but with nearly the same outcome.
- jowelene 6mo agoMicrosoft has a very coherent strategy, described aptly in "fire and motion" by Joel spolsky 24 years ago: keep changing the API/GUI every 2 years: https://www.joelonsoftware.com/2002/01/06/fire-and-motion/ https://www.joelonsoftware.com/2002/01/06/fire-and-motion/
- hacker_homie 6mo agoI feel this so hard. It's all win32 underneath except for UWP, which is now deprecated. so the answer is win32, raw winproc. The issue is they haven't made a new GUI API (only frameworks) since win32.
- hacker_homie 6mo agoTo add the UWP APIs were always less than the win32 ones in the name of security. The issue was they didn't give you an alternative they just said don't do that. so inevitably at some point you decide to just write it in win32, don't ship in the store, etc so you can get things done.
- snarfy 6mo agoIf an app has a zip download or a Microsoft Store link, the zip download is always a superior experience. UWP is a huge fail
- dartharva 6mo agoHere's how I think Microsoft can get a quick and sustained longterm win in GUI (/s but only partially) - 1. Drop all its GUI stacks apart from legacy Win32 2. Port KDE Plasma to Windows (with aliased bindings to support traditional explorer.exe calls so as to not break user apps) That's it. There really aren't many significant apps that use the rest of Microsoft's stack apart from Win32 that won't recover from this, and Microsoft itself will just see a massive drop in its own costs with a massive rise in user satisfaction.
- keithnz 6mo agofunny thing is, with AI, it's become really easy to put win32 apps together, and they load fast and are super responsive!
- jeswin 6mo agoMicrosoft's biggest mistake was .Net being a Java competitor when it should have just been like golang producing native binaries. Especially since .Net was realistically only going to succeed on x86/64 at that point (late 90s and 2000s). This shut the door on C# for consumer UIs, and people stuck to Visual Basic and MFC. It took them more than 2 decades to finally support pure native binaries (via NativeAOT). And it's fantastic for servers on Linux.
- donatj 6mo agoThe problem was in the early 2000s it was basically accepted x86 was a dead end whose days were numbered. Itanium was the heir apparent but importantly basically vaporware. How do you develop software NOW and more importantly sell and ship software NOW that'll work on a CPU you don't have access to and for which good compilers don't really exist yet? I remind you in the days where online updates were a luxury at best. Processor agnostic CIL/JIT code was the prescribed solution at the time. Java had lit the way, and it was the only "clear" path forward for better or worse. Little did we know Itanium would implode, and x86-64 would rise and give 20+ more years of binary compatibility.
- randomfool 6mo agoThey were recovering from all of the security fiascos of software that wasn’t being updated. So they pushed as much as they could into the core libraries and forced only one version to be installed at a time- so they could easily push security fixes. This led to one of the trickiest things for early .NET consumer apps- getting the latest runtime installed.
- d--b 6mo ago> WPF shipped in late 2006. It was remarkable – XAML, hardware-accelerated rendering, real data binding. If Microsoft had made it the definitive answer and invested relentlessly, the story might have ended differently. Er… The author perhaps never used it? WPF was the worst framework I ever used. It was unbearably verbose, brutally unforgiving, used 2-way bindings that created updating nightmares, ans not the least it was incredibly slow. WinForms was not the best for sure, but at least you can get stuff done. It was for a long time the right answer to the question the author asked. .Net + WinForms worked well. When WPF shipped was when the shit hit the fan.
- tonyedgecombe 6mo agoAll that and they abandoned it at birth. It never felt finished and got little to no attention for years.
- moogly 6mo ago> XAML This is the common thread of all their frameworks since, and in my mind the reason they are stuck in an absolute quagmire. For a while it was possible to use HTML/JS in UWP (I think), but it didn't stick due to everyone already needing to move over their LOB apps with crazy amounts of XAML so that's what the focus was on. "Hey, let's make something that's vaguely HTML but not really at all." Big mistake. Avalonia and Uno are repeating that mistake, even though with Uno, at least, there's a blessed way to do unidirectional data flow/reactive stuff. Two-way data binding is the devil.
- sharts 6mo agoThis will never change. All large orgs are this way because at the end of the day, unless its preventing them from making profits, there is no incentive to change it. Moreover, there isn’t much in the way of alternatives. Everyone likes to hate on MS —for decades this has happened and nothing came of it.
- dataflow 6mo agoWPF was atrocious from the beginning and Microsoft absolutely did the right thing by not basing everything in Windows on it. Every WPF program was laggy and took ages to even start up (is everyone forgetting hard disk speeds?), partly due to it being managed code. The components didn't feel native either, and the coupling to managed code and garbage collection basically ensured all those would be perpetual issues. Yeah the programming model was beautiful and all, but you're supposedly developing to make your customers happy, not to make yourself or computer scientists happy. You can see how terrible it would've been to base Windows's shell on WPF by looking at how much users have loved the non-Win32 windows since then.
- tonyedgecombe 6mo agoI’m not sure I would blame the problems of WPF on managed code. After all we had snappy WinForms applications before WPF came along.
- dataflow 6mo agoKind of yes, kind of no: - WinForms applications also took visibly longer to load than Win32. I didn't dread loading them nearly as much as WPF, yes, but I still did. They weren't what I'd call "snappy", but they were... usable enough. - WinForms also stuttered (in my experience) with the GC. Again, not "snappy" in my experience, but this was more dependent on your use case. - WinForms were .NET 2.0 rather than .NET 3.0, with fewer modules to load. It certainly felt more lightweight, which from my memory (of how the hard disk behaved) correlated with that.
- eviks 6mo ago[dead]
- blabla1224 6mo agoWhile reading all these comments I keep asking myself if these are the same people who would get angry at another Election app because someone was lazy and didn’t make it native.
- usrbinenv 6mo agoI was recently exploring "an OS from scratch" architecture with ChatGPT. Apart from the central idea that I wanted it to be a capability OS, I also started thinking about how I'd make GUI apps and what layers would naturally make sense. The cleanest design I came up with works like this: 1. At Layer_1 OS provides panes or windows to which apps can render whatever graphics using OS gpu lib (think Raylib, but maybe a bit simpler). This is good for apps that want performance, games, text editors, things like that - so this is maximum control. 2. Next Layer_2 would be based on the browser engine (which, to some degree, would have to be developer - not a full browser, but just enough to render more or less modern html/css with a DOM-aware JS engine). Then provide some XML schema that would automatically translate into HTML/CSS to render various UI-widgets (defined by XML/HTML elements). This would eventually suggest a JavaScript UI framework on top, but no a requirement. This layer is flexible enough that it uses widgets defined by the system, but allows custom CSS and JavaScript. 3. Layer_3, or more like Layer_2.5 would basically allow custom HTML/CSS without relying on system widgets and XML schema. Obviously you can mix all three layers into one GUI too. Finally layers (2) and (3) would require some client/server architecture, but instead of shipping it like a webapp, I'd probably provide some JavaScript API to talk to the backend (which in this case is accessible via a socket of some sorts). Apps themselves could still be single binaries that include html/css/js assets which are provided at launch time to the system UI renderer, which then uses them to render the UI via a webview in said pane or window. I think it's pretty slick and it only gets complicated gradually, but it also requires solid OS plumbing and machinery to make this process smooth. None of the modern systems are capable of it in the way I described it, so people end up shipping nodejs/react apps with webview inside gigabyte-binaries.
- ahartmetz 6mo agoL1: Wayland, L2: QML / Slint / XAML etc, L3: Yes, these allow custom widgets
- dinkumthinkum 6mo agoAnyone else sit through one of those Microsoft "Project Reunion" and wonder "what the hell is even this?" Microsoft has had a completely confusing UI strategy for years.
- scorpionfeet 6mo agoOne could argue the 17 solution summary is actually correct? Why should an os be limited to just one way of doing things. I don’t believe my own words 100% but it is a thought that maybe diversity is the eventual outcome. Ubuntu and MacOS are kinda fighting the same battle. Is that just the way it is?
- avmich 6mo agoMS Windows is walking joke for at least a decade, UI consistency isn't it biggest problem. Unfortunately both Linux and MacOS have their own deeply seated issues. This leaves users in an unenviable situation and encourages experimenting, with AI encouraging more and faster attempts. When AI are getting better... I hope this question will become unimportant sooner rather than later.
- kombine 6mo agoI 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.
- WhereIsTheTruth 6mo agoEvery year the same debate, every year the same Microslop apologists in the comments, every year nothing ever changes, every year Microslop's market cap keeps groing, every year the same problems Microslop should have been dismantled decades ago, it's now too late, we need a paradigm shift so that Microsoft no longer affects our society
- tonyedgecombe 6mo agoEvery year Windows loses a little more market share.
- gherkinnn 6mo agoI had the displeasure to work with various MS systems over the years and coherence is not a concept in Redmond. It just isn't. The layers of outdated and conflicting documentation, fragmented logins, the naming (365, live, .net [both naming everything that and the .net core naming labyrinth], copilot), Teams never made sense, Windows had levels and levels of settings (win10 preferences all the way back to dialogs predating the mammoth). MS was, is and always be a blight upon this earth.
- bob1029 6mo agoWinforms is still compelling to me. Now that we have WebView2, building complex hybrid apps is trivial. I know I could easily go pure web, but something about having proper native chrome feels better as a user. All of my clients/users are on windows so I stopped fighting this battle years ago. I've recently been using .NET10 + Winforms + WebView2 to build custom ai assistants for others. I cannot imagine how much it would suck to iterate the presentation of a conversation history in pure win forms. The hybrid stuff is crazy productive.
- PeterStuer 6mo agoAs an outsider, it always felt that 'internal team politics' were the root cause of Microsoft's technological downfall. This went far beyond the GUI. In 'flagship' offerings like SharePoint or Skype/Lync/Teams you could see the unmixable partial code-bases brutally forced together under a single product name an foisted upon a user-base baffled by how this could have gone so wrong.
- rhet0rica 6mo agoA single product name, you say? COPILOT, COPILOT, COPILOT!
- wg0 6mo agoJava wanted to run your code everywhere so they basically wrote a byte code compiler and then wrote one vm per OS/architecture I never understood.NET's purpose. What problem it exactly went out to solve? Did Microsoft want developers to be able to run their applications everywhere too? Absolutely not. Sidenote - MFC is the ugliest thing you'll see. Yet they didn't mention another piece of work called ATL. Active Template Library. WinForms were really decent and that was enough. Keep Win32 API and a managed wrapper around it as WinForms and that would have been more than enough. .
- AdvancedCarrot 6mo agoI think the answer is simple - they wanted to Sherlock Java.
- emddudley 6mo agoFor others like me that didn't know the term Sherlock: It means "To obsolete a unique feature in third-party software by introducing a similar or identical feature to the OS or a first-party program/app." The term stems from Apple's 2002 release of Sherlock 3, which made a popular third-party app named "Watson" irrelevant. https://en.wiktionary.org/wiki/Sherlock#Verb https://en.wiktionary.org/wiki/Sherlock#Verb
- simonask 6mo agoFWIW, x86 has always been a pretty moving target with many instruction set extensions, especially for various SIMD features. But even something fundamental like `popcnt` has a separate CPUID flag, even though Intel considers it part of SSE4.2. Targeting the broadest possible variant of x86-64 limits you to SSE2, which is really not very capable outside of fairly basic float32 linear algebra. Great for video games, but not much else. Also keep in mind that .NET originated right at the cusp of x86-64, which again is a whole different architecture from its 32-bit predecessor. Most native apps used to ship separate binaries for years. And of course, I think Microsoft was aware of their intrinsic dependency on other companies, especially Intel. I can see how the promise of independence was and is enticing. They also weren't interested in another dependency on Sun/Oracle/whoever maintains Java at the moment. While Windows on ARM64 is still in a weird spot, things like .NET are useful in that transition. Lastly, the CLR is different from the JVM in a number of interesting ways. The desktop experience with the JVM is not great, and Java is a very bad language. It makes sense to do your own thing if you're Microsoft or Apple.
- nurettin 6mo agoHonorable Mention: Lazarus
- DeathArrow 6mo agoAt this point I don't get why they don't open source Windows and developer tools, make a foundation to steer the code, accept contributions and borrow ideas from other operating systems.
- tonyedgecombe 6mo agoOne of their problems is borrowing ideas from other operating systems. Windows is full of Apple envy whether the addition made sense or not.
- gt0 6mo agoWhen 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.
- rwmj 6mo agoLinux 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 6mo agoAlso, being KDE native means using QT which is a good cross platform toolkit anyways.
- iamcalledrob 6mo ago...but then feeling out of place on GNOME / GTK4 / LibAdwaita-land Linux is a mess, but at least it's unapologetically so.
- mikkupikku 6mo agoThey'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.
- rwmj 6mo agoPetzold is a legendary programmer. His book Code is worth reading: https://en.wikipedia.org/wiki/Code:_The_Hidden_Language_of_Computer_Hardware_and_Software https://en.wikipedia.org/wiki/Code:_The_Hidden_Language_of_C...
- shiandow 6mo agoWhat I find must puzzling is that everyone seems to just be violating basic rules that had been in place for ages. Things like: - If you can't respond to a UI event wait until you can - Menus should be tree structures - Pressing alt should underline the hotkeys you need to access anything clickable As well as just basic responsiveness or predictability. A 2000 era windows application may not have been pretty, and may well have several different styles all imitated from office, but at least I knew what everything did and when it was slow at least it did what I expected. This meant I could start the computer, log in, potentially start and use several applications and only then turn on the screen. Nowadays that has no chance of working because even to log in I need to press enter or click some button (which one depends on how I logged in previously, maybe) before I can even start typing and doing so eats a random amount of keystrokes while the damn log in screen loads to do its one damn job.
- iamcalledrob 6mo agoWe've ended up in a world where power users have been forgotten. Not out of malice, but out of a misguided aim to reduce complexity and achieve consistency with the web. I would argue that desktop is the platform for power users, and its future depends on them. The keyboard shortcuts, the micro-interactions, the window management -- this stuff is all important when you're using a system for 8+ hours per day. Yet we risk desktop experiences becoming less useful due to the UI becoming "dumber" as we keep shoehorning websites onto the desktop. Website UI is dumb. It's mouse driven, keyboard is an afterthought. There's no consistency, and you have to re-invent the wheel every time to get the details right (almost never happens).
- tomrod 6mo agoThis is why, for me, year of the Linux desktop was 2008. It's been atrocious since then.
- marcos100 6mo agoMozilla removed a lot of power-user features and customization from Firefox claiming that their telemetry showed that few users used them. That's the reality now, nobody wants to develop and maintain things for the 1%.
- fareesh 6mo agoThe root of the problems seems to be trying to find a holy grail design that works across all their businesses. Surface tablet mode, touchscreen laptop, touchscreen desktop (surface studio), mouse and keyboard PC, stylus input, etc. Then there's a lot of legacy stuff that needs to continue working because otherwise you end up with a non backwards compatible windows. Then you have to get everyone at microsoft across all their bajillion products to change the UI from Task manager to the 5th level of settings for some obscure ODBC connector. It's not going to happen I suspect
- redbell 6mo agoThis 2018 video from TechAltar discusses the same topic: Why Microsoft Can't Design A Consistent Windows (https://youtu.be/hn5QjtpjW_U https://youtu.be/hn5QjtpjW_U)
- shevy-java 6mo ago"I looked at the presenter like they had a rat’s tail hanging out of his mouth for the entire hour." Could have been Ballmer getting a quick snack in before anger-presentation.
- iamcalledrob 6mo agoDesktop, especially Windows, is such a mess. It's 2026. We're running 8+ cores and 32gb ram as standard. We can run super realistic video games at high frame-rates. Yet on the same machine, resizing a window with rectangles in it is laggy on every platform except macOS (where there's a chance it's not laggy).
- hu3 6mo agoSorry but neither Linux or Windows lag to resize windows in any of my 4 machines. They range from old laptops to a Ryzen 7 9800X3D workstation. Just yesterday a friend's father needed help setting up their second-hand old laptop with an old i5 processor. I slapped KDE and there was no lag to be seen. Bonus point that Windows and some Linux distros have sane, intuitive window management. Whereas with macOS I keep seeing someone suggesting some arcane combination of steps to do some basic things with replies to the effect of "OMG thank you so much, this needs to be known by more people!!!"
- brennanpeterson 6mo agoMy work laptop will stall on resize constantly, and I suspect it is due to the mess of security and backup software. Windows does have an ecosystem problem. I am also baffled by the multiple control points. I can log in to mail in 3 places. Settings have 3 with different uis....it is gross.
- Topfi 6mo agoI see frame drops when opening the start menu on a clean Windows 11 install on my work laptop (Intel Quad with 32GB memory from two years ago). I have seen the same on 3D Vcache Ryzens on systems from people who claimed there was not lag or sluggishness. It was there and they saw it once pointed out, the standards for Windows users have simply gotten so low that they’ve gotten used to the status quo. On MacOS, meanwhile, Finder refuses to update any major changes done via CLI operations without a full Finder restart and the search indexing is currently broken, after prior versions of Ventura where stable functionality wise. I am however firm that Liquid Glass is a misstep and more made by the Figma crowd then actual UX experts. It is supposed to look good in static screenshots rather than have any UX advantage or purpose compared to e.g skeuomorphism. If I may be a bit snarky, I’d advise anyone who does not see the window corner inconsistencies on current MacOS or the appealing lag on Windows 11 to seek an Ophthalmologist right away… KDE and Gnome are the only projects that are still purely UX focused, though preferences can make one far more appealing than the other.
- SkunFly 6mo agoThe slop image at the end made not read anything in this article.
- raincole 6mo agoThe funny thing is that Joel Spolsky predicted most of it 20 years ago[0]: >> Jon Udell found a slide from Microsoft labelled “How Do I Pick Between Windows Forms and Avalon?” and asks, “Why do I have to pick between Windows Forms and Avalon?” A good question, and one to which he finds no great answer. And: >> Which means, suddenly, Microsoft’s API doesn’t matter so much. Web applications don’t require Windows. What he didn't see is, however, Azure would become the money printer for Microsoft and made all these no longer matter. [0]: https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost-the-api-war/ https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost...
- scotty79 6mo agoI stuck with WinForms. It was the last tech that made your app look and feel like Windows app. Everything that came later was basically a struggle to make something that Electron actually delivered.
- nightrate_ai 6mo ago[dead]
- rigonkulous 6mo agoMy 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.
- SyneRyder 6mo agoThat 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 6mo 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 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/ https://github.com/sudara/awesome-juce/ JUCE is marvelous, and awesome-juce is awesome.
- alkonaut 6mo agoThe roadmaps look messy if you look at them as coming from one company. But if you remember that windows and .net (or DevDiv) are more like competing companies then it makes more sense. Then for one side it’s Win32, MFC, WinSDk and for the other it’s Win32 (WinForms), WPF, MAUI If Microsoft hadn’t been preoccupied with a failed mobile bet then this wouldn’t have happened. It’s a lost decade followed by a (much more successful) cloud pivot. The reason desktop is ignored is because it can be. No one is eating their lunch on desktop.
- ZuLuuuuuu 6mo ago2 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.
- adabyron 6mo agoStrong 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.
- sdwr 6mo ago
- kwar13 6mo agoReading this was such a trip. I remember "Programming Windows" had to bribe my uncle to buy it for me. I built my first app using it.
- amai 6mo agoTo quote Steve Jobs: "The only problem with Microsoft is they just have no taste. They have absolutely no taste. And I don't mean that in a small way, I mean that in a big way, in the sense that they don't think of original ideas, and they don't bring much culture into their products. "
- deleted 6mo ago[deleted]
- amai 6mo agoI would recommend Flutter, if Google would not have abandoned it. 12000 open issues on GitHub speak for themselves.
- Zigurd 6mo agoNot just Windows. If you use an Android smart phone (and it might be just as bad on iPhone I just don't know) you see AI features occupying the last scraps of user interface real estate in the form of edge gestures that half the time get me an unwanted AI overlay UI when I was looking for the app switcher. Steve Jobs is spinning in his grave, and the people who authored the original Mac UI guidelines are cringing. Nobody seems to be willing to say that there's no room at the inn, or that somebody's idea has to get evicted before a new idea can occupy space.
- sirjaz 6mo agoThe 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 6mo agoI 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 6mo agoI 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.
- chrisjj 6mo agoHas anyone tried turning Microsoft off and on again?
- 2OEH8eoCRo0 6mo agoThey have a strategy of adding as many dumb slow abstractions as possible so the multi trillion dollar company can minimize the devs on their payroll.
- geekraver 6mo agoWow, totally ignores the one framework Microsoft developed that was actually a pleasure to use (WinForms). Avalon sucked IMO; it was just a continuation of the fever dream at the time of making everything XML (or XAML in that case). MFC sucked because it was C++. WinForms was that brief Window of “modern programming language with simple, elegant GUI framework”. I know it’s not a popular opinion, and I am sure there were reasons Microsoft abandoned it, but that was a brief few years when I actually enjoyed building GUIs on Windows.
- skeeter2020 6mo agoWinForms apps always felt "tight" compared to all the other options (the development experience and the end product), and there were lots of 3rd party controls available. If you were building windows desktop app in the early .NET days it sure seemed like the way to go, and those apps lasting so long looks like a supporting data point. EDIT: just dug out a "memory magic" winforms app I wrote sometime in the early 2000's and ran it no problem, no weird looking non-native UI or long electron startup...
- dangus 6mo agoIDK, it kind of sounds like from the article's own prose that Project Reunion / WinUI 3 is an overall good thing and that Microsoft actually does have a pretty good vision for the past 5 years at least. From a user's perspective, I don't really see where the problem is. All my apps look like Windows apps to me, and I also think that includes apps that do their own thing and look their own way. For as long as Windows has been around we've had apps that just don't follow the rules, from RealPlayer to WinZip to iTunes to Spotify. This idea that all applications must be consistent with each other on one platform is generally a good idea but the downside of not having it that way is not very tangible to most users. E.g., Steam looks different than every other Windows app. Same with Spotify and Slack and Discord. How does that negatively impact users? Well, not really at all. The consistency is within those apps themselves. I'm comfortable with Steam because I've been using it for 20 years and it's evolved on its own terms. I could see it being an accessibility problem, but can't figure out any other potential downside. I also don't think any other platforms have this figured out. See the window corners in macOS Tahoe. Remember how Mac Catalyst apps first looked when that came out? They didn't follow OS conventions at all. Remember when Final Cut Pro 6 didn't look anything like a Mac app? Or GarageBand etc. and their skeuomorphic looks? Linux is no better with a mix of desktop environments, Wayland versus Xorg, etc. Then we look at mobile apps and it's one of the least consistent environments imaginable: you've got a mix of native and frameworks like React Native and Flutter and the rest.
- bvan 6mo agoWPF marked the end of well thought-out UI’s and standards. It’s been web-inspired slop ever since.
- VirgilShelton 6mo agoI used to be a software test engineer at Microsoft in the late 90's and early 2000's. What I learned is that 60% of their business was International because of their language support. Also most of their customers are business customers locked in to using their Windows Server Domain system for corporations. These corporations also run office and Sharepoint and build custom apps using office. This is why they have so many different ways to build apps on Windows. We are not the users they are targeting, they target the enterprise.
- hluska 6mo agoOh hey look, another chance for HN to dunk on Microsoft. I’m sure there will be some fresh new perspecti…oh darn, it’s just a rehash of the exact same snark the last time HN had a chance to dunk on Microsoft. I’m not sure what Microsoft can possibly do when the closest thing to a collection of power users is this painfully repetitive.
- ghelmer 6mo ago> I sat through a conference session in the late nineties trying to understand the difference between an OLE document, a COM object, and an ActiveX control. I wonder if we attended the same conference session!
- dejongh 6mo agoFun 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 6mo agoThat 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.
- moochamerth 6mo agoA couple of years ago I played a bit with Go and Win32. I got to the point that I could create windows and controls, and had a basic message loop working. I then started dabbling in painting in non-client areas. It was buggy and didn't work well (my fault), but then I could see 2-3 different Windows UI styles competing to draw the window chrome. The amount of crumbs hidden under the Windows carpet is incredible.
- damnitbuilds 6mo agoGood tech solutions need ONE champion. Jobs, Musk, Edison, whoever. Someone who will enforce their design decisions, get stuff done. And take the hit when they are wrong.
- petermcneeley 6mo agoTalk about UI without pictures!
- iask 6mo agoI stuck with WinForms and complemented it with DevExpress since their first release and never looked back. I still think WinForms is one of their best UI framework. As for WPF, intentionally avoided it since day one. I’m not fiddling with no XAML.
- anarticle 6mo agoProgramming Windows is THE authoritative source on Win32 programming: https://www.charlespetzold.com/books.html https://www.charlespetzold.com/books.html It is a fantastic book, I learned everything I know on Win32 from it. Wrote real time scientific software in windows for ~10y! We did it all, external hardware control, custom UIs, etc. Thanks Ryan Geiss for your timing info. Right about VC6 was the sweet spot imo, C/C++ with lightning fast UI for docs and more. Tools got out of the way. Once other languages got involved (C#?) the docs got out of control and harder to use, and the UI started to get a little overloaded. The snappiness of those old windows systems was pretty great.
- gwf 6mo agoAn honest accounting of this history has to call out Sinofsky's role, and it's not pretty. He nearly killed the company in pursuit of power, insisting that everything be brought under his control. Who pushed in 2005 that online and search had to be organized under Windows? That was Sinofsky. He forced the engineering team that most needed to move fast onto three‑year product cycles--sheer insanity, and just one of a 1000 bad calls that ultimately contributed to his ouster from Microsoft. And when it came time to plan his own exit from Microsoft, who did Sinofsky turn to? Jeffrey Epstein, of course, because that's what normal people do. Treat everything Sinofsky writes as an attempt to launder his reputation--then add another layer of skepticism on top of that--because Steven Sinofsky does not live in the same moral universe as the people whose careers and products he derailed.
- zac23or 6mo ago[dead]
- deleted 6mo ago[deleted]
- drysart 6mo ago> I sat through a conference session in the late nineties trying to understand the difference between an OLE document, a COM object, and an ActiveX control. To be brutally honest, if you were a serious Windows developer in those days (and you were even the sort who'd have sat through a conference session on the topic); there is absolutely no way in hell you'd not understand the difference between OLE, COM, and ActiveX. Conflating these things as some sort of confusing mess either shows a lack of actual experience, a lack of competency, or a desire to falsely make things seem more confusing than they were to add some meat to an article. This article dances with some good points, but opening up with this sort of hyperbole (and then ending it with an unabashed AI slop image filled with brand new hallucinated characters of the alphabet) just totally tanks the author's reputation.
- Birkoff 6mo agoI've worked inside the Microsoft 365/SharePoint ecosystem for over 20 years, and the incoherence runs deeper than the GUI layer. Microsoft has been developer first, then cloud first, now AI first. It has never been design first. And when something does work, the pattern is always the same: force it everywhere. Metro was genuinely good on mobile, then they pushed it onto desktop where it didn't fit. Now Fluent UI is repeating the cycle. Fluent UI is on its third major rewrite (Fabric, then Fluent UI React v8, then v9). Each one brought breaking changes. v9 appeared around the same time Microsoft released their new Teams client, and it shipped with performance and accessibility issues that are still being worked through. Signs already point to the next throwaway Fluent UI version. In practice, Fluent seems to be first-party only. It's 'open source' in the sense that you can look but don't touch. In SharePoint alone, the same UI elements look different across pages, lists, document libraries, and settings panels. The irony is that the web platform itself has caught up. You can build a fully themed, accessible component library in plain HTML and CSS today. No framework dependency, no version lock-in. I did exactly that with hTWOo (https://htwoo.io/ https://htwoo.io/), an open-source alternative that matches the Fluent design language without any of the React coupling. The real problem isn't that Microsoft can't pick a GUI strategy. It's that they keep rebuilding from scratch instead of creating a design system flexible enough to sustain across platforms and product generations. The web platform already provides the primitives. You just have to commit to them.