News

WinUI 3 Team Asked About Delayed Open Source Plans: 'What Happened?'

Reddit AMA attendees also ask about multiple window support, XAML Islands and more.

A developer asked Microsoft's WinUI 3 dev team about delayed open source plans for the nearly two-year-old project that serves as the company's next-gen UI library for creating Windows apps. The answer in part was that taking the project to the open source community was "harder than we thought it would be." So it's still in the works.

Microsoft explains that WinUI 3 is the now-decoupled native UI platform component that ships with the Windows App SDK (formerly called "Project Reunion"). It uses Fluent Design to provide a native user experience (UX) framework for both Windows Desktop (Win32) and UWP applications, the two schemes that are being bridged in a "reunion."

WinUI 3
[Click on image for larger view.] WinUI 3 (source: Microsoft).

"It provides a way to gradually migrate existing apps written in familiar technologies like MFC, WinForms, and WPF, allowing you to move these applications forward at your own pace," the WinUI site states. "It also supports familiar languages spanning C++, C#, Visual Basic, and even JavaScript via React Native for Windows."

The Windows App SDK dev team recently hosted a live "Ask Me Anything" (AMA) event on the Reddit social site to mark the recent v1.0 debut. That's where the question about the delayed open source plans for WinUI 3 came up.

"When WinUI3 was first announced, going open source was one of the big promises of it, and we all got excited" said a post by dotMorten. "It's now almost two years since that promise, and open source planning has quietly completely dropped from the roadmap, and is never being talked about. What happened, and when will we see open sourcing WinUI, so we get better debugging, error reporting, and community involvement, like we've seen with .NET Core?"

Here's the answer:

Ryan Demopoulos here (the guy who has been talking about open source for those two years). You asked "What happened" -- a very fair question. Basically two things happened:

  1. Retroactively open sourcing a codebase of over 3 million lines, which includes fixing thousands of private API calls, was harder than we thought it would be.
  2. Our highest priority for important stable releases like 0.5, 0.8, and the recent 1.0 was to make sure we had the right features in place with as much stability as we could provide. This meant focusing the team on those capabilities, and that came at the expense of making progress towards open source.As mentioned, we just shipped WinAppSDK 1.0, which was a huge lift for the WinUI 3 team and everyone involved. We're now already looking ahead to 1.1, and also the holidays are about to hit. Internally, I've already set up a series of conversations with our team about what to do about open source -- when can we realistically get this done, given that there's still a lot of work to do and processes to put in place? Once I have a better sense of what's left and when we could tackle the remaining items, I'll update the community with this info. Likely at one of our community calls in 2022.

"Thanks for providing a detailed update about this!" chimed in another attendee. "Glad it hasn't been forgotten about."

More Delays: Multiple Windows, XAML Islands Etc.
Open sourcing the WinUI 3 UI component of the Windows App SDK is just one of the aspects of the project that are running late, as the AMA also discussed other features not yet fully baked, including support for multiple windows and XAML Islands.

In fact, the Windows App SDK portal that now serves as a roadmap shows "multiple window support" on tap for v.1.1, which is tentatively expected to ship in Q2 2022 (an AMA question asked "When can we open multiple windows in an app, it's so unbelievable that this is still missing."). Other features planned for v1.1 include push notifications for non-Store apps, local toast notifications and more.

Asking for Multiple Windows Support
[Click on image for larger view.] Asking for Multiple Windows Support (source: Microsoft).

XAML Islands, meanwhile, are "under consideration," in addition to controls for media, maps and inking, along with many other features. XAML Islands enables Windows coders to use new pieces of UI from the UWP on existing Win32 apps, including Windows Forms and Windows Presentation Foundation (WPF) technologies. Also, as of Windows 10, version 1903, developers can host WinRT XAML controls in non-UWP desktop applications using XAML Islands, as Microsoft explains here.

During the Reddit AMA, a Microsoft developer provided more information on the project when an attendee asked about the timeline for XAML Islands in WinUI 3:

XAML Islands is one of the top next priorities for WinUI 3. It's a pretty huge space; we learned a lot from XAML Islands in UWP XAML (WinUI 2), and we're already underway trying to bring that capability to WinUI 3 but in an improved form. My expectation of how this will unfold is that you'll start to see experimental Islands APIs showing up around when we ship 1.1, and probably won't have stable versions of the APIs until 1.2-ish. But the team is already actively working on this and that work will continue thru 2022, and into 2023, as we handle more and more scenarios. It's probably an overall 2 year+ journey that we want to bring online successively as quickly as possible.

As far as what did make into WinUI 3 in Windows App SDK v1.0, the release notes show these new features and updates:

  • We've added new controls (PipsPager, Expander, BreadcrumbBar) and updated existing controls to reflect the latest Windows styles from WinUI 2.6.
  • Single-project MSIX packaging is supported in WinUI by creating a new application using the "Blank App, Packaged..." template.
  • We now support deploying WinUI 3 apps without MSIX-packaging on Windows versions 1809 and above. Please view Create a WinUI 3 unpackaged desktop app for additional information.
  • WinUI 3 projects can now set their target version down to Windows 10, version 1809. Previously, they could only be set as low as version 1903. In-app toolbar, Hot Reload, & Live Visual Tree for WinUI packaged apps are supported in Visual Studio 2022 Preview 5 and GA.

Regarding the Windows App SDK in general, Microsoft said this in the AMA:

"What's new, you ask? The 1.0 stable version of WinUI can be used for shipping production apps. There is also a new high-level windowing API that allows for easy-to-use windowing scenarios that integrates well with the Windows user experience and with other apps. This release of the Windows App SDK is focused on supporting unpackaged apps on x86 and x64. Keep an eye out for ARM64 support, which will be added in the next stable release."

About the Author

David Ramel is an editor and writer at Converge 360.

comments powered by Disqus

Featured

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube