Short history of all Windows UI frameworks and libraries
irrlicht3d.org
irrlicht3d.org
For everything else, unfortunately, I reach for React, which isn't listed.
For all it's "faults", WinForms worked and it was pretty sane for doing desktop apps.
Everything after that ranged from bad to absolute disaster and to prove it are the 9 (!!!) frameworks/libs they released since then.
It seems like everything made after 1995 is a deprecated abandonware, and whatever UI they’re building next is going to be dead before they finish implementing it.
App developers want consistent look of their application across various OSes, be it Mac/Win/Linux. This means developing with gtk for linux and winUI for windows is out of the window. Why do app developers want consistent look? because alternatively they would have to create documentation and screenshots for each os separately. And users wouldn't be able to help each other because Mac user would know different interface/look from Linux user.
OS developers, Apple/Microsoft don't have singular look. Microsoft didn't rewrite everything into WinUI settings , and anytime anyone needs to do anything serious they have to go through the win32 settings panels. This lack of OS coherency means that app developers don't feel need to stay consistent with OS, since OS itself is not uniform.
No, app developers want to write their code once. A consistent look is just a byproduct of that desire.
I’m also glad you didn’t mention anything about the customer, because ostensibly the app developer is doing this so they can deliver customer value faster, but at the cost of having an application that doesn’t fit into the native operating system. “Consistent look of their application across various OSes” usually means “invent your own custom look and behavior that isn’t standard for any OS”, which means customers have to spend extra time and effort to learn your bespoke UI customs rather than just use the ones they already know from their OS (gives the finger to Visual Studio Code).
The end result is that nobody gets to have an application that looks and feels like their chosen OS, and nobody gets to have a cross-platform application that looks and feels like other cross-platform applications unless they’re from the same vendor (and even then, it can be iffy).
> And users wouldn't be able to help each other because Mac user would know different interface/look from Linux user.
Not really. Customers can handle reasonable variations between software running on different operating systems. They do it today, for applications that work across different operating systems. Even when such an application takes most of its cues from another OS, there’s at least some deference to the native platform design in terms of menu design or control behavior.
What it would mean for the app developer is that they actually have to understand the design systems for the different OSes in order to build a design that can reasonably adapt to Mac/Linux/Windows. That’s why the “one design fits all” approach is so appealing when it comes to look and feel. You don’t have to understand anything. You don’t have to care about the native platform at all. There’s no extra work involved. You do whatever you want, the way you want it, and then throw it over the wall at the customer to deal with.
I think third there's also a third reason: flat design. It used to be nearly impossible to make custom UIs look as polished as the native ones with all their complex gradients and pixel-perfect bevelled edges. Now developers can use anything that can render a rectangle.
I have a laptop with a Ryzen 7 4800HS. It's a few years old but it has no business feeling slow. Yet opening the new winUI explorer or notepad shows visible lag in rendering the title/tab bar.
Native gui toolkits with no benefit over using electron, if anything I've seen plenty of electron apps that were more snappy than these. WinUI 3 is a dumpster fire.
I just select WinForms in Visual Studio and use that. Very simple. Can make a pretty complicated GUI app in about 5 mins.
Until 2024, history shows that Microsoft is the only company who can make a lot of failed or legacy technologies over and over and continue to be a successful business.
[1] https://github.com/Win32-WTL
[2] https://developer.microsoft.com/en-us/fluentui#/
[3] https://learn.microsoft.com/en-us/windows/apps/winui/ and https://learn.microsoft.com/en-us/windows/win32/windowsribbo...
Also the 'Win32' for 3.11 (and 3.1) was a (s)ubset thus named Win32s.
For better or worse, win32 is still relevant today, and many latter UI layers were wrappers over it (MFC, WTL, WinForms, WxWidgets, SWT [...])
win32 is by far the most enduring set of GUI APIs out there.
In particular I was interested in developing for Windows Phone, only to discover that the UI SDKs for them were same in name only and largely incompatible, so devs had to use similar tools to recreate similar UIs independently for desktop and mobile. That discovery also dissuaded me to not develop for Windows Phone either.
Of all the rest in that time, Silverlight was actually the best for rich client apps. I did a performance/capabilities comparison of Silverlight, Adobe AIR, and JavaFX and found Silverlight to be highly capable and performant on common hardware. It then went into a state of becoming discontinued though still used/supported for a good number of years. Netflix used Silverlight for the browser and apparently only stopped supporting it on Sept 13, 2023 though MS says it was unsupported since Oct 2021.
I don’t know if Silverlight was better on Windows, but as a cross-platform solution it never worked as advertised.
Lots of memories reading the OP, some good, some not so good. I still think WPF was really wonderful. It had a steep learning curve but it was so versatile and modern in so many ways. It’s a real shame that Microsoft lost all interest in it when moving on to the far inferior (IMO) UWP. WPF could be used for writing huge and complex apps while UWP never seemed to be good for much more than toy apps in my experience.
Microsoft can be almost religious about back compat to where long standing bugs won’t get fixed lest they break something (or special compatibility shims have to be built in to maintain those bugs for certain apps). You can’t run any Mac OS software from the 1990s on a modern Mac without emulation, but you can still run plenty of Windows software from the same time period as-is on a modern PC.
Of course one can argue which approach makes the most sense and there’s certainly merits to both.
That kills half of the entries. Maui/xamforms is not a ui toolkit but an abstraction... So plays in a different league (with e.g. react native for windows which is also maintained by microsoft).
Silverlight and wpf are the original sin here and born in and hyped by the dev division in a time where the Windows division was busy fixing XP and failing on Longhorn.
I would add that the webview2 (since html is definitely a ui toolkit on its own). And when you add Maui then you may also add Blazor.
- Chromeffects
- DUI
- Splash (Media Center)
- Splash (Zune)
- Silverlight (Phone)
- Silverlight (C#)
- Silverlight (JavaScript)
If you want to stretch it a little:
- Visual Basic
- Blackbird
1. https://irrlicht3d.org/impressum.html#:~:text=Irrlicht
I wonder if Blitz BASIC is still going...
We started with simple stable APIs for a common look and feel. For a while these were evolved and made available in other languages. This was back when native apps were consistent and intuitive and you could… uhh… actually write and ship them without bundling giant runtimes or checking a huge compatibility matrix.
Then around 2012 the train rounds the bend and screeeeech it hits some bad track and starts to derail. UI starts trying to emulate the web, a terrible UI platform, and sane compositional UI libraries and APIs are abandoned in favor of XML soup.
Since this stuff is a trash fire, this is followed by multiple incompatible attempts to replace or fix this. Most of these are abandoned dead ends. Meanwhile we also abandon the incredibly productive point and click WYSIWYG UI builders because apparently people want to write XML puke instead.
Meanwhile the dev community just said fuck it and went to Electron, creating today’s world where a “hello world” app with an OK button is hundreds of megabytes and has to load an entire private copy of a language runtime and rendering engine.
Versions of this comedy of errors have occurred on every other platform, and of course there has been little effort to create a cross platform UI API that’s sane beyond Qt (with its own problems) and dozens of half completed OSS projects.
So enjoy Electron I guess.
There was one sane human being who tried to do this a while ago:
https://github.com/andlabs/libui
It’s the only sane desktop UI project I’ve seen in almost 20 years, an attempt to create an actual cross platform common API wrapping well behaved mature native APIs. Like a modern reboot of wxWidgets, an also sane but old and dusty project.
But it’s abandoned of course, likely too difficult for one dev and nobody is going to provide financial support for anything that sane. It’s neither trendy nor profitable nor a wedge to try to ram a new language down our throats (e.g. Flutter and Dart).
Maybe AI will get good enough some day that we can use it to do a thing like that. I do have this weird idea that we might be able to use really good code generating AI some day to do a lot of very sane but boring and unprofitable things that would make computing a lot better.
Basically, the web's features are there to help you create advertisements and e-commerce frontends. They aren't productivity-focused, and the type of UI you get out of them by default reflects that.
It feels like lost magic from an ancient forgotten empire. There was a time in the ancient misty past when we thought about computing from the perspective of cohesion, reducing cognitive load, and helping users create things.
Go find a copy of Office before the “ribbon” or Visual Studio before XAML.
Apple is the only company that even tries anymore, and they aren’t great just somewhat cohesive compared to the mess on Windows and Linux. Linux is arguably better than Windows these days in some ways.
In terms of number of windows applications created, I would guess, Visual Basic accounts for a plurality of not the majority.