Windows native app development is a mess

Ecosystem fragmentation and churn

  • Commenters broadly agree Windows native UI is fragmented: Win32, MFC, ATL/WTL, WinForms, WPF, WinRT/UWP, WinUI 2/3, MAUI, WinJS, etc.
  • Microsoft keeps adding frameworks without clearly sunsetting old ones or providing a single obvious “current” choice.
  • Some see this as driven by internal politics/“impact” metrics rather than a coherent platform vision.

Win32 and older stacks: stability vs modernity

  • Many praise raw Win32, MFC, WinForms, and WPF as stable, well-understood, and astonishingly backward compatible (e.g., VC6-era apps compiling in VS 2022 and running on Win11).
  • Win32-based apps can be tiny, single-EXE, and run from Windows 95 through 11 (often under Wine too).
  • Downsides noted: dated visuals, limited HiDPI and dark-mode support, and lots of boilerplate / low-level ceremony.

Newer Microsoft stacks: UWP, WinUI, WinAppSDK

  • UWP/Metro is widely regarded as a failure: originally extremely restricted (no multi-monitor, admin, sideloading, etc.), then slowly relaxed, now effectively in maintenance.
  • WinUI 3 and Windows App SDK are seen as immature and risky for third‑party developers; some advise avoiding them unless forced to by Microsoft employment or legacy WinRT/UWP code.
  • Confusion persists over which stack maps to which “modern” Windows 10/11 visuals.

Web tech, Electron, and React Native

  • Many lament Microsoft itself using Electron or React Native for core apps (Teams, Outlook, parts of Settings, Start menu), seeing it as an admission native is too painful internally.
  • Critics argue Electron apps are bloated, slow, memory‑heavy, and hard to make feel properly native.
  • A minority defend web stacks (Electron, Tauri, React Native) as pragmatic and standards-based, especially given Windows’ native mess.

Alternative toolkits and cross‑platform angles

  • Strong interest in non‑Microsoft toolkits: Qt (often called “best in class”), wxWidgets, Lazarus/Delphi, JUCE, ImGui, FLTK, Avalonia, Uno, Fyne, Tk/Tcl, even game engines (Godot, Unity) for non-game UIs.
  • Debate over what “native” means: system widgets only vs. “non‑webview, compiled, well‑integrated”.

Deployment, .NET, and code signing

  • Friction around deployment: .NET Core/“modern .NET” not bundled with Windows; versions not fully backwards compatible; choice between bundling runtimes (larger EXEs) or forcing installs.
  • Some want Windows to ship multiple .NET versions side‑by‑side; others warn about bloat and compatibility guarantees.
  • Code signing on Windows (certs, hardware keys, Smart App Control) is described as a major barrier for indie devs; Azure Artifact Signing helps but is region/business‑limited.

Languages and safety

  • Disagreement over “crime to use C++”: some say safe modern C++ is fine for simple tools; others find going back from memory‑safe languages to C/C++ painful and error‑prone.
  • Rust + Win32 bindings are mentioned as a promising way to combine native APIs with memory safety.