This hasn’t been consistent since at least Vista and the release of WPF, which does totally custom control rendering. Circa 2006.
I think web is taking over on Windows because any of 10 or 15 different design systems can get you to a better app than the native (whatever that means) toolkits in much less time. It is easier to get a decent color picker in a web app than a WPF, WinForms, UWP, WinUI, or Win32 app (assuming you have a reasonably high expectation for UI/UX, as I do).
Even Office and Visual Studio (not Code) are using web technologies to render substantial parts of the UI.
I'll grant you that it's probably easier and cheaper to get a workable "color picker in a web app," but I don't grant that going that route will get you a "better app than the native."
The reason why the web stuff is taking over is because it's cheaper while providing minimally-viable functionality, full stop. It's not actually good in any other way.
IMHO, the trend here is similar to the one consumer printers took.
Yes, it’s cheaper, meaning that it allows you to ship more stuff faster. You could make the argument that this results in lower quality, but this isn’t always the case. (For example, VS Code feels great!)
Still, I’d often rather have twice the features at 80% the quality, instead of an extremely high quality product that doesn’t have the features I need.
Cheapness leads to abundance leads to innovation.
I don't know how you came to that conclusion but I'd guess that you mostly work on small projects? (where I'd say smallish is < 100K LOC)
Stuff I'd miss in VS Code coming from JetBrains Rider:
- Docking of panels to top, bottom, left, right
- built-in database explorer (with table designer, script runner, ...)
- built-in unit test explorer
- built-in memory/perf profiler (not talking about a simple text interface!)
- nice config options of project settings (in either text with completion or the UI)
- NuGet package explorer UI
- integrated IL viewer
- great git blame / annotation view
... could continue for a while
Judging from the fact that many people choose VS Code over JetBrains IDEs, despite being aware of JetBrains existence as an option, seems to be prima facie evidence that it is in fact the better choice for those folks.
The things that worked in VS Code's favor:
- free. "All software must be free as in beer" is still a prevailing thought in IT, and people are loathe to pay for anything, even if that anything is extremely useful and very difficult to realise and support. On top of that IDEA still has a reputation of being expensive
- reasonably fast
- plugin system is decent and much easier to get into than IDEA, to keep IDEA as an example
- LSP is an overmarketed hype, but it worked in VSCode's immense favor. While it only covers a tiny sliver of things needed for a fully featured IDE, it covers enough of the important features, and is easy enough to implement. This way even languages that never had anything decent beyond broken syntax highlights in emacs and vim now enjoy at the very least an autocomplete
[1] Code refactoring alone is dozens of pages in IDEA docs https://www.jetbrains.com/help/idea/refactoring-source-code....
Now, for electron, it’s certainly not a compliment. From electron apps I’ve used, only VS Code is great, Discord is good, and everything else is just really, really bad. It’s apparently extremely hard to use electron and have something close to decent performance.
To me, "cheaper" means that companies are putting fewer resources into Windows-specific app development. That's not unexpected, given large portions of their user base are using MacOS, Android, or iOS. Why would I hire 8 developers to make 4 apps, when I could hire 6 developers to make make 3 or even 2 apps? Oh, as an added bonus, now my app can also be loaded straight from a browser, no installation necessary? And I don't have nagging complaints from small-market-share users (Linux and BSD) complaining that my app doesn't work on their machines? Seems like a no-brainer.
From a business perspective, if the end product is good enough that the customers don't complain, what reason is there to not* use web technologies?
Don't get me wrong, I hate that half the software I use today is just a glorified Chrome tab. I hate how I need 16GB of RAM to do my job.
I think the best definition of MS products in regard with quality and usability is "cheaper" as in "he is cheap". (i.e. only using the lowest quality crap available)
And if you build an updater in your app like chrome / firefox then it needs to be disabled for Linux distributions that have their own package manager.
What is a decent color picker? Everybody's idea about that is different so basically no 2 websites use the same color picker. In fact, this paper [1] found that the kind of picker (RGB vs HSV, etc...) doesn't really matter, but that better feedback made the difference. So will we get instant feedback from our color pickers now (for example text immediately turning into the color selected)? No, because designers design how they think it should look and feel, not based on how people actually interact with applications.
[1] https://www.researchgate.net/publication/220183526_Model_and...
https://superguigui.github.io/simple-color-picker/
Compare to the best I can find for WPF: https://github.com/dsafa/wpf-color-picker - no live feedback, dialog only, no documented support for modern .NET. There are some commercial controls available from syncfusion and the like if you want to pay for such things.
Compare to color dialog in WinForms: https://github.com/Kinnara/ModernWpf/issues/72
WinUI has a decent color picker, but there are other trade offs going with WinUI that make it inferior to the web environment (e.g. broken rendering of SVG/paths).
Yes, I believe the Windows UI (at least until 10 since I haven't tested 11 deeply) is becoming increasingly inconsistent because of the many UI frameworks out there. And, while I understand that each app's developer is free to choose whatever framework UI they feel is right for them, I find it hard to understand why Microsoft is not sticking with a consistent framework for all of its apps, it went even far by using Electron for its Teams app! However, the thing that I might never get is: Why is Windows itself (and its system apps, i.e Calculator, Notepad) isn't sticking to a single framework? Yesterday, at night, I turned "Dark Mode" on and was surprised to see that "Task Manager" keeps its Light theme. It's weird how Notepad++ has a "Dark" theme while Task Manager has not!
To "gratifies one's intellectual curiosity", check https://youtu.be/hn5QjtpjW_U
Ignoring 3rd party apps, to me the windows UI died with XP where the consistency stopped being somewhat pushed on the base OS/UX itself.
Strictly speaking nobody cares what APIs are being used or if there are multiple of them as long as they convey a consistent UX. If a consistent UX is pushed on a system level, even custom apps will try to stick to it (see macos).
But the sad truth is that on windows there is no longer one. W10 can show you dialogs from the windows 3.1 style up to a WPA, and you'll likely encounter a mixture all the time because there's no consistency.
I sometimes watch retro hw channels and looking at windows from 3 to 2k reminds me the stark difference.
Which is kind of tragic, given how Office was the testing ground for many Windows UI components.
So unless you're on the Office team and want to tell us anything, please do lmao.
https://news.ycombinator.com/newsguidelines.html
Edit: actually, since you've been repeatedly breaking the site guidelines quite badly (e.g. https://news.ycombinator.com/item?id=33007427, https://news.ycombinator.com/item?id=33006693) I've banned this account. Please don't create accounts to break HN's rules with.
I stop here in order to not throw profanity at MS engineers.
Any more details on what web technologies are being used in Visual Studio and what parts of the UI are done with web?
Node.js processes are invisible backend stuff.
Mostly related to Web stuff, Blazor or VSCode plugins that they are "porting" into VS.
I think you're not giving credit to the best part about the web: CSS.
I've been programming GUIs with Java AWT, Swing, and Qt for years. Nothing comes close to CSS when it comes to defining layouts.
My feeling is exactly opposite. CSS is messy and hacky way to build layouts (the famous “how to center a div”, etc.) while with UI toolkits it tends to be much more straightforward and standardized.
(Edit: fixed a typo)
The html-apps-as-a-local-app (like electron-based stuff) became popular prior to "how to centre a div" was answered.
IOW, they became popular in spite of having shitty layouts specifications.
After flex and grid it is just most complex and least friendly. You still need to know all the gotchas if you work with legacy projects or with imported components, but at least there are some sane ways to do basic layout tasks.
For me still nothing beats Adobe Flex when it comes to layout. Without much experience I could easily create UI that looked and behaved good without any resizing problems (although as I remember mobile phones were never supported).
Flex could be used on mobile through Adobe AIR, but it was slow, and felt all kinds of wrong. This was one of the downsides to Flex, too, in my experience.
Looking at this list: https://learn.microsoft.com/en-us/windows/win32/controls/ind...
Animation -> video tag
Button -> button tag
Combobox -> select tag
Date picker -> input type=date
Time picker -> input type=time
Edit -> input type=text or textarea
Scroll bar -> Not needed, automatic
Hot Key -> WAT?
IP Address Control -> Is this really so common it needs a custom box? does it handle IPV6?
List Box -> Not sure but making a list you can scroll through is trivial in HTML. you set a height of the container and mark it as overflow: auto. Done.
Pager -> seems irrelevant on a browser
Progress Bar -> progress tag
Property Sheet -> N/A
Rich Edit -> This was never good on Windows and it's also not good in HTML. In both cases if you want something that actually has a good UX you have to roll your own or find a library
Rebar -> Flexbox/Grid
Static Control -> most of HTML and far more easier to style
SysLink -> anchor tag
Tab -> trivial to implement in HTML but ok, maybe should be standardized?
Task Dialog -> dialog tag
Track Bar -> input type=range
Tree View -> You can do this with nested detail tags. Not sure it's any more work (in fact I suspect less) than a tree view in C++
Up/Down Control -> input type="number"
It seems all there are far more flexible.
I don't really know which apps you're referring to but I feel like most of the windows apps I use are not using those default controls or if they are they've added heavy customization
I'd see the one control missing most is menus
No. Menu isn't "the one control". Menu is one of multitude of controls. Go ahead and try and implement a treeview correctly with nested details (including all the necessary keyboard interactions). Meanwhile treeviews have been a part of native UI kits since... the 80s perhaps?
Oh, and since listviews are so "easy" in HTML, can I finally properly animate adding elements to one or removing elements? With height:auto? And without needing to redraw and re-layout the entire page? Right...
Dialog tag? Does it keep keyboard focus inside the dialog, or do you have to write non-trivial amounts of JS to have this required accessibility feature?
And so on and so forth.
And those are just the most trivial things native UIs solved half a century ago.
My favourite: A window with 1 (only one) input field which is not focused by default. Why ? Why do i have to click and type instead of only typing ?
As long as your list doesn't contain elements that are too complex, or has too many elements. Otherwise, you enter the world of lists with recycled items, and while Win32 and pretty much every other toolkit has it by default, and oh boy does the web suck at that.
Windows GUI API after 30 years still does not provide any kind of a layout manager forcing to position everything manually on size changes.
A trivial-sounding task like background image beneath controls required days of tries and many lines of code that looked like Voodoo practice than any rational programming.
Then the code uses a custom title-bar that was necessary to update to support Windows 11 snap layout menu. It turned out in the initial release of Windows 11 it was impossible to get that and rounded corners around the application window. Windows relied on undocumented heuristics to infer the desired behavior and if their guess was wrong, one is out of luck. At least Microsoft added API to fix that in a later Windows 11 update.
So it is not surprising that many applications just gave up on that and use WebUI. At least that works much more reliably and in the worst case one can look at the source code.
I mean webapps suck, cross-platform mobile apps suck, and native apps on both desktop and mobile are vastly superior and I will die on that hill. But I understand the tradeoff.
Let's be honest, we had multiplatform apps well before desktop-web apps. We are in this situation because GAFAMs pushed very hard the paradigm of always connected web applications (because they had no control over applications running solely on your computer). And since they won this ideological battle, there is not any more investment on multiplatform toolkits.
I really think that all of this is due to political reasons and it have never been about the superiority of the web technologies.
As long as you, you know, do no complex layouts or interactivity.
It's still a system for displaying static text documents, and no amount of lipstick can change that without re-doing the entire thing.
If you think it's not the case, animate adding a height:auto element to a list without the browser needing to re-layout and redraw the entire page
I think we are having the opposite problem: native apps are really starting to look and feel like web apps, and in many cases, they are.
The problem: the web has a terrible UI toolkit for desktop apps. It has clickable links and basic forms, that's all. It was made for documents, not apps. If you want better than that, you have to rewrite it all by yourself, or more likely, import a framework that does it for you. Traditional Windows apps all use system provided common controls, because they are good, and therefore they have a consistent look and feel, even through OS updates. It is even user customizable. Now it is not uncommon to see 10 different styles in a single screen, Windows since 8 is not even consistent with itself, and it is becoming worse every version. And it is not just aesthetics, there are serious usability concerns here, and system-wide customization is gone.