6 ms·
Short history of all Windows UI frameworks and libraries
- api 3y agoYou can kind of see the desktop UI train wreck in real time here. 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 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.
- kwertyoowiyop 3y agoWhy oh why did WYSIWYG go away? When I dabble in web development it’s so frustrating compared to what we had 20+ years ago with C# and WinForms. I just want to make some buttons and menus and hook them up to a little logic! Argh.
- tomcam 3y agoMay I ask what’s wrong with HTML and maybe a good CSS framework? I find it to be super portable and robust.
- crq-yml 3y agoIf you start adding traditional GUI application features - toolbars, tooltips, shortcuts, clipboard, drag and drop... You can get very close with all of those things in HTML, but not in the "native look and feel" way where the OS and framework actually knows what's going on and helps coordinate behavior. 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.
- poisonborz 3y agoJudging by the last decade, Microsoft itself doesn't know what a Windows "native look and feel" is. I doubt anyone would miss stylistic touches, colors or form elements. Just get the basics right - alt-activated menu, ctrl-scroll to zoom etc.
- api 3y agoAll kinds of great ergonomic UI design principles were forgotten overnight when the web hit. 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.
- yodon 3y agoIt's ugly and not cross platform, but WinForms still holds a special place in my heart. So quick and easy to build something good enough for many internal uses. For everything else, unfortunately, I reach for React, which isn't listed.
- PedroBatista 3y ago100% this. 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.
- ufmace 3y agoThis. I don't even really do Windows or Desktop dev anymore, but if I want to make a GUI desktop app, WinForms is still the first thing I reach for. Making a basic window with a few standard UI elements and some modest amount of code in a reasonable language to drive the actions is dead simple. And you can be confident it will continue to work fine for years, decades even.
- HideousKojima 3y agoUsing the Godot game engine for GUIs feels reminiscent of a modern WinForms to me, especially since it's all event-based.
- wslh 3y agoIt misses WTL [1], could also include WinUI and Fluent UI [2] and the Windows Ribbon Framework [3]. 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 https://github.com/Win32-WTL [2] https://developer.microsoft.com/en-us/fluentui#/ https://developer.microsoft.com/en-us/fluentui#/ [3] https://learn.microsoft.com/en-us/windows/apps/winui/ https://learn.microsoft.com/en-us/windows/apps/winui/ and https://learn.microsoft.com/en-us/windows/win32/windowsribbon/windowsribbon-guides-entry https://learn.microsoft.com/en-us/windows/win32/windowsribbo...
- Andrex 3y agoOh wow, Irrlicht! I remember very briefly messing around with that in ~2008. Seems like it's still around but the OP left the project[1]. 1. https://irrlicht3d.org/impressum.html#:~:text=Irrlicht https://irrlicht3d.org/impressum.html#:~:text=Irrlicht I wonder if Blitz BASIC is still going...
- voidfunc 3y agoStill a used engine, Minetest maintains a fork called IrrlichtMt which is more actively developed. I'm not sure the OG Irrlicht gets a ton of love anymore.
- sedan_baklazhan 3y agoIt wrongfully states that Win32 was the first framework. In fact, Win16 was the first framework. Win32 only appeared in Windows 3.11 in 1993 (also, in the newly released Windows NT as well).
- Lazonedo 3y agoIt's indeed not the absolute first, but it's the 'first' among those that are still in use today and whose compatibility wasn't dropped (you can't run 16 bits software on 64 bits windows without a third party tool). 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.
- karmakaze 3y agoActually it incorrectly states that Win32 is a framework--it's an API that all frameworks use. Also the 'Win32' for 3.11 (and 3.1) was a (s)ubset thus named Win32s.
- steve1977 3y agoIt also says Win32 was released in 1985, so the author probably just meant Windows API.
- voidfunc 3y agoSo basically use MFC if you care about longevity otherwise good luck.
- kid64 3y agoForgot ATL
- ankurdhama 3y agoThat was for creating and using ActiveX from C++, I wouldn't count that as UI framework.
- grork 3y agoI expected this to be longer. I wish it was longer. Plus, if you want to be somewhat-complete, theres so many that are missing: - Chromeffects - DUI - Splash (Media Center) - Splash (Zune) - Silverlight (Phone) - Silverlight (C#) - Silverlight (JavaScript) If you want to stretch it a little: - Visual Basic - Blackbird
- oaiey 3y agoTo be honest, Maui evolves xamarin.forms and winui3 is an evolves from winui, uwp and winrt. 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.
- dist-epoch 3y agoThe most important Windows UI framework is missing - Electron
- pornel 3y agoFor someone who’s not a Windows developer this situation is incredibly confusing. I have no idea what is the correct way to make a modern Windows application. 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.
- Lazonedo 3y agoMicrosoft doesn't even seem to care to dogfood outside of using those things for the most basic apps bundled with Windows and those basic apps really show why nobody should use those toolkits. 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.
- wslh 3y agoGenuinely asking: nowadays, are there desktop UI application beyond the well known ones? Many of the new popular ones (e.g. Slack) basically have an HTML renderer.
- adamzochowski 3y agoThe problem is twofold: 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.
- 3y ago
- xnx 3y agoMentioned in another thread, but the existence of tools like Figma is a side effect of WYSIWYG GUI building becoming so difficult.
- zogrodea 3y agoI wonder how accurate that is. I heard before that Microsoft’s WYSIWYG (Expression Blend) was shunned by designers who preferred other tools which didn’t output useable code. Maybe Figma is an effect of designers’ preferences? Both might be true I think.
- jesuslop 3y agoXAML is a nice declarative UI lang. One can use it even in Powershell scripts.
- rr808 3y agoOne thing in common is that to write a GUI application they're all much simpler, faster and more powerful than modern Javascript frameworks. Yeah distribution sucked but I feel we've got a long way to keep up.
- jbandela1 3y agoThey forgot Visual Basic. In terms of number of windows applications created, I would guess, Visual Basic accounts for a plurality of not the majority.
- vyrotek 3y agoOh, WinForms. We had some good times in high school and college. One of my fondest projects was learning the Boids algorithm and creating a fish ecosystem. https://twitter.com/vyrotek/status/1489300258790129666 https://twitter.com/vyrotek/status/1489300258790129666
- karmakaze 3y agoIn the time spanning from WPF and UWP is when I lost all interest in developing for Windows as a platform. 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.
- pavlov 3y agoSilverlight UIs delivered via the browser plugin were terrible on the Mac. The look and feel was completely off somehow. Even Flash/Flex was better. I don’t know if Silverlight was better on Windows, but as a cross-platform solution it never worked as advertised.
- karmakaze 3y agoInteresting, I had only tested on Windows and Linux. I suppose both MS/Apple were playing the same "worse experience on other platfoms" game, a la iTunes of the day. (Now Apple Music sucks period)
- samiq 3y agoAlso worthy of mention ReactNative Windows which wraps around winui with JavaScript, which is widely used by Microsoft both on windows as office, also worth mentioning that FluentUI web is also widely used at Microsoft to build OS apps (copilot as an example) with wrappers of the chromium web view
- logbiscuitswave 3y ago20 years on, and so much of this still resonates with me: https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost-the-api-war/ https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost... especially after reading the OP. 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.
- KerrAvon 3y agoI feel the need to note that Apple’s attitude to compatibility was always more nuanced than Joel portrays it in this post: they did actually try to maintain compatibility in classic Mac OS. They weren’t quite as obsessive about it as Microsoft was, and would sometimes deliberately break with the past to improve maintainability of the OS, but it was not in their interest to break apps and they knew it. To this day, there are hacks even in modern macOS to support badly behaving apps.
- logbiscuitswave 3y agoApple’s approach to back compatibility was always give a stopgap to bridge generations. The irony is they would undergo heroics to support that back compat across generations (Mac 68k emulator, Classic environment, Rosetta, Rosetta 2) only to unceremoniously dump that work as soon as they could. 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.