I do share your skepticism of Microsoft, but it looks like the economics and cash flow dynamics have changed drastically after the advent of the cloud.
Microsoft is more focused on getting developers onto its ecosystem and help them with open source projects with the hope that they will use its Azure cloud services and bring in the money.
My skepticism is a bit relaxed now and I have no qualms using .NET.
Actually they moved onto UWP, then they moved onto WinUI 3. Now all this talk about MAUI but they have done zero dogfooding of it. People are sceptical of WinUI 3 but at least they used it in Windows 11.
I love the fact that .NET and friends are open source, but my issue isn't with the licensing, it's with m$ funneling tons of resources on projects that (most likely) will end up being a dead end.
I'd also love if maui actually takes off since it does seem pretty neat, but until microsoft uses it for teams or any other of their clients, I'll pass.
They also aren't even targeting linux or web browsers, which doesn't really make this more compelling than Flutter.
.NET is used all over the place in Microsoft, including many Microsoft Teams services being migrated to .NET. Teams is listed on Microsoft’s .NET customers page.
The commenter was referring to Microsoft's GUI frameworks on offer in .NET and not .NET in general. Of course .NET is used everywhere at Microsoft. C# is one of the most popular languages in the world.
They were talking about Microsoft constantly re-inventing GUI frameworks and then abandoning them. For example, you bring up Teams, but Teams is actually an Electron app, which gets to the point of the commenter.
It isn't about whether it is open source or not. It's about what will be their stance on GUIs in a year or two and whether the projects of today are abandonded or not. Windows Forms, Silverlight, WPF, UWP, WinUI, Blazor, and then Xamarin Forms and MAUI, and then the third party ones like Avalonia and Uno Platform.
It's insane because actually all anyone wants is Windows Forms and WPF. If Microsoft made a cross-platform version of Windows Forms and WPF, they would be the cross-platform frameworks, at least for desktop.
If you want cross-platform WPF, there is Avalonia. For many normal-ish applications you basically change a few namespaces and that should be bulk of the work to migrate.
I do wonder sometimes whether MS should just pick it up as a default-endorsed desktop UI toolkit for .NET, but I guess rivalries, internal turf wars and other priorities make that difficult.
And how confident are you that my choice isn't going to be deprecated in a couple of years? I'm not certain that "momentum" is worth much from a company who changes UI frameworks as often as some people change underwear...
I wonder why this is. Is it because management is asleep at the wheel? Is it because teams competes with each other without direction from the top? Is it because heavy rotation of leadership who doesnt know better?
I'm not entirely sure. SkiaSharp is the driver behind all the 2D graphics, isn't it? But the SkiaSharp repo is effectively unmaintained except maybe to support critical things for MAUI.
SkiaSharp has some MAUI integration, but AFAIK it's not used to render things. At least not when I last looked. On most (all?) platforms native drawing methods are used (which fits well into how MAUI works on each platform, admittedly). This comes with the drawback that performance varies wildly across platforms, however. (NB: I've last looked deeply into MAUI about a year ago, so things may have changed.)
There's like... zero momentum behind MAUI. The wider industry has learned their lesson and nobody in their right mind would ever use MAUI for a new GUI project unless Microsoft converts 80% of their applications to it.
The only decent GUI framework for Windows is Electron, which is based on Chromium.
Microsoft's new GUI applications use Electron: VS Code, Azure Data Studio, etc...
In other words: Google makes the best Microsoft Windows GUI framework, as endorsed by Microsoft's own developers.
You're talking about momentum within Microsoft, I assume? There's no detectable momentum in the community at large. The ball hasn't even begun to roll. I have not heard or seen anyone using MAUI for anything serious so far. I've been writing Windows applications for 25 years at this point and am certainly not considering MAUI any time soon. They only just added keyboard accelerators--this is obviously not serious yet. To this day we are still writing Windows Forms applications. I'd consider embedding Blazor before I'd consider MAUI.
Having lived through a lot of Microsoft GUI frameworks, I would say that I won't be fooled this easily. Not with another half-assed unfinished library. I'll be interested once it qualifies as whole-assed and not a moment sooner.
Can’t believe I’m saying this - the UI declarations look so readable in XML. Time for a quick trip down the memory lane.
There was a period in 2000’s when XML use was at its peak. Everything was using XML. APIs were using SOAP transports (this was before REST became the de facto model). I used to loathe its verbosity in simple configuration files and wished for something simpler. Right around then, Douglas Crawford invented JSON - which really took off. The rest as they say, is history.
We forget how well, markup languages like HTML and SVG can describe anything visual. Compared to the alternative (declarative object API, such as DOM or SwiftUI), I will take *ML any day. And given the popularity of React, I guess I am not alone.
Really? I have never seen it in a meaningful way. Once developers started writing software to generate html, it has been a solid foundation for web UI.
I'm starting to notice this too. More readable than JSON in some cases, in fact. I suspect that while JSON is better for hierarchical data, well-designed XML is better for declarative portions of programs (e.g. UIs).
It works for simple cookies cutters UI. Anything fancy and original, you are on your own, and there is no way around it. The only thing that came close to combine the possibility of being orignal and readability is SVG, but it went nowhere.
MAUI is a cross-platform native control framework (like react native). They are currently not supporting self-rendered controls (there is some support in the codebase). Flutter is self-rendering (material style) with all the benefits (e.g. targeting a canvas, framebuffer, ...) and disadvantages (accessibility, reactivity, ...). If you prefer to be web-first (DOM, CSS) maybe Blazor Hybrid is the right tech which can deploy to Android, iOS, Browser, PWA, macOS or Windows might be your taste (like Cordova or Electron Shell for JS)
Desktop IMHO only work with WinUI on Windows or iOS apps on macOS (that is a thing right?)
However, complex is a thing. MAUI is a cross-platform native control framework (aka. it creates abstractions over platform native controls). Abstractions like standards are always the minimal common denominator. No specialized controls, not all properties exposed, etc.
That is not really a issue of MAUI particular, but something to consider when selecting a UI toolkit (vs. self-rendering cross-platform frameworks like ionic or flutter). If you want to use the full capacity of a UI toolkit, you need to code against that code (and stop being cross-platform). You can do this with .NET (use Android, iOS, Windows ui toolkits directly).
SwiftUI is just it's own distinct nightmare, and only supported on one platform. MAUI is meant to be cross platform so it makes perfect sense to use a neutral language that isn't tied to a specific programming language.
53 comments
[ 12.4 ms ] story [ 22.6 ms ] threadhttps://github.com/dotnet/maui
.NET is Open Source
https://dotnet.microsoft.com/en-us/platform/open-source
I do share your skepticism of Microsoft, but it looks like the economics and cash flow dynamics have changed drastically after the advent of the cloud.
Microsoft is more focused on getting developers onto its ecosystem and help them with open source projects with the hope that they will use its Azure cloud services and bring in the money.
My skepticism is a bit relaxed now and I have no qualms using .NET.
I hope I am not wrong.
I'd also love if maui actually takes off since it does seem pretty neat, but until microsoft uses it for teams or any other of their clients, I'll pass.
They also aren't even targeting linux or web browsers, which doesn't really make this more compelling than Flutter.
https://dotnet.microsoft.com/en-us/platform/customers
Teams was originally written before this particular release existed.
They were talking about Microsoft constantly re-inventing GUI frameworks and then abandoning them. For example, you bring up Teams, but Teams is actually an Electron app, which gets to the point of the commenter.
It's insane because actually all anyone wants is Windows Forms and WPF. If Microsoft made a cross-platform version of Windows Forms and WPF, they would be the cross-platform frameworks, at least for desktop.
I do wonder sometimes whether MS should just pick it up as a default-endorsed desktop UI toolkit for .NET, but I guess rivalries, internal turf wars and other priorities make that difficult.
Should I use MAUI? (https://learn.microsoft.com/en-us/windows/apps/windows-dotne...) Or WPF? (https://learn.microsoft.com/en-us/dotnet/desktop/wpf/overvie...) Or WinForms? (https://learn.microsoft.com/en-us/dotnet/desktop/winforms/ov...) Or WinUI 2? Or WinUI 3? (https://learn.microsoft.com/en-us/windows/apps/winui/#compar...) Or React Native for Windows? (https://learn.microsoft.com/en-us/windows/dev-environment/ja...) Or Blazor? (https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blaz...) Or Win32? (https://learn.microsoft.com/en-us/windows/win32/desktop-prog...) Or even Xamarin? (https://visualstudio.microsoft.com/xamarin/)
I feel like I might have missed a few...
And how confident are you that my choice isn't going to be deprecated in a couple of years? I'm not certain that "momentum" is worth much from a company who changes UI frameworks as often as some people change underwear...
Any insiders?
Source?
The only decent GUI framework for Windows is Electron, which is based on Chromium.
Microsoft's new GUI applications use Electron: VS Code, Azure Data Studio, etc...
In other words: Google makes the best Microsoft Windows GUI framework, as endorsed by Microsoft's own developers.
Why not avalonia?
What a peculiar way of spelling “WinForms”
Having lived through a lot of Microsoft GUI frameworks, I would say that I won't be fooled this easily. Not with another half-assed unfinished library. I'll be interested once it qualifies as whole-assed and not a moment sooner.
Just kidding, it's probably some intern's dashboard that monitors their Clippy staging environments.
There was a period in 2000’s when XML use was at its peak. Everything was using XML. APIs were using SOAP transports (this was before REST became the de facto model). I used to loathe its verbosity in simple configuration files and wished for something simpler. Right around then, Douglas Crawford invented JSON - which really took off. The rest as they say, is history.
We forget how well, markup languages like HTML and SVG can describe anything visual. Compared to the alternative (declarative object API, such as DOM or SwiftUI), I will take *ML any day. And given the popularity of React, I guess I am not alone.
IMV, xml is an excellent format for declaring and wiring up user interfaces, much more so than any other technology.
I only wish that we can build desktop applications directly with HTML, without any server running in the background.
This was actually quite comprehensible:
So MAUI still doesn't target the web like Expo and Flutter does?
It is meant for native apps on mobile and desktops
However, complex is a thing. MAUI is a cross-platform native control framework (aka. it creates abstractions over platform native controls). Abstractions like standards are always the minimal common denominator. No specialized controls, not all properties exposed, etc.
That is not really a issue of MAUI particular, but something to consider when selecting a UI toolkit (vs. self-rendering cross-platform frameworks like ionic or flutter). If you want to use the full capacity of a UI toolkit, you need to code against that code (and stop being cross-platform). You can do this with .NET (use Android, iOS, Windows ui toolkits directly).
https://developer.apple.com/tutorials/swiftui-concepts/explo...