Microsoft's roadmap for developing Windows applications is opposed by some programmers who want to see a cross-platform solution, rather than just being Windows-only.
Spanish developer José Nieto this week raised an issue on GitHub, stating that WinUI, which Microsoft is positioning as “the native UI platform for Windows 10,” should target not only Windows, but also Linux, Mac, iOS, Android and WebAssembly – this last so it would also run in a web browser.
This would go against the normal pattern, where a native UI platform is able to take advantage of all the features of the operating system, fits in seamlessly with its look and feel, and is optimized for performance. Supporting cross-platform is a burden that requires compromises.
The "conceptual overview" for WinUI, which Microsoft says is the native UI framework for Windows 10. Click to enlarge
The situation with Windows is unusual though. The look and feel of the operating system is less consistent than it should be, thanks to lots of legacy along with the dual personality deliberately introduced for Windows 8.
The modern app platform introduced for Windows 8 evolved into the Universal Windows Platform (UWP). Even in Windows 7 days, the UI was messy. Windows Presentation Foundation (WPF) was the new thing and renders using DirectX graphics, while the old Win32 API does not.
While Microsoft calls WinUI the native UI in one document, in another it says that the Win32 API is “the original platform for native C/C++ Windows applications that require direct access to Windows and hardware,” and says it is “the platform of choice for applications that need the highest level of performance and direct access to system hardware.”
The Fluent Design System which Microsoft is promoting to WinUI developers is itself cross-platform, described as “natural on every device,” with examples for Web, Windows, iOS and Android.
Considering all these factors, perhaps the idea of a cross-platform WinUI is not so unreasonable.
Nieto is an enthusiast for XAML, the XML-based presentation language used in different guises by various Microsoft frameworks. If Avalonia can use XAML for cross-platform GUI applications, why not Microsoft?
The ensuing discussion is illuminating, in terms of why Microsoft has lost the loyalty of some of its developers. WPF was well liked for its power and flexibility, but UWP has not been a satisfactory replacement.
“It’s not universal,” says Nieto, since the death of Windows mobile “truncated the One Windows vision.” Sandbox restrictions make it unsuitable for advanced applications, the role of the Microsoft Store is troublesome, and third-party controls are lacking, he said.
WSUSper it with us, Insiders: Windows 10 2004 is getting closerREAD MORE
Microsoft does in fact address many of these issues in WinUI, which can use the Win32 app model as well as UWP. It also has an advantage over WPF in that it easily supports languages other than C# and Visual Basic. WinUI itself is written in C++. WinUI is also, according to Microsoft, ideal as a “native Windows target for web and cross-platform frameworks,” an example being React Native.
Canadian developer Mario Pintaric says that UWP is fine for everything other than “kernel level tooling,” arguing that “you have a much better user experience from multiple perspectives (security, ease of deployment, install/uninstall experience, etc). The security sandbox of UWP is an important (essential) feature. In many respects UWP is now well ahead of WPF.”
Pintaric acknowledges though that Microsoft made errors with UWP, both in quality and in failing to meet the requirements of line-of-business (LOB) applications in areas like a Data Grid, and validation states for form applications.
“Most of these have been addressed but it took too long,” he said, concluding that “I completely agree that developers have lost hope Microsoft will do the right thing.”
Perhaps the most telling criticism comes from another developer who observes that UWP was really designed for mobile and touch control. “Most developers use UWP to develop Desktop apps, and the UI does not match that,” he said, giving examples for various controls like scroll bars and radio buttons. “The biggest problem is that things that should take 10 minutes, usually take two hours or more,” he said.
How can Microsoft win back developer loyalty? The company has excellent developer tools in Visual Studio and Visual Studio Code, but the range of choices if you sit down to code a GUI application for Windows remains bewildering.
It will take more than a few statements to convince developers that WinUI really is the future. A strong launch for Windows 10X, Microsoft's latest go at a modernised Windows, would help. In the meantime, developers fall back on another, and more welcome, feature of Windows: that applications built with old and enduring technology like Win32 and WPF still run fine. ®