Microsoft hasn't had a coherent GUI strategy since Petzold
jsnover.com555 points by naves 19 hours ago
555 points by naves 19 hours ago
See also https://x.com/stevesi/status/2036921223150440542 (https://xcancel.com/stevesi/status/2036921223150440542)
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. What 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. We'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). >We've ended up in a world where power users have been forgotten. I think its more like the OS vendors have stopped being operating system vendors, and are now - instead - vendors of eyeballs to advertisers. The less the user is GUI'ing, the more they are just watching, placid, whatever else is on their screen. For native apps to survive, they need to not be platform-specific - i.e. web apps, which require a browser and all its responsibilities - but rather cross-platform, reliable, predictable on all platforms - i.e. dissuaded from using native, but rather bespoke, UI frameworks. This is attainable and there are many great examples of apps which are in fact, old wheels not re-invented, which still work for their particular user market. I have the most respect for apps I can use on MacOS, Windows, and Linux - with the same hotkey/user experience on all platforms, equitably - and the least respect for apps which 'only run on one of them', since that is of course nonsense in this day and age. The cognitive load of doing a web app that can do all the things a native app can do, is equivalent to the load required to build a cross-platform app using native frameworks, so .. >i.e. dissuaded from using native, but rather bespoke, UI frameworks. Based on my experience, I would be quite reluctant to rely on any non-native cross-platform desktop UI framework that is not web-based. These tend to be either less performant, look outdated or are bug-ridden. > I have the most respect for apps I can use on MacOS, Windows, and Linux - with the same hotkey/user experience on all platforms, equitably - and the least respect for apps which 'only run on one of them', since that is of course nonsense in this day and age. No. I want things like keyboard shortcuts to reflect the platform norms of where the app is running (macOS in my case). A shared core is fine, but the UI framework must be native to be acceptable. Ghostty is a "gold standard" there. This is why most web apps are lowest-common-denominator annoyances that I will not use. Indeed, if the framework is sensible, keyboard shortcuts reflecting platform norms is entirely attainable in a manner that developers don't have to bother with it, much, if they don't want to. There are plenty of examples of cross-platform UI's surviving the hotkey dance and attaining user satisfaction. There are of course poor examples too, but that's a reflection of care, not effort. Mozilla 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%. Sometimes this is a self-fulfilling prophecy. It is the novice users who, over time, become power users through repetitive usage. If there are no user efficiency gains to be had through experience in a UI, then it just prevents the emergence of power users. Users just have to wait until a product manager or designer somewhere notices their pain and create a new feature through 10x the effort it would have taken to simply maintain the lower level shortcuts (e.g. keyboard accelerators, simple step automations). Personally, its not so much about customisation as it is consistency, quality, and attention to detail. Being able to keyboard through menus as standard. Focus being deeply considered and always working as expected. Compact UI elements -- in the 90s/00s we decided buttons should be about 22px tall. Then suddenly they doubled in size. Was it the same 1% that was using each of the long-tail features? I suspect that by refusing to invest effort in at least some amount of niche features, we essentially alienate _everybody_ Browsers like Vivaldi that cater to power users are gaining in popularity. They are not trying to be the next Chrome, they are just out to serve their niche well. Firefox has nothing to differentiate itself from Chrome at this point. >Firefox has nothing Not only that, but for a time, Firefox seemed to be copying everything Chrome did, maybe as a way to stop the exodus of users. But people who wanted Chrome-y things were already using it, and people who didn't might as well, because Firefox was becoming indistinguishable from it. God I wish Mozilla would be made great again. It's tragic how mismanaged it is. If you become a power user you realize that nothing matches the power of the command line. And at that point you also realize that are better OSes that allow you to fully explode the true computing power that is terribly limited and constrained by a GUI. Nonsense. Do you read and write your email using the command line? I use Mutt and Vim for that, and that’s not the command line. GUI with power-user support is just as efficient as Mutt and Vim. Did you read this thread and submit your comment using curl? I use Firefox with Vimium C, which allows most web pages to be navigated and operated efficiently by keyboard. > Not out of malice, but out of a misguided aim to reduce complexity and achieve consistency with the web. The web is not consistent itself. Lots of sites, and most web apps, invent their own UI. This is why, for me, year of the Linux desktop was 2008. It's been atrocious since then. 2 things Microsoft failed to do in the last 15 years are: 1) They abandoned their mobile phone, tablet, and wearable strategy. So, today if you develop a native Windows application, it will only work on desktops and laptops. That is it. It is not attractive for a developer to learn a whole new UI framework just to target a single form factor. And I don't know if there is any solution for this at this point, they shouldn't have completely abandoned those markets. 2) They did not back 1 UI framework for a long time (I mean 10 years+), instead they did significant changes to their UI framework strategy every 3-4 years. It takes a huge time for developers to trust, learn and develop complex and polished apps in a UI framework. Also it takes a long time for a UI framework to become mature. If you change your UI strategy every few years, you will never have complex and polished apps written with it. To be honest I am not sure if Windows will ever be able to recover in the long term and keep its market share. The only reason it seems to be alive is because enterprise runs on Windows and it is hard to change that. I feel like an Apple + Google dominance will be more likely in the long term for desktop operating systems. I am not sure if Google will be able to avoid the first mistake I wrote above but they are working on bringing Android to desktop. It is a good idea but it requires at least 10 years of supporting and polishing it despite not getting much traction. But if Google persists, we might be all using MacOS and Android on desktop 20 years from now. > 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 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. "WPF had made a bet on then-advanced graphics hardware for reasonable performance, and that was bad for these users. " OTOH WPF is today surprisingly strong GUI platform if you just want to get your Windows GUI out there. It runs really nicely even on low end hardware. All the nice styling and blending techniques now _just work_ even on the most cheap low end laptop. The fact it's over decade old means all the LLM:s actually know really well how to use it. So you can just guide your LLM to follow Microsoft best practices on logic development and styling and "just add this button here, this button here, add this styling here" etc. It's the least annoying GUI development experience I've ever had (as a dev, non-designer). Of course not portable out of the box (avalonia is then the ticket there). If you want 3D, you can just plug in OpenTK with OpenGL 3.3. Decades old _but good enough for almost everything_ if you are not writing a high perf game. Really, WPF plus OpenTK is a really robust and non-surprising development platform that runs from old laptops (eg. T14 Gen 2 per my testing) onwards. I've been doing a sideproject using WPF and OpenTK - .net works really great - here is a sample video of the whole stack (from adashape.com) I had the misfortune of writing a complicated WPF app from scratch circa 2010-2011. Performance using the WPF widgets was terrible compared to HTML/Javascript/Blink; we ended throwing away most of the WPF code other than the main shell and a few dialogs, reimplementing the importantant stuff with immediate-mode Direct3D/Direct2D to get the necessary speed. I recall wasting a lot of time staring at decompiled .NET bytecode trying to understand how to work around many problems with it, and it was clear from the decompiler output that WPF's architecture was awful... A notable example I remember from around 2010 was when Evernote dropped WPF, supposedly due to blurry text issues but probably also performance (remember when we called it EverBloat?) Can't find the original blog post about it but here's a couple mentions of it: - https://www.edandersen.com/p/evernote-has-no-patience-drops-... - https://www.reddit.com/r/csharp/comments/x0nu7h/comment/im9k... Blurry fonts was my main issue with WPF. I get headaches from blurry text and the colour bleeding from ClearType just makes the headache worse. Fortunately for me, I had mostly switched to Linux by that time already, where it was at the time relatively easy to just enable grey scale AA with full hinting. In recent years this has gotten worse again with modern software incorrectly assuming everyone has a High DPI monitor. My trick has been to use bitmap fonts with no AA, but that broke in recent versions of electron, where bitmap fonts are now rendered blurry. So I had to stay on an old version of vscode from last year, and I will be looking to switch to another editor (high time anyway for other reasons). I 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-de... Your argument presupposes that we should accept escalating baseline hardware requirements as good or even necessary, for a desktop computing world that was, from the user's perspective, doing pretty much the same thing as before. I reject that. Apple had been doing GPU-accelerated GUIs since the early NeXT days; it was certainly possible on hardware weaker than what Vista required. Minor 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_Extr... Windows 3.1, with the aproppiated drivers and modern SVGA card, had accelerated 2d graphics. Accelerated GUIs don't even need GPU or 3d. What does "GPU" mean here? Previous uses of the term seemed to imply "dedicated hardware for improving rendering performance" which the SVGA stuff would seem to fall squarely under. The term GPU was first coined by Sony for the PlayStation with its 3D capabilities, and has been associated with 3D rendering since. In some products it stood for Geometry Processing Unit, again referring to 3D. Purely 2D graphics coprocessors generally don’t fall under what is considered a GPU. I mean Apple had a GPU-accelerated GUI in 1990, but probably not what we think of "GPU accelerated" these days https://wiki.preterhuman.net/Apple_Macintosh_Display_Card_8-... It goes back pretty far. Nowadays the controversy is electron vs native (where most windows devs would consider WPF/.NET a native option). But if you read books from the 2000s, there was much discussion about the performance overhead of a VM and garbage collected language; something like WinForms was considered the bloated lazy option. I’m sure in a few years computers will catch up (IMO they did a while ago actually) and Electron will be normal and some new alternative will be the the bloated option - maybe LLMs generating the UI on the fly à la the abomination Google was showing off recently? FWIW Apple has made a similar transition recently from the relatively efficient AppKit/UIKit to the bloated dog that is SwiftUI. What have you heard about SwiftUI being bloated? My lived experience. Maybe bloated isn’t the right word, but attention to performance just isn’t there. Try using any swift UI app on iPhone or Mac. Try resizing a swift UI app window on Mac. > Bear in mind, this is software that basically just displays text Displaying text is surprisingly hard, as one can easily find out if ones dives into the big rabbit hole of font rendering. Yes, text shaping and layout are complex. My point is that the program wasn't doing anything that should have required a GPU, particularly for the resolutions that were common back then. Hmm doesn't that sound like Apple's Tahoe/iOS 26? Effects upon effects upon more effects. iOS 26 runs surprisingly smooth on my iPhone 12 Pro Max though. Runs like crap on my daughter's 12 mini. Actually what does "surprisingly smooth" mean? Better than you expected? Or actually smooth? 2008 edition of “let’s rewrite it in react”. The 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. > The deeper problem is that Microsoft keeps trying to solve GUI consistency at the framework layer I really don't think that's the fundamental issue. TFA points out, and I agree, that the fundamental issue is political: competing teams across different divisions coming up with different solutions to solve the same problem that are then all released and pushed in a confusing mishmash of messages. I haven't written a line of code for a Windows desktop app or extension since early 2014, when the picture was already extremely confusing. I have no idea where I'd begin now. My choice seems to be either a third party option (like Electron, which is an abomination for a "native" Windows app), or something from Microsoft that feels like it's already deprecated (in rhetoric if not in actuality). It's a million miles from the in the box development experience of even the late zero years where the correct and current approach was still readily apparent and everything you needed to move forward with development was available from the moment you opened Visual Studio. There's just so much friction nowadays, starting with the mental load of figuring out the most acceptable/least annoying/most likely still to be supported in 5 - 10 years tech to use for solving the problem. Honestly, things like Electron are quite literally the problem! All of people’s modern desktop woes begin and end at the browser. Here’s why: the late 2010’s push into the cloud made JavaScript all-the-rage. A language the creator made in pretty much a weekend coding session. There naturally is major business incentives powering this. SaaS made things MUCH easier for delivering software. Fast forward 15 years and MSFT is full in on TypeScript. It’s a disease that starts with MsOffice and percolates to the whole OS (same as what’s happening in copilot). .Net is actually elegant in many ways. You have PowerShell, VB .Net, C#, F# etc. languages of many paradigms all targeting the same bytecode (and supported by the OS). And this is being replace by a fun little JavaScript thingy. That may be how JavaScript started, but unless your claim is that JavaScript hasn't changed at all in the thirty years or so since then, your argument is a complete non-sequitur. Yeah, thank you. Also, JavaScript today means TypeScript—an arguably extremely capable type system actively developed by Microsoft—and several, modern runtimes with a big standard library and solid asynchronous primitives. There are a lot worse scripting languages out there. Folks misunderstand the whole point just because I mention TypeScript. Sure it’s a capable and elegant language. Doesn’t change the fact that it’s a bloated monstrosity on the desktop. Think about it: it transpiles to JavaScript. Even if it’s the most elegant language in the world doesn’t change the fact that it’s a world of bloat. Stacks on stacks on stacks. And yet people are complaining about .Net? Come on. Lol Doesn’t matter how it changed if every desktop app ships its own browser. Remember we’re talking about GUIs. Typescript is great for the browser but it should stay there. Now, JavaScript can be okay for example: Qt Quick/QML it works quite well in the desktop. But that’s purpose-built scripting. Being a 70's child, in computing since the mid 80s you made me almost spill my Monday coffee. What a laugh, do you want the examples on Apple's side? I mean Cocoa and SwiftUI are more consistent in the sense that a lot of stuff automatically adapts when Apple changes styling. And they certainly have less churn and more focus compared to Microsoft. Basically it's been Objective-C and Cocoa since around 2000, later on Swift and then also SwiftUI. That's not too bad for 25 years. And in contrast to MS, you didn't get abandoned when you were sticking to the official frameworks. Quite contrary, you basically got the switches from PowerPC to x86 to ARM almost for free for example. Apple is not perfect by any means, but in this regard I truly think they are ahead of Microsoft. Sure, if we ignore the stuff and bugs they still have, the missing features in SwiftUI and performance regressions, or the iPhonisms brought to macOS with Catalyst. The reboot of frameworks based in OpenGL with the Metal rewrite. And many other things I am not bothering with since all those OS System N releases, A/UX UI framework, Teligent based documents,.... Come on, you think SwiftUI has more bugs than the ten different Microsoft frameworks? There are just more people encountering them because the developers are concentrated on using one thing. It’s not perfect, but a compared to Microsoft, calling Apple out for having bugs is a little rich isn't it? I pose to you, if the Microsoft offerings are so compelling, why are the serious players using 3rd party wrappers like QT and Avalonia? It’s because the first party offerings are not compelling. They’re a disaster dumpster fire. And buggy. If Apple products are so compelling why are so many devs using Electron, React Native and Flutter on macOS, to the point it deserved being mentioned at WWDC 2025 State of the Nation Keynote? My point was don't throw stones when having a big glass roof as well. Apple isn't the perfection you make out to be, also has a rich history of failures, and only did not went bankrupt due to sheer luck of doing the right decision when there were not many remaining to take. That's a different issue. Things like Electron are popular not because native development is buggy, but because most developers these days are web developers. They know Javascript. They've never written anything in C/C++ or even the slightly friendlier Swift, Rust, or Go. Electron lets people who only know the Web make desktop apps. Nope, it is the same issue now being worded around to sell the Apple is shiny story above. > If Apple products are so compelling why are so many devs using Electron, React Native and Flutter on macOS That is not how the decision making for cross-platform works. You choose those alternatives knowing that they are crap in many respects, yet accept the trade offs because you want to save money on dev hours. Nobody in this thread is claiming Apple is perfect, just ahead of MS in UI consistency and _less_ buggy The evergreen question of "how do you go back and/or close an app on IOS?" This one caught me completely off guard when opening YouTube the first time on an iPad: Accidentally clicked on a wrong button and got stuck in a "please subscribe to premium" modal. No amount of swiping or tapping outside the popup would help, only thing left was killing the entire app. This experience put a major dent in my perception of the "Apple has the most intuitive UI" narrative. The YouTube app has non-standard and nonsensical UX on every platform. It's Google's fault, nothing to do with Apple. Case in point: The YouTube app for Apple TV. Everything (pausing, playing, changing subtitles) has been done opposite to the standard player found in every other app. You cannot use the main button to pause and resume, for example. Recently they broke swiping. Normally, you swipe the remote to navigate between UI elements such as squares in a grid or in lists with a light touch. It's very fluid, like a touch screen. But the YT app has added severe "inertia" to touch gestures, and you now have to "fling" your finger on the remote trackpad to navigate. Everything feels syrupy and stuck. YouTube and Amazon's Prime TV app are the two worst apps I've ever used on Apple TV. I believe they both use some non-native UI toolkit that doesn't respect native OS conventions and doesn't even try to. Pretty incredible given the size and budgets of these companies. The YouTube app does the exact same thing on Android. I ran into this just yesterday on my gf's phone, as I'd just added her to my family plan, tried to verify the settings on her phone, and it trapped me on an upsell screen for YT Premium that I had to kill the app to get out of. How is bad UX in the YouTube app Apple's fault? You can mess up Android's back button as well. If Ah, yes, problems with the UI on the OS which for 99% consists of modals is not the OS vendor problem, noted. Maybe just the circles I run in but these are not evergreen questions in my experience. I don't even know what "go back" is supposed to mean here, or for that matter what it would mean in a Windows application. Is there a system level "go back" in WinAmp/Excel/SimCity/Photoshop I've never seen before? I was referring to IOS, not MACOS Androids do have universal back button at the bottom on the phone or the same swipe gesture if you want but iphones do not. Sometimes swipe (the direction and position is a guessing game), sometimes and x (right or left
) and the behavior is inconsistent too (back or close) There are some guidelines but more often than not seems like every app has it's own method and you need to get used to it In iOS, task manager and closure can't be overridden. You swipe right to return to previous application. You can swipe left for a couple of seconds if you didn't intend to do that. You swipe up and remove the application from the stack, all processes of the application is killed. Background processing has strict limits, and you need permissions to run longer than that, and for some use cases, there are no recourse. OS swaps you out or freezes the app. If you want an app to work in the background, don't kill it, period. Push notifications are handled by the OS and is not hindered by this. What about going "back" INSIDE an application? Think for example reddit, you open a thread, how do you go back? You open the "reply window, now ho you ho back? Maybe close it directly? I Android this is all handled by the same function and is often ranked as the most frustrating design choice in IOS I'm not using Reddit in any capacity since they have started giving their content for LLM training, so I can't help you with that, but looking at 4-5 third party applications right now, they all have a left arrow at top left to go back. They all are very different applications and have very different designs, yet the arrow is there. To be honest, I baffled at your question for a second or so, because I never thought about that, yet the method is so universal that I was not thinking about it at all. There is a common way to go back (swipe from the left edge of the screen). Some apps just don't integrate well and ignore the platform patterns.
Zigurd - a minute ago
shiandow - 3 hours ago
iamcalledrob - 2 hours ago
rigonkulous - 2 hours ago
vovavili - 4 minutes ago
jen20 - an hour ago
rigonkulous - an hour ago
marcos100 - 2 hours ago
hliyan - 6 minutes ago
iamcalledrob - 5 minutes ago
ShroudedNight - 2 hours ago
bityard - an hour ago
encom - an hour ago
liendolucas - an hour ago
layer8 - an hour ago
graemep - an hour ago
tomrod - 2 hours ago
ZuLuuuuuu - an hour ago
mwcampbell - 10 hours ago
fsloth - 3 hours ago
fleventynine - 7 hours ago
seltzered_ - 8 hours ago
VorpalWay - 2 hours ago
rincebrain - 10 hours ago
mwcampbell - an hour ago
bombcar - 8 hours ago
runjake - 8 hours ago
Zardoz84 - 7 hours ago
ShroudedNight - an hour ago
layer8 - 30 minutes ago
kalleboo - 8 hours ago
n8cpdx - 8 hours ago
pipeline_peak - 8 hours ago
n8cpdx - 4 hours ago
aleph_minus_one - 2 hours ago
mwcampbell - 2 hours ago
nottorp - 6 hours ago
steve1977 - 6 hours ago
nottorp - 2 hours ago
wiseowise - 4 hours ago
MarcelinoGMX3C - 10 hours ago
bartread - 4 hours ago
sizeofdouble - 3 hours ago
cedilla - 3 hours ago
9dev - 2 hours ago
sizeofdouble - an hour ago
sizeofdouble - an hour ago
pjmlp - 7 hours ago
steve1977 - 6 hours ago
pjmlp - 4 hours ago
noodletheworld - 4 hours ago
pjmlp - 3 hours ago
jhbadger - 3 hours ago
pjmlp - 3 hours ago
rTX5CMRXIfFG - 2 hours ago
paavope - 3 hours ago
Iulioh - 7 hours ago
cloud-oak - 4 hours ago
atombender - 36 minutes ago
chuckadams - 33 minutes ago
simonask - 4 hours ago
justsomehnguy - 3 hours ago
mckn1ght - 6 hours ago
Iulioh - 5 hours ago
bayindirh - 5 hours ago
Iulioh - 5 hours ago
bayindirh - 5 hours ago
t-sauer - 5 hours ago