Windows 11: a survey of text boxes
sjmulder.nl
sjmulder.nl
My response upon seeing that was "WTF! That looks ridiculously amateurish!" It almost feels like it's trolling me. Even the labels somehow manage to have a different size of font than the rest of the dialog, something a noob in the 90s using Visual Basic drag-and-drop to create dialogs would not produce without expending (considerable) additional effort.
Ironically, Win32 has had a much more full-featured and standard dialog for choosing colours since Windows 3.x:
https://docs.microsoft.com/en-us/windows/win32/dlgbox/color-...
Personally, I like this better simply because it has the RGB representation in hex which is so much easier to copy and paste than dealing with 3 individual textboxes.
You get some updated Win32 window classes, theme engine updated for the UWP based stuff (or WinUI if on desktop side) and that's it.
I hope not --- frankly speaking, this new stuff is horrible.
Compare how long the original Control Panel takes to open with the new "Settings App". Then compare their visual complexity. The latter takes multiple seconds to open, even has a loading screen, and yet all the controls in it are incredibly bland and featureless and conceptually simpler to render than in the old one. This is none other than a huge regression.
E.g. you have to navigate through this garbage: https://i.imgur.com/W1txUAK.png to find the one link (named "Sound Control Panel", hidden somewhere down the page) that opens the actual useful config panel: https://i.imgur.com/zDnnMPE.png
If they just made the original control panels work with HiDPI screens, there would be complaints that they've done nothing.
Slightly unrelated, but this is one of this things that annoys me the most about using gmail. Inbox by Gmail used to load instantly, there's really no good reason at all for it to have a loading screen.
It's a dead platform.
I just want Microsoft to give me the one true Blessed Way to write Windows apps. Instead it seems like there are 5 true Blessed Ways, and if I want something performant I need to use 20 year old APIs?
I was going to dig in to GDI+ for fast text styling performance but saw an offhand comment in some forum today that you can use DirectX for performant text rendering. How do people discover this information under normal circumstances?
We discover this information like everyone else, conference talks, blog posts, books and developer documentation.
While you are in the process of pasting it, the guys at ATP Podcast might also appreciate it.
> Native Mac apps built with Mac Catalyst can share code with your iPad apps
"There’s never been a better time to turn your iPad app into a powerful Mac app."
"Bring your iPad app to Mac"
"Your iPad app can be made into an excellent Mac app. Bring your iPad app to life on Mac using the latest version of Xcode. Begin by selecting the “Mac” checkbox in the project settings of your existing iPad app to create a native Mac app that you can enhance further."
"Learn how to build a native Mac app from the same codebase as your iPad app."
On Windows it seems like there are so many tradeoffs depending on which framework you pick. AppKit is still 'the' solution on macOS unless you're trying to port your iOS app with the minimal amount of effort.
Guess what, I am 100% sure they do the basic for Win32, make some efforts for WinUI 2.0 (UWP) and WinUI 3.0 (the Win32 one) and that's it.
The Win32 widgets have been updated but apparently they don't want to mess with the metrics, hence those controls are much more compact, don't use rounded corners, etc.
Is there any public UI toolkit in Windows now that offers the canonical widgets?
The WinUI 3.0 (which is UWP decoupled from OS + UI) is still catching up.
https://docs.microsoft.com/en-us/windows/apps/winui/winui2/r...
Thing is, for Win32 anyone using bare bones Win32 has to do the work themselves for anything that ins't on the OS anyway.
So MFC and Forms get a partiall update via those Win32 changes, while WPF gets nothing due to its own DX rendering stack.
https://docs.microsoft.com/en-us/windows/apps/get-started/ma...
In fact already during the Win16 days, many of us were already jumping into C++, Delphi and VB frameworks, instead of suffering through plain C programming.
Borland common controls used to be quite easy to spot with their green check mark.
Win32 has very few built-in controls, and Windows always enjoyed a good ecosystem from commercial vendors selling custom controls, like Telerik and ComponentOne to refer to two well known ones.
As historical info, modern COM traces back to Visual Basic VBX components.
As they pivoted back into Reunion and merging Win32 and UWP worlds, new teams were created, so....
Win32 is quite basic in the set of controls available, almost everything in traditional Win32 applications is custom drawn, beyond what you also find the HTML forms as components.
Then there are all commercial components that are so common in Windows applications.
However if you will, the future is WinUI/UWP, and that is the only one getting full Mica support.
Just looking at Explorer:
- The window itself is a regular Win32 window
- It hosts a WinUI island or such for the top toolbar
- The navigation bar is a ReBar with all custom Win32 widgets
- The content view is a DirectUI widget
You'd think that if they'd standardise on a single toolkit (like macOS with Cocoa) they'd be able to get better results with much less work. Perhaps this is an organisational issue?
If Windows would change the Win32/Winforms spacing and such I wouldn't want to be the developer that gets to keep all the pieces broken off.
Read some Windows Terminal blog entries, they're very enlightening. They're basically working around a huge minefield of compatibility and trying to get things moving again. It's quite a feat of real software engineering, what they're doing over there.
It's woefully antiquated feeling next to Finder. Seeing it struggle to scroll folders with 10,000+ items it can't even load them all in at once you have to scroll bit by bit, seeing it choke reading MP3 file folders because it's trying to do some dumb WinXP era metadata reading on an ancient code path. Seeing it unable to search for files on a sensible timescale or even accurately.
It's infuriating.
Oh god no. They’d nuke all the keyboard shortcuts, make everything take 20x more space, remove any advanced features such as keying by non-primary column, sorting by weird file-specific metadata, etc, add loading screens everywhere, make even the most basic operations require an async dispatch to a runtime host, break credentials authentication with the OS keystore, remove IME and input accelerators, nuke integrations with 3rd party apps for menus, overlays, and previews, hide file extensions, run always in fullscreen, break ClearType text rendering, block access to any system files, break the elevated operations workflow, remove access to non-local files, use 20x as much memory, crash at startup, break when an update ships out-of-band on an older patch release, and then be rewritten in four years.
Why stop at Carbon if you count removed frameworks? They had Classic and X11 too! And HyperCard!
Catalyst is expressly for porting iPad apps. So it's just SwiftUI and Cocoa if you compare macOS to Windows.
Windows happens to have such legacy support and lack of product direction that’s it’s now layers and layers or turds.
This just reveals Microsoft’s prioritization of UX consistency. Whatever the priority is, it’s not enough to overcome the perceived cost of creating consistency.
It also shows why Windows can be a strength: still runs almost everything anyone ever made for it.
MacOS couldn't be more opposite in this regard. Linux I also dislike for this reason.
It's expect you compile your own programs, but more often than not it'll fail if the project is abandoned for 5 years (purely anecdotal).
In contrast with the earlier comment about how poorly Apple fares on backcompat: they have twice (thrice, actually, counting 68k->PPC) successfully made breaking platform changes where old software kept working with no required intervention by users or even knowledge it was happening.
Not everyone has been happy with Apple’s deprecation strategy, but there’s no technical reason MS couldn’t use their subsystem prowess to gradually move old technologies out of the core OS into sandboxed environments.
The reason they don’t is partly cultural—the compatibility at all costs trope is real—but I think it’s mostly a combination of lack of motivation and a recognition that the ecosystem produces a lot of abandonware that would quickly show seams.
Shipping an OS where some bits of UI date back to Windows 3.1 is never going to lead to a seamless experience.
Now, I completely understand if some third-party program developed twenty years ago looks inconsistently. I even understand if some recent third party tool also looks inconsistently. But here we're talking about the software that is shipped with Windows and it's created by Microsoft directly. These are examples from Edge, Explorer, Settings, etc. This is more than having a low priority for consistency, this is Microsoft not even considering the possibility of consistency.
I have not tried Windows 11. But I'm baffled to find that in Windows 10, Microsoft still ships parts of its own UI that are not high-dpi ready. They seem to have zero problem showing dialogs with scaled pixelated text.
In some cases, APIs wouldn't be too much of a hindrance, and one could replace one toolkit by a later version with updated designs. But the designs themselves also do have a lot of compatibility problems: It is uncommon in the Windows GUI world to use layout managers (similar to CSS flexboxes and the like) that automatically adapt to different window and UI element sizes. Instead, most widgets are positioned pixel-wise. That is also why most dialogs are non-resizeable and things break e.g. when translated strings have different lengths. So a new design which changes sizes breaks all the pixelwise layouts everywhere.
tl;dr: Windows GUIs and toolkits are usually not designed with compatibility and resizeability in mind and break if you change the looks of anything (beyond just changing colors).
More often than not they don’t even look designed.
The problem with opt-in flags is that it still requires active application developer work (keeping up to date on dependencies; sometimes worse, keeping up to date on future dependencies and learning their restrictions needs) and still can't solve the inconsistency issues from applications developed by people that don't exist anymore or don't have a maintenance budget or the source code was lost or…
Manifests are a thing since Windows 2000, as they were also introduced to sort out registry issues, and go back into xcopy deployments.
Yet even Microsoft's own teams keep putting into the registry what should be in manifest files.
But more modern toolkits like WPF are much closer to html in their function. A text box is a white rectangle with a cursor. If you want to add autocomplete, placeholders, a magnifying glass icon in the edge - you put it there yourself.
So basically, making a text search field in Windows now is the same as making it for a webpage. The toolkit doesn't have options for adding autocomplete, placeholder text or icons. I think this is the correct API design, because controls that could do everything would be very difficult to work with.
That said, there should have been some utility or standard library to make it easier to be consistent, such as creating a "system-standard search box" which would then simply do all the gluing that is required for adding the necessary bells and whistles.
I'm sure there is both documentation and utilitiies for doing exactly this - but the problem is that it's so hard to find because everything keeps moving. Ironically I think internal ms devs feel the same way.
Today, and perhaps for decades to come, by the time someone touches a PC, they've been screwing around on phones and tablets. They live their lives on the internet and apps, where "standard looking" often implies "cheap and knock-off", and long term consistency often implies "stale and old". They already know that nothing is consistent, and things aren't always what they seem.
Today the point on significantly diminishing returns on spending resources on UI consistency is lower than ever. It's fun to pick on the textboxes, but it doesn't matter. It won't stop anyone from being productive and happy using the software.
You'd think having one blessed toolkit and implementing things there, once, takes much fewer resources than doing it half-heartedly over and over again.
Knowing that doesn't make it easier to use.
Didn't worked well?
The UI on Windows is problematic since Windows XP. Microsoft doesn't maintain actually the libraries for the UI, they just add new libraries. And developers learned that on Windows you can do whatever you want.
* Win32 (C, requires experience but reliable?)
* Microsoft Foundation Classes (C++, Win32)
* WTL (C++, Win32)
* Windows Forms (.net)
* Windows Presentation Foundation (.net)
* WinUI (C#, C++)
Please tell me if you forgot a UI library provided by Microsoft?
Gtk tries to make Gtk2, Gtk3 and Gtk4 look somewhat same and integrated applications of GNOME feel rather same. Similar for Qt and KDE and for Apple. Honestly, Firefox and LibreOffice doesn't fit perfectly. This is also the reason for Epiphany, which is using Gtk natively. https://developer.gnome.org/hig/
https://developer.apple.com/design/human-interface-guideline...
I miss a HIG for TUI (*curses). The behavior of CLI applications is partially defined by GNU (-l, --long, -L) but of rourse requires reading the manual: https://www.gnu.org/prep/standards/html_node/Command_002dLin...
As for Gtk and Qt, don't throw rocks when the roof is made of thin glass.
All Gtk+ versions require major rewrites and now they even dropped Glade, with the replacement coming who knows when.
Qt, is now focusing on QML instead of C++ Widgets and also requires rewrites across versions.
To be fair, macOS isn’t perfect either, especially with some of the system apps that have become the iOS equivalent running on macOS in the past years. Although I do find macOS to have greater consistency overall than Windows.
One thing I really love is the visual indicators in the menu bar. For example, I like the icons when I'm connecting to a Bluetooth device. I also find that Finder is pretty clean and nice to use, among other things.
Obviously it's all subjective but I think Big Sur is probably the nicest looking/feeling version of macOS yet. It seems like the "Mountain Lion was the best" way of thinking is mostly just nostalgia.
Using Mountain Lion in 2021 is going to feel less aesthetic than Big Sur just as using System 8 in 2011 felt. Overall consistency and sizing of Mountain Lion is superior to Big Sur if you consider a keyboard and mouse based OS just as Big Sur is superior if you're used to touch input and modern iOS UI.
Of note, macOS has always been very good at having consistent keyboard shortcuts across apps, something Linux is still trying to learn.
The problem we're seeing now is nobody is willing to rollback bad ideas.
2021 the year of the Linux desktop? /s
Meanwhile, the rest of the world went full derp and decided that UI consistency is for boring people who like to actually get things done with a computer.
Microsoft found out the hard way with Windows XP that Win32 controls generally can't be rethemed in ways that change the pixel counts because they were consistent for so long that apps did all sorts of (sometimes very dumb) pixel-specific logic. Microsoft's commitment to backwards compatibility makes any consistency in theming Win32 controls near impossible without application developer buy-in, and buy in of XAML and actually adaptive layouts has still been extremely slow overall even if you can discount how long pixel-perfect RAD tools with zero adaptive layout support dominated early Windows development (including and especially VB <= 6).
The result: every program is different in appearance and behaviour.
Yes, system and default apps were somewhat consistent. But out of the box, a win9x installation was very poor with regard to installed software; you had to install more things if you wanted you computer to be useful. And the consistency went away.
But I remind myself that in 1984, the idea of a visual interface was a little shocking to people: "What do I do? Where can I click?"
The Web kicked open the door and allowed all manner of UI designs. At the same time though, people were more comfortable navigating the breadth of UI by then.
I still prefer simplicity, consistency though.
...and now several decades later, I find myself asking the same question whenever I have to interact with a "modern" UI. Is it really that hard to make buttons look like actual buttons, and static text not look like buttons!?
While I agree UI consistency is dead even on MacOS now, personally I believe the Windows issue stems from them being too scared to actually push out full redesigns.
Look how vocal and angry people were when they started redesigning Settings even though most of control panel was designed for sub 800x600 resolutions.
This is why we're stuck with such inconsistency because they can never make sweeping changes without people freaking out, this is why we're stuck with things like that terrible device manager that refreshes the whole view and flickers 3 times when you plug in a USB device.
Really Windows should be pushing out a complete redesign and update of at least 2 of these apps every version. People will scream and shout every time they do but it's the only chance Windows has to completely modernize itself and get it up to par with Mac system tools and standard apps.
Its not that they modernized the old settings / configuration screen. They made a new one that does about 1/3 of the job and still links to the old one for the last 2/3. It does not seem like Microsoft intend to slowly have the new settings setup subsume the old settings. Nor do they seem to want to improve the old settings. Instead we are left with a weird stack of settings screens.
The big real complication is that data they have available on what is used 80/90% of the time is telemetry. It's not a coincidence that the people that find that the settings they use the most that haven't been converted are in the set of people most complaining about telemetry and most actively disabling it.
This isn't unique to Windows. It's a general problem. When something like network configuration or screen resolution had been a pretty stagnant thing for 20 years, you could just leave it alone or... spruce it up. Sure, it's always possible that there are better ideas. But implementing a change because you have a better idea is one thing. Implementing a change to justify your salary is another thing.
'Modern develpoers'? What're you talking about, first of all, HN has weird trend of speaking as if Devs are these all-powerful artisans at their org when actually there's a Product Manager and a whole design org that makes these calls, Devs at best can file a recommendation and maybe get it considered.
Secondly, Electron is a business choice to minimize time spent doing cross-platfom GUI development. Can someone give me the list of cross-platform apps from back in the day with well thought out platform-specific GUIs? Cause I swear most of the popular Windows apps I used in the early 2000s like Winamp, Foobar2000, Notepad++, Soulseek, µTorrent, were Windows-only. Everyone's not just gonna run out and learn Qt, so tired of this low-hanging fruit type comment about Electron/Web Developers ruining everything. Go talk to this thing called the market instead.
They even had to restaff Forms and WPF teams, because with UWP they were reallocated to something else.
This isn't true, almost each thing would require at least a UI rewrite to get them up to consistency or you'd just have a task of trying to hack the ten or so UI frameworks to look the same but they wouldn't act or feel the same.
I don't think it's impossible but you need a product focused exec who cares enough about it to basically demand a few of the apps or panels be rewritten each version and keep sending it back until it looks right.
Has to come from the top because a designer going around and trying to get them to rewrite say Device Manager to make it feel up to date and stop flickering isn't ever going to convince anyone.
Of course every step of the way reviewers and your own community are going to be shouting at you for changing 20 year old UIs. It'll be a thankless task until 10 years after it's done when they come to terms with the change and realize they finally have a consistent Windows.
I am not an artist but media producers love the neutral gray and so does everyone else. Light themes are too bright.
ESPN and NPR are two examples of news sites that use containers with grey backgrounds and I think they're both really nice to read. Not some blinding amount of pure white like most news sites.
Most people don't care. They probably don't even notice because they only use third party software on top of Windows.
Last week's ATP podcast had a long rant about it.
I thought the same and did just that to see if it holds true: https://github.com/sjmulder/netwake
By default you get Windows 95 styling and Windows 3 fonts. You have to opt into 'visual styles' (introduced in XP) with a declaration in the app manifest and have to manually query and use the system font. DPI awareness is also opt in and puts all the work (sizing/positioning, scaling/reloading fonts) on you. But when you do that, it does look fine on Windows 10.
Not so much on Windows 11. Some of the widgets have been updated to mimic the new style but when you put it together it looks messy and old fashioned (e.g. fonts + you don't get the new context menus).
I'm curious to learn how one would create a 'proper' Windows app without having to reimplement the system's widget styling.
(WinForms also saw a bunch of reinvestment in .NET 5 and also has a road to migrate to WinUI 3.0 controls if you really want, but I would argue that WinForms was never a "good desktop UI framework".)
Basically Microsoft had to rampup Windows Forms and WPF teams (most likely ramped down to maintenance modus), as otherwise many companies would just ignore .NET Core.
The designers, which were redone to be out of process in .NET 5, still have lots of issues.
Basically, the future is UWP/WinUI, but just like with VB 6, there are plenty of big shot customers that want their apps to keep running and aren't open to rewrites.
And in what concerns WinUI, MAUI is being built on top of WinUI (with incompatible XAML) and then there is Blazor.
Plenty of political wars going on currently in Redmond UI teams.