Top
Best
New

Posted by domenicd 15 hours ago

Windows native app development is a mess(domenic.me)
309 points | 327 commentspage 5
samiv 12 hours ago|
Seems to me that really the simplest solution to authors problem is to write C++ safely. I mean...this is a trivial utility app. If you can't get that right in modern C++ you should probably just not even pretend to be a C++ programmer.
rwmj 11 hours ago||
Just write C++ safely! Why didn't we think of that?
array_key_first 4 hours ago||
C++ is hard to get safe in complex systems with hard performance requirements.

If the system is simple and you don't give a shit about performance, it's very very easy to make C++ safe. Just use shared_ptr everywhere. Or, throw everything in a vector and don't destroy it until the end of the program. Whatever, who cares.

flufluflufluffy 7 hours ago||
Yeah he literally answered his own question and then used a random excuse for not going with the option.
GeoAtreides 11 hours ago||
come back home Delphi 7, all is forgiven
dardeaup 10 hours ago|
It seems that peak native Windows dev tools were Delphi 7 and VB6. It's a tragedy that something at least as good as VB6 is not still developed and supported by Microsoft.
int_19h 2 hours ago|||
I'm not sure how you define "native" here. If you mean native widgets then WinForms does what you want, is still fully supported, works on modern .NET versions, and Visual Studio still has all the GUI designers etc. WinForms is very obviously a calque of VCL, as well, so it can do everything Delphi did, but better.

If you mean native code then VB6 doesn't belong in this category (even if you compiled it to a standalone .exe it was still effectively bytecode).

rcleveng 9 hours ago||||
There's nothing as good as VB6 that's developed and supported by *anyone*. It's not a Microsoft only phenomena.

I think programmers started wanting "real" languages (notice the quotes), and henceforth got more complexity and things take longer, although with GenAI, we may be back to the "draw as screen and do this" that we were with VB6. Just now the source generated should be considered the object code, and the prompt is the new source (at least for those types of apps)

NetMageSCW 6 hours ago|||
I think WinForms with C# or VB is as good, if perhaps not as fun or approachable.
jerhewet 4 hours ago||
Steve Gibson, Gibson Research.

https://www.grc.com/freepopular.htm

Just scroll down the page and look at the size of the completely self-contained executable programs. THIS is what Win32 is capable of. Something we always had with Win32 that was thrown away with .Net and C#.

And _please_ just spare me your opinions of how Steve Gibson "doesn't know anything about security". That's not what's important here. What's important is how freakin' small his full-on GUI stand-alone executables are.

EDIT: Just noticed this on his page.

Total Historical Count of files downloaded from this page: 52,292,601

int_19h 2 hours ago|
.NET runtime has been bundled with Windows since Win2003.

And if you don't have to drag the runtime around, .NET binaries are even smaller than that, since the bytecode is more compact.

bentt 12 hours ago||
I wonder if Unity (the game engine) actually has a sneaky potential here. It’s cross platform, fast, and maybe just maybe less bloated than carrying around an entire browser like Electron?
Vedor 12 hours ago||
Not sure about Unity, bot Godot is already used to build tools, like Pixelorama (pixel art graphics editor, a bit akin to Asesprite), RPG In A Box (game engine targeted for RPG games), Bitmapflow (tool to generate in-between animation frames), and probably more I don't know about.

Well, if I remember correctly, the Godot editor is written in Godot.

Supermancho 8 hours ago||
Godot is written in C++ It may have some GDScript in there, but I don't think so. The sourcecode is available: https://github.com/godotengine/godot
hofrogs 6 hours ago||
The C++ code there (at least in the editor directory) initializes and configures godot ui components that the editor is made of
v9v 12 hours ago|||
I think Godot is a possible contender as well. There are a few non-game applications made with it, and they've recently added a docs page tailored to non-game application development: https://docs.godotengine.org/en/stable/tutorials/ui/creating...
criddell 8 hours ago|||
What's the accessibility story like? Do Unity applications work well with screen readers?
fsloth 12 hours ago|||
Sure but different target market.

CRUD apps are non-trivial.

If Unity were to ship platform native replacement for WPF equivalent (hell or even winforms) it would become a really enticing app development platform.

flohofwoe 11 hours ago||
> CRUD apps are non-trivial.

Aren't these pretty much the most trivial UI apps possible? E.g. compared to other native apps like Photoshop, Blender, Visual Studio or Office, CRUD is mostly just about banging together custom UI frontend for a database.

Unity's editor is implemented in its own (old) UI system, same with Godot, so in both engines it's possible to create 'traditional' non-game UI applications.

irishcoffee 12 hours ago|||
Just use Qt. Native, cross-platform, works like a champ.
NetMageSCW 6 hours ago||
Cross-platform and native never works well.
array_key_first 4 hours ago|||
Qt works very well because it's well thought out software. There's a lot of really shit solutions out there, but basically nothing touches Qt.
hermitcrab 5 hours ago||||
Nothing is perfect, but it works well in my experience.
irishcoffee 5 hours ago|||
You’ve never used Qt
pier25 12 hours ago|||
Flutter is probably better suited for apps
moron4hire 12 hours ago|||
Unity's 2D UI stuff is very poorly designed, with lots of edge cases where auto-calculated fields can hit a divide-by-zero issue and then become unrecoverable because the value is now NaN which can't be auto-calculated back to a number.
jordand 12 hours ago|||
Unity has a big runtime that needs to be bundled with it to run
netbioserror 12 hours ago||
Speaking from personal experience, Godot has the sneakiest potential. It has all the UI components and flexible layout containers you could ask for, a signaling system that lets you put the methods from less relevant components in the scripts for more relevant ones (making for a more compact project), and you can also manually compile slim template builds for cleaner distribution. There's a future there.
hofrogs 12 hours ago|||
There are already tools made in Godot, including the godot editor itself. This page has some of them: https://gamefromscratch.com/godot-developed-non-game-applica...
tomcam 10 hours ago|||
What’s the story for accessibility and non-LTR text boxes?
Pesthuf 6 hours ago||
Thanfully, you don't need to write p/invoke stuff yourself anymore. https://github.com/microsoft/cswin32 creates methods and all related structs for you. It's also AOT compatible (if you specify it). It works for calling C and COM functions.

I mean, not like this brings Windows development anywhere close to "modern", if anything, it feels like you're moving into the opposite direction, but at least this solves the "The modern APIs don't provide the specific functionality I need" problem that plagues all of Microsoft's "nice", "modern" abstractions…

ocdtrekkie 11 hours ago||
I write .NET Framework 4.8 apps. And I will until .NET has an actual support lifetime. 4.8 will still be supported and receiving security updates in ten years, .NET 10 will be gone in 2.

Hobby projects should not be built on a platform that is constantly changing underneath.

wvenable 39 minutes ago||
It doesn't really matter anymore. When .NET 10 is done, there will be .NET 12 and all your apps will run just fine on it.

.NET framework used to get new versions as well; it's just that it's not anymore. After moving on to newer versions, .NET framework feels clunky now. Also you end up missing out on a decade of new libraries.

Marsymars 8 hours ago||
My company is moving our main LOB app to .NET 10 in the near future. It's taken a while but has gotten to the point where .NET 10 has pretty much caught up to .NET Framework for feature support, and our take is that the cross-platform support, performance gains and newer C# versions are worth more than the stability of .NET Framework.

And the gap's going to keep growing - doing the upgrade now means future upgrades can be more frequent and incremental, rather than trying to move 4.8 to .NET 20 in a decade.

pjmlp 7 hours ago|||
Unfortunely I have reduced my use of .NET, because some of the partner products that we use, or customers that were into .NET, took the opportunity for going into another technology stack.

Basically the kind of customers that were affected by the breaking changes, between Framework and Core, decided to keep the old stuff running in Framework, and consider other alternatives going forward.

Not sure how much these kind of customers matter to the .NET team's upper management in customer acquisition, but they surely lost a few along the way.

And now there is even CoPilot based migration tooling on VS 2026, because most likely there aren't that few that are still chugging along with Framework.

ocdtrekkie 7 hours ago|||
If .NET had a desktop UI for Linux it might be worth it for me, but we haven't gotten there yet somehow.
qayxc 4 hours ago|||
But there are libraries that do that, e.g. https://avaloniaui.net
Marsymars 7 hours ago|||
Yeah we don't have any plans on moving our WPF app to Linux, but the rest of our stack (job scheduler, ASP.NET service, web APIs, etc.) all has real potential to get off of Windows.
jongjong 3 hours ago||
Microsoft has been butchering software development for decades and maintaining dominance through pure business, legal and government connections. It's become like Oracle.

Developers being forced to use horrible Microsoft products is the logical consequence of that.

As a software engineer, most of my job exists to give credibility to the narrative that Microsoft is useful... And I don't even work for Microsoft. It's clear that there are deals behind the scenes which force many large companies into Microsoft contracts. The engineers have to work with what they get and pretend the tech is OK but behind the facade, it's clear from the jokes on the Microsoft Teams chats that they think differently!

ilovecake1984 8 hours ago||
There seems a lot of conflation between GUI frameworks and interacting with the OS in this article.
whobre 12 hours ago||
Interestingly, no mention of WTL
domenicd 11 hours ago|
Ahah, I knew I missed one!

I originally had ATL in there, but my proofreading squad (Claude and ChatGPT) told me that ATL was a more niche thing for COM, and looking at the Wikipedia article I was convinced they were right.

But WTL was what I was thinking of---the step between the MFC and .NET that I forgot.

int_19h 2 hours ago|||
WTL was never a "step between the MFC and .NET" in any meaningful sense. It was more like a very lightweight subset of MFC+ATL, never officially supported or recommended, just something that Microsoft used internally that it decided to publish and then community picked up.
odkeidjwidj 9 hours ago|||
> but my proofreading squad (Claude and ChatGPT) told me

With all due respect (seriously): fuck off man

This is why you don’t use these stupid fucking tools for this

Dig1t 6 hours ago|
>Displaying a tray icon with a few menu items: not available. Not only does the tray icon itself need P/Invoke, the concept of menus for tray icons is not standardized

Having never written Windows apps, I am surprised to learn how disorganized and chaotic this all is.

More comments...