I really wonder what they expect from open-sourcing it. Just to pretend how open they are? Or is there any real benefit to developers who target windows?
I really wonder what they expect from open-sourcing it. Just to pretend how open they are? Or is there any real benefit to developers who target windows?
MAUI is not exactly a competing product and is more about enabling cross platform UI development. Different intent.
WinUI is actually ok tech. It’s evolved over the years through a few iterations, now on WinUI 3.
Im mostly with you though. Until they rebuild the entire OS in it, including all of the administrative controls and tools, I don’t trust the longevity.
UWP came along in windows 10.
UWP is built on WinRT, and acts as a fully managed app container, similarly to how phone apps exist on your phone. It allows WinRT apps to be deployed to any Microsoft platform, Windows, XBox, Windows Phone, etc, but also Android and iOS, and also as PWA, and are guaranteed to run identically on any of those platforms. UWP apps must be written a fully managed language that runs on the CLR (ex: C# runs on the CLR, but C++/WinRT does not). UWP also uses the second generation of WinUI-family XAML UIs, which means all UWP apps use completely native UIs, instead of slow non-native Javascript shit in a web canvas.
The WinUI family of XAML UIs started with WPF, and a slightly incompatible version of it also appeared in Silverlight (WPF = WinUI 1.0), then was brought to UWP (= WinUI 2.0), and is now its own stand alone thing that any app can use, managed or not, as 3.0.
WinRT is not an attempt to move beyond .NET, instead it is their way of allowing .NET to natively call code, and make .NET languages first class in Windows.
Or not. I haven't thought about this stuff for years. Definitely possible I forgot the ordering of things.
C++/CLI and C++/CX are semi-managed, you only need to use the extensions when interacting with WinRT, although you're free to write your entire app in that dialect.
WinRT is a mechanism to express APIs in a way that is amenable to cross-language usage. It is built on top of COM, and is not a replacement for COM.
Its now a WinUI 3.x program, apparently, and now the Store no longer requires UWP programs, so WT now only needs to make the "ships inside of Windows release images" guys happy, which apparently is harder than making the UWP-era Store guys happy.
I don’t trust WinUI at all.
I was surprised, when I spoke to a former colleague, to find that an internal tool I wrote 25 years ago is still being maintained. Win32 as well.
Just remember, cobol is still in active use, today
You can observe this looking at the state of old outlook.
Also, it looks better, in my humble opinion. It's probably lacking features that I'm uninterested in.
Visual Studio's + sign expanders have had this bug for years that was finally fixed by changing to a chevron shape in 2022. Clearly this problem bugged someone on the dev team hence the fix. =)
WinUI 3's big changes (to get a 3.0 version number) is not with the XAML stack itself, but its new ability to be called by unmanaged apps as a normal UI toolkit, so it can finally be used by all apps. No more using Shell UI like we're writing Win 3.1 apps.
And yes, some stuff in Win11 still isn't WinUI, which is kind of annoying, but some of those dialogs hidden away in Windows are at least 20 years old, and probably would need to be entirely rewritten, not merely have their UI's updated.
Also, fun fact: The Win8/10 taskbar's code predates Avalon (the prototype/codename for WPF), and trying to change/fix it at all usually ended up breaking it. It's one of the few binaries on Windows that would not be recompiled to build a new release image in fear of breaking it. Rewriting the taskbar made sense, GETTING RID OF SMALL MODE DID NOT, GODDAMNIT MICROSOFT.
The taskbar that underwent a major redesign in Windows 7 (released after WPF)? Also, that binary is explorer.exe, surely it got rebuilt quite often for new ads. features, and fixes?
Also, the taskbar technically exists as a dll, not an exe, explorer.exe would link to it and run it if it was being ran as the UI shell. This is now split out to its own exe (Shell Experience Host iirc), and explorer.exe is now only File Explorer.
Since it exists as a dll, btw, this is how the Win10 taskbar injectors work, they just call the dll (which still ships in Win11) instead of letting Shell Experience Host do the Win11 thing.
The sane way of handling this, btw, is just use Shell Experience Host injectors to get the desired behaviors, such as using Windhawk and use m417z's taskbar height and icon size plugin (the third most popular Windhawk plugin); to match Vista/7 era small, set to height 32, icon size 16, taskbar button width 28.
> small mode
I recently noticed that they introduced an option for small icons. Not that it changes much, as the height of the bar stays the same, but hey. Personally I've been fine since they added back the option not to combine buttons unless full.
And this is hard to do. These dialogs often are _dynamic_, with third-party settings rendered as ActiveX controls.
The WinUI map component is a Webview2 instead of proper native component, Win2D is only a subset of the UWP one, ink is yet to be migrated, and lots of other issues.
Github repos are filled with thousands of issues, and they already did a cleanup a year ago where they simply closed enough tickets to bring it under 2000.
https://learn.microsoft.com/en-us/windows/apps/winui/winui3/...
https://learn.microsoft.com/en-us/windows/apps/develop/platf...
I think this is completely independent. You can simply use WinRT APIs, because Win32 Apps can use them now. WinUI3 apps are win32 apps.
> but also not a completely new tech.
Not sure about this. UWP APIs work out of the box. For WinUI3 you need the Windows App SDK, and it is much slower and heavy than UWP (out of curiosity I created a very simple app and it was fast just a few dozen kbs big)
> WinUI is an evolution of UWP which is an evolution of WinRT
> WinUI 3
> WinUI 3 still supports WinRT
> XAML
> Shell UI
> Avalon
> WPF
> WPF = WinUI 1.0
> Project Reunion
> UWP
> Win2D
> ATL/MFC
> Just go for MFC FTW
> wxWidgets as it is kinda MFC-y
> Or go with Qt
> MFC/Win32 + XAML Islands
So what you got?
- kexts
- Cocoa
- UIKit
- Carbon
- SwiftUI
- MSL
- XPC
- ARC
- plist
- CoreData
- CloudKit
- SpriteKit
- SceneKit
- RealityKit
Do you think anyone that never bothered with Apple's developer ecosystem has any clue of those names are for?
And that is a very small overview.
All the other "countless" frameworks are iterations of one of two lines: Win32/Native (WinAPI, MFC, WinRT, WinUI3, etc) and WPF/Managed (Avalon, WinUI2-3, etc). WinUI3 exists to bridge the gap.
Or go with Qt, though that doesn't use native controls.
Compare with wxWidgets' equivalent to QPushButton, wxButton, where there is a backend-specific header[1] and implementation[2] where 99% of the wxButton functionality is there (there is a `btncmn.cpp` under `common` that is shared across backends but that has very little code itself).
[0] https://github.com/qt/qtbase/blob/dev/src/widgets/widgets/qp...
[1] https://github.com/wxWidgets/wxWidgets/blob/master/include/w...
[2] https://github.com/wxWidgets/wxWidgets/blob/master/src/msw/b...
Add a QButton with no styling, you will have a standard button widget in macOS and Windows (or a KDE styled one in Linux). Now have an event that modifies the button in some way (adding a CSS style to it is common, but also changing the sizing manually will usually do it) and the style of the button will immediately change to a QT-style one. The difference is so obvious in Windows and macOS, that it would be laughable to claim otherwise; but you can also just ask the QT Group devs or the community, they've reiterated/experienced this behavior plenty of times.
This just sounds like another Microsoft UI stack