Hacker News new | past | comments | ask | show | jobs | submit login

> .NET has been held down by the image of its early days, but it has become a pure joy to work with recently

People have been saying that for the past 4 years.

As someone who's never used .NET but develops embedded apps for Linux, I had high hopes for it become the best story for crossplatform development, it still feels like the crossplatform is held by ductape. It's still Xamarin for mobile, Avalonia (a 1-man project) for desktop Linux as the only choice, 2 confusing different UI frameworks (WinUI vs MAUI). They don't take this as seriously as I'd hoped.

When they made it open-source and cross-platform 6-7 years ago, they should've thrown enough manpower that within 3 years (or even 2, this is Microsoft with endless coffers) it was unquestionably the best development option for nearly every scenario.

Additionally, it's my understanding they don't release proper debuggers on Linux? I'm not gonna install Visual Studio just to debug my .NET app bro.




> I had high hopes for it become the best story for crossplatform development, it still feels like the crossplatform is held by ductape.

Sorry to be pedantic, but it's cross-platform GUI that still doesn't have a good, officially supported story.

For non-GUI apps, cross-platform works very well! I've deployed a range of apps to production across Windows, Linux (both x64 and ARM), and Docker on Linux too (also both x64 and ARM) with great success.

I'd like to see an officially supported build for BSD, but that's about my only cross-platform want.


I think it is looking more and more like the established, de facto cross-platform GUI is a web page, embedded into some framework or not. And this is the general wind direction, not just on .NET platform alone.

People say cruft but sometimes I wonder how much more cruft it really is when you use the system browser rather than an embedded web browser. Usually many shared resources for it are already loaded into RAM.

If the end result is something like MAUI, I much rather just use a web page.


I just saw in the dotnet-labs project they've been building FreeBSD support.

https://github.com/dotnet/runtimelab/tree/feature/FreeBSD


> cross-platform GUI that still doesn't have a good, officially supported story

Yeah, but in the meantime there’re decent unofficial options. Once I compiled NanoVG into a DLL, consumed with C#, and implemented rich GUI on top of that. Worked pretty good overall. Eventually I’ve patched NanoVG for optimal font quality on low resolution touch screen of my target Linux device: https://github.com/Const-me/nanovg


Interesting, I haven't come across NanoVG before!


NanoVG is a 2D rendering library built directly on top of OpenGL or GLES.

Modern rich GUI needs much more than a renderer, but amount and development cost of that “much more” varies depending on GUI complexity. The device I developed is rather simple: low resolution screen, touch is the only input, English localization only, that’s how I was able to deliver in reasonable time.

For more complicated GUI I’d look for different technologies. Maybe QT, despite the high price.


I think that it takes many years to change a reputation - more than 4. A lot of devs don't like learning new things and they would have gotten deep into a different ecosystem before .NET was really open source.

You note that they open sourced it 7 years ago, but the original .NET Core was kinda an experiment. Microsoft didn't quite seem to know where they'd ultimately go with it. I think Microsoft really committed to it in 2018 or 2019. I think you also might have unrealistic expectations of how quickly things can be accomplished. Flutter is over 6 years old and still feels a bit mediocre to me - and I think Flutter is trying to solve a simpler problem since it isn't using native widgets.

For cross-platform UI, I think there is some disappointment in the .NET community. MAUI has succeeded Xamarin (except for Linux), but I think your sentiment that Microsoft isn't investing in it enough is shared by many in the community.

I think the problem is that Microsoft bit off more than it can chew with MAUI. Avalonia, Flutter, Compose Multiplatform, Electron, etc. tend to just paint non-native widgets via Skia or JS/HTML. With MAUI, Microsoft is offering actual native interfaces which means having to deal with a lot of platform differences to implement that rather than just painting their own widgets with a graphics library.

I'm not trying to talk you out of being disappointed with MAUI. It has been disappointing. However, I'm still hopeful for it simply because it's the only effort I see trying to offer a native cross-platform UI dev experience. Flutter, Avalonia, Compose Multiplatform, etc. are all saying "We'll just take a window and paint our stuff in it. Do you really care about an app feeling native?" It isn't always important, but it does feel like so many given up on native apps.

I'm hopeful that MAUI will keep getting better (as it has been) and that we'll have the opportunity for a native UI experience in the future.


This is not a .NET problem.

There really isn't a simple way to do cross platform (Windows/Linux/macOS) UIs with any language. The least bad option is to make it a web page, maybe wrap it with Electron.


It doesn't need to be 100% perfect. Just 99%. Don't let perfect be the enemy of great.

I write Qt GUIs for Linux+Windows, and no Windows user can tell it's not "native" (not that there's a native Windows look anymore, what with MS being schizophrenic about scrapping the UI framework and starting a new one everytime a new PM wants attention, only the classic widget look associated with Windows is still the 2000/XP/7 is recognizable).

Qt apps are super performant, and write once, run anywhere for 99% of GUIs anyone wants to create.

OSX users might be the only one that complain, but they're a tiny minority of users, and it's good enough in most cases, with fantastic performance to shut up the doubters.

Electron apps are hideous, bloated, and slow, relative to the Qt apps I write. I'm only held back by C++ being a shitty archaic language/ecosystem, and if .NET offered an alternative I'd jump ship immediately, that's why I'm so disappointed it's an afterthought.

P.S. Languages designed for "hypertext markup" are not meant to create rich UIs, and can never compete with a native framework. Everything in the JS world to create rich applications is a hack and you can see it in the code and the endless churn of frameworks. When I write something like QML, the intent is clear. When I look at the JS UI frameworks people are hacking hideous HTML templates and conditional logic, list iteration, etc in HTML templates. And nearly every JS UI framework project is written by 1-2 intermediate devs with comparatively little API design talent, who inevitably break backwards compatibility within a year or two.


Maybe Eto.Forms on .NET if you want to go native controls and simple for Windows, Linux, macOS: https://github.com/picoe/Eto

It's not from Microsoft but who cares. They don't have a reputation of holding onto new UI frameworks anyway.


Yea, I did some Qt work in ye olden times and it's a pretty good system, although it does have its own warts mostly due to being literally older than anything else. =)

I might need to look into it once more, at least it won't run out of steam the second I want to do something else than have a standard text box or an input field on the screen - like all those "easy ui" -systems do every time.


Yeah, but MAUI is basically react native, Blazor on Maui basically Cordova/electron (just with much better plugin support) and Maui also had once some support for rendered control.

While I agree it is hard, there is no one who could rule this space better than .NET if they just would like.

Problem is: this is developer division funding which is not the Windows (which owns a UI stack) or office division (react native actually). DevDiv previous UI toolkits WPF was loved but then abondon because of the duplicity of UI toolkits in Microsoft.


Livecode does the cross platform thing


Maybe the desktop UI story isn’t quite there yet. But I’ve been using .NET >= 5 web apps for years on linux, and it’s pretty solid with Rider. No issues debugging.

While I would prefer if I could use free tooling, Rider pays for itself in time savings very quickly.


Windowing and Widgets; those are the two things that always seem to be the biggest issue for cross-platform apps that should be trivial if the groundwork were in place.

I solidly blame MS for shipping something like 10+ of their own frameworks and never E.G. including QT or anything else open. Apple's just as bad, if not actively worse, for relegating even open 3D modeling languages to second class.


When it comes to the OSS aspect itself, debugging experience is not the strongest suit but if you overlook it - both Linux and macOS are very well supported by either VS Code / or any other LSP compatible editor + Omnisharp (or DevKit nowadays I guess?) or Rider (which is commercial but is often even better than Visual Studio, definitely faster too).


I would love that they support a framebuffer (rendered controls) or Linux native control rendering in Maui for exactly that reason. But no, QT continues it's painful reign.


MAUI is built using WinUI. It is same platform.


Maui is built on top of winui, Android ui and iOS UI. It just looks like WPF, which again influenced winui




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: