I can imagine your pain points, albeit luckily they do not overlap with my use case.
I'm not sure about the alternatives with higher standards though, and I say it as someone who operates two MacOS machines, a windows and an Omarchy one
They all have pros and cons, it's perfectly fine if we have different experiences.
Look at a registry with Microsoft vs Gnome. Microsoft is a kludge of a setup were Gnome is well defined. Microsoft is a guessing game and the wording is often a contradiction. Gnome actually gives descriptions of what the property means and what select settings will do. Microsoft does not even defined the meaning in some document. These properties often have to be reverse engineer.
Microsoft tried competing against Google's Chromebooks with a low cost Surface laptop. These laptops had such low hard drive space that they pushed a Windows update that disabled the auto backup of the registry. The update affected ALL Windows installations and not just Microsoft's low quality hardware. A corrupt registry without a backup requires Windows to always be reinstalled.
Microsoft's design for localization is to push the content into strings resource with-in a DLL. This requires the application to be re-compiled for any changes to the translations. A simple text file disconnected from the application binary per language is better off. This allows for the client to modify the translations without the need of the developer. Example would be having the application install fr_FR in AppData and the user being able to edit the translations or create a custom one and store it in the User's AppData with their cultural changes. This allows for full customization without needing direct access to the developer or source of the application.
Applying localization to .NET changes how the the data convert logic works. Means that a string conversion of "1.5" will fail and throw exceptions if the localization is set to using a language where "," is the separator in a decimal system. It gets worse when the application communicates with a 3rd party application and the data types must be constant for one localization. Quality would be to allow to only present the localization while storing the and processing content in a standard language independent of the user's selected.
Microsoft does not properly document the configuration settings for their configuration files. If they do, it quite rare. I will search the Internet for a setting in their solution file (.sln) and nothing will come up. Or it might but point to a Git comment with the setting and no meaning what that variable will do. BSD and Linux applications will create MAN pages for the application and a MAN page for the configuration file contents and provide the user with meaning.
Look at Windows vs Gnome. Press the Windows / Meta key and type _shutdown_ and press enter. Windows will open Edge, not your default Web Browser, and provide an Internet search about shutdown. Gnome will bring up a dialog with a 60 second counter to confirm you want to shutdown the computer. Gnome is quality user experience while Windows rejects the user's request to use Chrome instead of Edge and provides a search result instead of an action this is common on all computers.
Microsoft segregates applications into two groups console or GUI. They do not allow for an application to be both. A quality OS does not segregate and allows application arguments to dictate if the application should run in console / command line mode or as a GUI. Even if you try to hack a GUI into a custom made console in Windows, the STDIN and STDOUT become broken.This is why Windows applications need more code and extra work for logging.
High standards it to provide software that is well documented and uses simple means to configure the software while rejecting the attempt to force the user to use YOUR application and accept that the user's default applications should be used instead.
As for the rest I don't really author code for Windows machines, I write code for unix machines via WSL 2.
I prefer Windows as a desktop machine over linux for several reasons: better window management, personal preferences, compatibility with both worlds (windows and linux), way more software available, etc.
As I said in the previous post: I'm not here to convince you that Windows is a better development machine.
And my background is cross-platform development from desktop to embedded to full stack to back-end and front-end.
I learned that even though you can write an application in _WPF_ you should still learn other frameworks. Often people stick with what they know versus learning what they don't. The tooling and framework to use for a solution should be around the problem and not what you know. A hammer drives a screw but is also the wrong tool to use for the solution. I have learned new programing languages and frameworks because they fit the problem better than what I already knew.
Here are the images of how Windows 11 the shutdown issue:
Even typing _shutdown pc_ and pressing enter did nothing except closing the Start Menu.
One of my greats annoyances with Windows is that Microsoft Anti-Virus will lock the file for scanning. This means I have there is a chance of having to re-run an InnoSetup script compile because Windows is canning a XML file. Happens quite frequently with GIT repository management. Waiting and having to re-run tools because of this is a waste of time.
Desktop Environments are like a person choosing which Bourbon they like. For me the best Bourbon, beer, wine ... are the ones I have not tried. Some people stick with Jack Daniels their whole lives.
> Microsoft is a kludge of a setup were Gnome is well defined.
I also thought that for a long time, but you should open the Group Policy Editor one time. Each property has some paragraphs for description. When you look at the interface and the structure, it looks like the Registry with pretty labels.
> Windows will open Edge, not your default Web Browser, and provide an Internet search about shutdown.
You are holding it wrong! Type Super-R, this won't open the web search. (This is broken for all other programs, since no program puts itself in the PATH on Windows.)
Yes Windows / Meta + R = run dialog. A person needs to know the exact command name and parameters for _shutdown.exe_ to use it. DE like Gnome removes the need to know what actual command is being run to perform; shutdown, restart, logout, and lock screen.
Group Policy is only a small percentage of the Register. _gpedit.msc_ is only useful for manual local computer management or mass deployment for an Active Directory environment. It does not allow for creating a configuration file. In order to apply policy settings direct registry keys must be manipulated, extract, and applied to an installer application. This means referencing the spreadsheet that maps GP setting to Registry key and value. [0] Microsoft seems to dislike configuration files and prefer the Registry. Configuration files are easier to backup, share, and edit with a simple text editor. Registry needs an special tooling.
Microsoft has inconsistencies of how to store values in the registry when it comes to lists. Some times it is a value key per item; _item 0_ = _..._, _item 1_ = _..._. It might be a delimited separator like a space used to store DNS addresses assigned to a NIC. Worst is a more complex binary format that requires reverse engineering, such as the Internet Explorer compatibility URL list.
FYI, Windows != Meta key. Meta is commonly labelled Alt on IBM/Windows keyboards. The vendor neutral name for the Windows/(Open) Apple/Command key is 'Super'.
I'm not sure about the alternatives with higher standards though, and I say it as someone who operates two MacOS machines, a windows and an Omarchy one
They all have pros and cons, it's perfectly fine if we have different experiences.