Hacker News new | ask | show | jobs
by Phil-bitplex 2218 days ago
I have re-read the readme about 5 times now, and I'm still not really sure what it is.

I _think_ its an API wrapper to make functionality available in older versions of windows, is is only in newer versions of windows? Or maybe other platforms that support UWP? It feels like the readme is written in startup-speak, where I was expecting it to be a little more... developer-y?

4 comments

I agree it's confusing. But here's the intention as far as I can tell:

UWP was originally "monolithic" and "closed" in several respects: your app had to either adopt all UWP facets (be a "UWP app") or none (be a "Win32 app"), new APIs only shipped with new Windows releases, the implementations were entirely closed source, etc.

In the past few years they've started to take pieces of what used to be UWP and pull them out into separate components. Unlike the monolithic UWP platform, these components can be adopted independently by Win32 apps without having to adopt all the other components at once, their runtimes can be distributed with your app outside of Windows and run at least a few versions back, their implementations are partly or wholly open source, they do planning and design reviews in the open on github, etc.

So far, the components they've done this with have been

* WinUI (a decoupling of the UWP UI framework)

* MSIX (a decoupling of the UWP packaging system)

* C++/WinRT, C#/WinRT and Rust/WinRT (a decoupling of the UWP object system and language bindings)

The "new" Project Reunion is basically an umbrella name for these decoupled UWP components, a declaration of their intent to decouple the rest of UWP in similar fashion, and a new github repository for planning this and designing the future evolution of the Windows developer platform in general. So the repository has issues posted by Microsoft developers about how the UWP app lifecycle and resource formats can be decoupled, for example.

As an example, how the "Win32" apps are to use these "new" UI features:

https://docs.microsoft.com/en-us/windows/apps/desktop/modern...

Desktop C++ users should use: "UWP XAML hosting API provided by the Windows 10 SDK (version 1903 and later)."

That's on current WinUI/UWP XAML, the new version in preview (WinUI 3) pulls out components deeper into the stack so it can run a couple more Windows versions back (to 1803 I think)
Having actually tried to use XAML Islands to get some UWP UI controls into a WPF application, I can say that the experience was absolutely horrible and I ended up giving up and not using the UWP control after all. Truly, truly horrible.

This was about a month ago.

I hope they do better this time.

> Truly, truly horrible. This was about a month ago.

Fascinatingly, it seems that Microsoft for their own purposes prefers to use Electron-based applications.

I'm curious if they will manage to reduce that strange state to something more reasonable.

Basically, this is about ensuring all of the different Windows, .NET, etc. APIs that Microsoft announces work and are available on any of the different flavors of Windows app development you can do. The main thing is that a large category of APIs are available to UWP apps (think Windows 8/10 Modern apps) that aren't available to desktop apps, and Microsoft has been trying to close that gap, since developers have basically said no to rebuilding their apps from scratch for Microsoft's newer app platforms.

The original goal was to force people to move to UWP, which is mobile friendly, processor architecture independent, etc. But the shift was too hard so nobody did it. If all of the APIs are available everywhere, legacy Win32 apps can continue to evolve, and at the same time, Win32 and UWP apps coming closer together makes an eventual shift over to UWP more practical because it won't require starting from scratch.

'At Build 2020 [1] today, Microsoft unveiled Project Reunion [2], its latest attempt to unify the Windows developer platform by reducing fragmentation between Win32 APIs and Universal Windows Platform (UWP) APIs. Microsoft also promises Project Reunion can modernize existing apps with the latest functionality, whether they’re built using C++, .NET (including WPF, Windows Forms, and UWP), or React Native. Additionally, it can decouple the APIs from Windows via tools like NuGet, and it brings new WinUI 3 and WebView2 releases.'[3]

Possibly related:

Windows Package Manager Preview

https://devblogs.microsoft.com/commandline/windows-package-m...

https://github.com/microsoft/winget-cli

[1] https://mybuild.microsoft.com

[2] https://github.com/microsoft/ProjectReunion

[3] https://venturebeat.com/2020/05/19/microsofts-project-reunio...

I think this is similar to how when they started adding features to angular 1 which resemble concepts from angular 2 so that people could start considering upgrading