Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update: WinUI 3 roadmap feedback #888

Closed
jesbis opened this issue Jun 17, 2019 · 103 comments
Closed

Update: WinUI 3 roadmap feedback #888

jesbis opened this issue Jun 17, 2019 · 103 comments
Assignees
Labels
discussion General discussion

Comments

@jesbis
Copy link
Member

jesbis commented Jun 17, 2019

Update: WinUI 3 roadmap

Thanks everyone for the great discussion and feedback so far on the WinUI 3 roadmap (#717)! The team is paying attention to every comment and issue that comes in.

I wanted to give a quick update on some of the main areas of interest that came up.

Availability Roadmap

2.2 Stable Release

The next release of WinUI will be 2.2 stable in July. Further development will continue on the 2.x versions while we work on 3.0 in parallel.

3.0-Prerelease Preview

We're hoping to release an early preview of WinUI 3.0 before the end of the year. We're currently on track but timing will be tight - we have lots of work to do between now and then.

The preview would be missing features but would enable building basic apps to get a feel for WinUI 3.

This should include a preview of Xaml Islands support on Creators Update and up (15063+) for adding WinUI UI to existing apps including WPF, WinForms, MFC. It would also include a temporary Visual Studio template (probably via a .vsix extension) for creating a new UWP WinUI 3 app.

It would not include "WinUI in Desktop" yet (more on this below).

3.0 Stable Release

On track for next year.

Open Source

We're working toward open source but don't have a firm ETA yet. It will start as a branch in this repo.

We're planning to open-source as early as we can and move our active development to GitHub. That means the code won't be fully clean and modern yet compared to the existing WinUI 2 code in this repo - we have lots of Windows C++ code with lots of history 😊

Feedback summary and updates

Some highlights of the feedback we've heard and where we're at, in no particular order:

WinUI in desktop applications

We know that using WinUI in desktop apps is the most interesting scenario for lots of Windows app developers. The goal is to enable using Xaml markup + WinRT APIs (via .NET or C++) as the UI for a win32/desktop app (instead of a UWP app), without needing to use Xaml Islands.

@LucasHaines and @marb2000 are working closely with the .NET and Visual Studio teams on this and can share more details as the work evolves.

Note that UWP support will be ready before win32, just because UWP is less work.

Our focus is still Windows 10 and 8.1, but we hear the feedback that some of you still have users & customers on Win7 and we'll be evaluating the market and options over time.

Tooling and templates

We're still planning to (in order):

  1. Replace the current Visual Studio default UWP app templates with:
    (UWP app model) + (WinUI 3.0 UI) + (.NET or C++ language)
  2. Add new Visual Studio default desktop app templates for:
    (Win32 app model) + (WinUI 3.0 UI) + (.NET or C++ language)

We're also starting to think about what migration helper tools we might build, starting with tools to migrate existing UWP C# apps. Your feedback on this has been helpful!

F# support

It was awesome and informative to hear all the feedback on F# and the potential benefits for Xaml apps. @kathyang - one of the interns on the WinUI team - has been investigating this and talking to the F# team, and would love to hear your ideas in the tracking issue #740.

Just to set expectations: if we did anything to support new languages it would have to be after the initial WinUI 3.0 release, just because we have lots of work to do to get 3.0 working with the currently-supported languages first. It's also possible that we could accept community contributions after open-sourcing WinUI.

Cross-platform UI

We hear you about .NET and cross-platform UI. This is a complex area with lots of potential opportunities.

The WinUI 3.0 release is focused on providing a great solution for Windows client developers, but we're thinking about future opportunities. We're also big fans of the Xamarin team and are in touch with them.

Some of you also mentioned Uno specifically: we think nventive (creators of Uno) had a great presence at Build the last couple years and our team spent a good amount of time talking to them to understand their approach to technologies and industry.

WebAssembly is also increasingly interesting and on our radar. We think this is an exciting space with many improvements on the horizon which Microsoft is continuing to invest in, and we love the work that Mono, Uno, Blazor and others are doing.

INotifyDataErrorInfo etc.

@LucasHaines is working on getting the input validation work we showed at Build 2019 fully integrated into WinUI 3 and would love any further feedback on:

Features (new & old)

New features

We've shifted active feature development on Xaml from UWP to WinUI 3.0. That means most new features will require WinUI 3.0 to be a bit more stable before we can start development on them. We review every proposal that comes in and we've started tagging those proposals in with the needs-winui-3 label so we can revisit them as soon as we can.

Please do keep filing new feature proposals for things that would help you use WinUI 3!

Desktop parity (e.g. WPF)

Thanks for sharing the feedback about WPF parity and ensuring WinUI 3.0 is a fully featured platform for rich desktop development. This will continue to be an ongoing effort for us.

For background info, some of the goals of UWP Xaml included:

  • improving on the performance, battery life and scalability of previous Xaml platforms like WPF and Silverlight
  • ensuring all UI can adapt to multiple DPIs, screen sizes, input modes and device types

Which required some changes to previous Xaml functionality, including:

  • optimizing and extending existing controls
  • introducing new controls and UI patterns, like NavigationView
  • supporting new user input modalities, like super-low-latency inking
  • introducing new Xaml concepts, like {x:Bind} instead of {Binding}
  • tighter integration with low-level systems, like SwapChainPanel with fully native DirectX11 and DX12 support instead of D3DImage
  • integration with the UWP app model, which can provide benefits like better app lifecycle management, resource loading and install/uninstall experience
  • removing particularly slow features with relatively low usage until they could be optimized and reintroduced over time, e.g. radial gradients (which is coming back fully optimized hopefully soon: Proposal: RadialGradientBrush  #266)

As well as improved threading, hardware acceleration and many other optimizations.

TLDR:

WinUI 3.0 includes many features that aren't in WPF, but WPF has some features that aren't in WinUI 3.0.

We're continually working on expanding the features in WinUI Xaml and Composition, so if there are specific WPF features you rely on that you'd like to see in WinUI 3 then keep letting us know by opening a new issue, commenting in the "WPF features that should be in WinRT XAML" #719 issue that @mdtauk started, and voting on existing issues/comments.

Your continued feedback will help us prioritize what to focus on!

Thanks everyone!

WinUI 3.0 is a marathon and not a sprint so keep looking for updates over the coming year.

Special thanks to all-star commenters like @mdtauk, @MarkIngramUK, @galvesribeiro, @Mike-EEE, @TonyHenrique, @eklipse2k8, @mrlacey as well as @weitzhandler, @jozefizso, @simonferquel, @reli-msft, @kmgallahan, @GeorgeS2019, @meir-pletinsky, @zezba9000, @mfeingol, @bchavez, @Shidell, @KyleNanakdewa, @Happypig375, @wbokkers, @meteorsnows, @ekral, @contextfree, @Pinox, @GeertvanHorrik, @shaggygi, @riverar, @r7dev, @natemonster, @mfe-, @khoshroomahdi, @jkoritzinsky, @edgarsanchez, @charlesroddie, @4creators, @wjk, @vitorgrs, @thomasclaudiushuber, @paulio, @niels9001, @lhak, @huoyaoyuan, @anthcool, @Suriman, @RyoukoKonpaku, @GiorgioG, @Felix-Dev, @dotMorten and everyone that gave feedback on the roadmap so far!

Please leave a comment if you have other questions.

@jesbis jesbis added the discussion General discussion label Jun 17, 2019
@jesbis jesbis self-assigned this Jun 17, 2019
@jesbis jesbis pinned this issue Jun 17, 2019
@MarkIngramUK
Copy link

Thank you for listening to the community feedback. I’m really excited for WinUI 3.0 (Win32 + WinUI + C++). This feels like the framework we’ve been waiting for! RIP GDI 😉

@adrientetar
Copy link

(Win32 app model) + (WinUI 3.0 UI) + (.NET or C++ language)

So this would basically be the UWP UI, but without the phone-like lifecycle and sandbox? That seems interesting for desktop apps, then – I'll be experimenting with this.

@mdtauk
Copy link
Contributor

mdtauk commented Jun 17, 2019

Thank you for the update, and hopefully more updates will come as WinUI 3.0's initial feature set is locked down, and any new controls or control features that have been proposed, which may make it into WinUI 3.0.

Oh and documentation about how WinUI in Desktop will work, and differ from UWP, WPF, and Win32 would be very useful to pre-empt the umpteen amount of questions that will come.

Perhaps a nice matrix of what is included with which combination of frameworks and APIs, along with the architecture diagrams we got at Build!

@weitzhandler
Copy link
Contributor

You guys are incredible, thanks for everything!
The xplat section made my day, especially that Uno is on the radar.

@zezba9000
Copy link

zezba9000 commented Jun 18, 2019

Our focus is still Windows 10 and 8.1, but we hear the feedback that some of you still have users & customers on Win7 and we'll be evaluating the market and options over time.

Assuming this implantation of the UI framework is designed with the idea in mind of portability, at least enough so its UI core (rendering / input) can function under any Windows OS that supports .NET Core 3+ what limitations on Windows 7 would there even be? Seems like most of the features people use on the desktop would just work and for special / platform specific ones that don't, maybe keep them away from being part of the core UI system and keep them in platform specific packages such as (Win10, Win8.1, Win7 Nugets etc).

Also if there was a cross-platform XAML that had the same look and feel across all devices (Win32, Android, iOS and WASM) like you can do with HTML (but not Xamarin sadly) my company would have jumped on it years ago.

Also glad you guys consider this a "marathon (great Bungie game too)". The less fragmentation in the XAML space the better for everyone and taking to many short cuts will just end you back where you started ;)

@jesbis
Copy link
Member Author

jesbis commented Jun 18, 2019

documentation about how WinUI in Desktop will work, and differ from UWP, WPF, and Win32 would be very useful

We're working on it and will share more as this develops!


Assuming this implantation of the UI framework is designed with the idea in mind of portability, at least enough so its UI core (rendering / input) can function under any Windows OS that supports .NET Core 3+ what limitations on Windows 7 would there even be?

@zezba9000 WinUI doesn't use .NET, and you don't necessarily have to use .NET Core with WinUI: it's a native framework built on OS APIs, and it relies on new functionality in Win8/Win10 that wasn't present in Win7 - in some cases for core features, not just higher-level add-on features like specific controls.

@mdtauk
Copy link
Contributor

mdtauk commented Jun 18, 2019

documentation about how WinUI in Desktop will work, and differ from UWP, WPF, and Win32 would be very useful

We're working on it and will share more as this develops!

Assuming this implantation of the UI framework is designed with the idea in mind of portability, at least enough so its UI core (rendering / input) can function under any Windows OS that supports .NET Core 3+ what limitations on Windows 7 would there even be?

@zezba9000 WinUI doesn't use .NET, and you don't necessarily have to use .NET Core with WinUI: it's a native framework built on OS APIs, and it relies on new functionality in Win8/Win10 that wasn't present in Win7 - in some cases for core features, not just higher-level add-on features like specific controls.

For Windows 7 compatibility - it would require some third party to build their own compatible renderer for the XAML, as well as some kind of alternative Shim for any OS level APIs needed.

Right now there is no idea if this is possible - the hope is that when the WinUI bits are removed from the OS, they are put into the open source project in a way, which will enable other platforms to provide some kind of compatibility component. Think Xamarin, Uno, or .Net Core with a custom renderer.

@zezba9000
Copy link

zezba9000 commented Jun 18, 2019

it's a native framework built on OS APIs, and it relies on new functionality in Win8/Win10 that wasn't present in Win7 - in some cases for core features

In my mind what constitutes a "core feature" wouldn't be something that relies on OS specifics besides of course rendering and input. Which in those cases would be abstraction layers anyone can extend. At a foundational level one in theory should be able to render the UI with a custom software-renderer and do Input with a custom XInput backend with a virtual cursor if so desired. If you can do that kind of modularity you can pretty much do anything and extending the platform support becomes extremely easy (as is done in games). You spend a little more time in this area and down the road everything takes a lot less effort. If WPF XAML was designed this way it could have just been taken and used in UWP apps. Technical debt will just become an endless loop otherwise.

Things like tray-icon support etc could be in a "WinUI Windows basic features (Win7-Win10)" package. Things like push notifications could be in a "WinUI Windows extended features (Win8-Win10)" package.

Hope that makes sense.

@jesbis
Copy link
Member Author

jesbis commented Jun 18, 2019

@mdtauk, @zezba9000 it's all theoretically possible, and we have lots of platform abstraction expertise on the team. As with anything, it just comes down to cost, schedule and expected benefit 😊

In addition to development and testing costs (which would extend into potentially non-obvious areas, for example ensuring everything works with old assistive technologies) we also have to consider support cost over long timespans.

Do you expect to have new customers on Win7 in 2020+? Feedback and definite use cases do help us prioritize.

@mdtauk
Copy link
Contributor

mdtauk commented Jun 18, 2019

In addition to development and testing costs (which would extend into potentially non-obvious areas, for example ensuring everything works with old assistive technologies) we also have to consider support cost over long timespans.

Do you expect to have new customers on Win7 in 2020+? Feedback and definite use cases do help us prioritize.

@jesbis I don't see much benefit in adding compatibility to Win7 for WinUI 3.0 - Linux, Android, iOS, iPadOS and MacOS however, may be beneficial for providing a cross platform solution, which does not rely on native UI frameworks.

@weitzhandler
Copy link
Contributor

@mdtauk
@jesbis I don't see much benefit in adding compatibility to Win7 for WinUI 3.0 - Linux, Android, iOS, iPadOS and MacOS however, may be beneficial for providing a cross platform solution.

Agree to that. I'd just add web-assembly, to me it's even more essential than Linux.

@zezba9000
Copy link

zezba9000 commented Jun 18, 2019

Do you expect to have new customers on Win7 in 2020+? Feedback and definite use cases do help us prioritize.

No my company does not. I was giving more of a design argument in an area I've seen XAML struggle with in all its iterations (from my perspective) but ya I totally see why MS wouldn't want to spend time there. However it would be cool if WinUI was capable enough for others to do this work if they needed to (which tends to happen I've noticed) without going down a rabbit hole of Windows dependencies as is the case with WPF now.

To be clear on what my company would love to see is Android and WASM support be a little more official than UNO (and 3 years ago). We make management software that governs the state of a collection of local computers and system setups usually involving a big need for Win32 APIs (UWP would never work for us but we like the UI because of compile-time errors unlike HTML build systems) and our clients + us need Win32 + Android + Browser UI experiences that have a uniform experience and feel. HTML is just a big pain point as it adds needless abstraction and complexity that otherwise not need be there as our primary code base is in C#.

Hope thats better feedback for ya.

@zezba9000
Copy link

zezba9000 commented Jun 18, 2019

Also yes WASM is the biggest target we would like vs any other platform. BY FAR!!
As it solves our Android / iOS / mobile issue as well as web portal stuff.

@dpierangeli
Copy link

Thank you for listening to the feedback!

Desktop + WASM will be gold!

@Mike-E-angelo
Copy link

Wow, thank you for the shout out, @jesbis! Totally unexpected and very much appreciated and respected. 👍

@MarkIngramUK
Copy link

The discussion around Windows 7 is a little distracting, as the amount of effort (not to mention cost) would cause a significant delay to WinUI 3.0. Windows 7 is end-of-life in January, and we’re encouraging all customers to upgrade to Windows 10. My customers may not align with others here, but even Windows 8.1 isn’t a platform of interest for us.

@RyoukoKonpaku
Copy link

Quite happy with the update. The upcoming targets for WinUI looks very bright and promising! Even the Xplat section was something I didn't expect but is very welcomed. Will look forward to use the improvements as well as the goodies in store for WinUI.

@r7dev
Copy link

r7dev commented Jun 18, 2019

Thank you for the team for transparency.

I would like to mention the importance of line-of-business software in helping people in solutions of various problems.

I worked for a while with the Lightswitch tool and had a significant gain in construction time. Rapid application development has been very promising for LOB applications. But with the patent wars in the USA is very taken seriously, it took the product to be terminated.

We know we have INotifyDataErrorInfo for next delivery. But It would be wonderful if WinUI had RAD resource for future deliveries like 3.x onwards.

@Pinox
Copy link

Pinox commented Jun 18, 2019

thanks team, can't wait for the day when you pencil in webassembly. it will make my day , year and decade and will put MS at the top of the technology stack. WinUI + Xamarin + WASM + .NET => pure awesomeness !!

@shaggygi
Copy link

@jesbis Thanks for this update. Good work team 👍. Understanding it's still early, when do you think we will see WinUI 3.0 milestone created and issues tagged against it?

@jesbis jesbis added this to the WinUI 3.0 milestone Jun 20, 2019
@jesbis
Copy link
Member Author

jesbis commented Jun 20, 2019

when do you think we will see WinUI 3.0 milestone created and issues tagged against it?

@shaggygi Good question! I just created it:

WinUI 3.0 milestone

@jtorjo
Copy link

jtorjo commented Jun 22, 2019

This is awesome guys!

Quick question: Moving Windows.UI.Composition into Microsoft.UI.Composition, is this closer to 2.2 or 3.0?
And in timeframe to expect this, would this me 2-3 months or more like, when 3.0 becomes available?

@jesbis
Copy link
Member Author

jesbis commented Sep 16, 2019

Are the .net wrappers for the native controls also going to be open-sourced? It is not clear that this is the github repro that is responsible for the .Net side of winui, considering that the only c# code that I seem to find is for automated tests. I'm looking for things like Microsoft.UI.Xaml.UIElement but cannot find that code anywhere.

UIElement isn't in WinUI 2 so it isn't currently in the repo. It will be in WinUI 3 which isn't released or open sourced yet, but we're working on it!

You can see examples in the repo of other native controls exposed to .NET via WinRT projections, e.g. the WinUI 2.2 controls documented here. They mostly don't require preexisting per-language wrapper files which is why you're not finding .cs files in the repo.

@marb2000 could best comment on the islands/desktop questions.

@marb2000
Copy link
Contributor

Q: Will WinUI 3 UWP and Desktop use the same .NET runtime?
A: Yes, this is the plan. UWP and Desktop will use .NET Core 3. Managed WinRT libraries will use .NET Core 3 instead of .NET Native.

Q: Will WPF and UWP share the same airspace?
A: Although WPF and WinUI (and XAML UWP) seem similar, they aren't. WPF uses DirectX9, and WinUI/XAML UWP uses the Windows.UI.Composition for XAML's composition, rendering, and animation needs (besides a modern version of DirectX11). Sadly, this causes that the interop is very complicated. Your proposal about WPF adorners is interesting. In theory, the adopter can create a popup to place the WinUI/XAML content over the WPF content. Or it can inform to the WPF visual tree that a re-layout is required, but everything based on HWnds.
@dbeavon This is a good proposal, can you create a feature request for this?

Q: Will a WPF app with Xaml Islands compile to ARM64?
A: If .NET Core 3 for Windows supports ARM64 for sure. Today it supports ARM32 in Windows. However, in Linux supports ARM64. I think it is on the .NET Core roadmap to support ARM64 in Windows as well. Although AFAIN, there is no date yet. @richlander, any news?

@lindexi
Copy link

lindexi commented Sep 18, 2019

@marb2000

Q: Will WPF and UWP share the same airspace?

Can UWP use Windows.UI.Composition to create a layer which can get the render from a DirectX bitmap? And then the WPF render the windows to this layer like win2d. Maybe it can share the same airspace. But it hard to make WPF to render to a layer.

@jtorjo
Copy link

jtorjo commented Sep 18, 2019

@lindexi I guess that could be heaven :D

@jesbis
Copy link
Member Author

jesbis commented Sep 30, 2019

Can UWP use Windows.UI.Composition to create a layer which can get the render from a DirectX bitmap?

UWP Xaml has a number of ways to render DirectX bitmaps or swap chains in Xaml and composite them with Windows.UI.Composition so they share the same airspace, including SurfaceImageSource, VirtualSurfaceImageSource and SwapChainPanel - more info is available in here:

https://docs.microsoft.com/windows/uwp/gaming/directx-and-xaml-interop

You can also insert a Windows.UI.Composition visual into a UWP Xaml UI tree and draw DirectX content to it, e.g. using ICompositorInterop, ICompositionDrawingSurfaceInterop and ICompositionGraphicsDeviceInterop as outlined here:

https://docs.microsoft.com/windows/uwp/composition/composition-native-interop

Those approaches should work similarly with WinUI.

@rodan01
Copy link

rodan01 commented Oct 13, 2019

A UWP desktop app will be able to reference a WPF/WinForm DLL and open a WPF/WinFrom window? This would allow me to migrate gradually.

@richlander
Copy link
Member

@marb2000 -- .NET Core for Windows ARM64 is on our roadmap. I'm working on a plan for that now.

@jtorjo
Copy link

jtorjo commented Oct 17, 2019

With WinUI 3.0, will it be possible to compile win2d on top of it?
(thus, decoupling it from UWP)
If so, that would be insanely awesome!

@jesbis
Copy link
Member Author

jesbis commented Oct 17, 2019

We're still working out details on DirectX integration but hopefully it will be possible to update Win2D to use WinUI base classes instead of UWP Xaml base classes.

@jtorjo
Copy link

jtorjo commented Oct 17, 2019

fingers crossed :D

@jtorjo
Copy link

jtorjo commented Oct 18, 2019

sorry if this is off topic: bug reports on UWP - do I add an issue on https://github.com/microsoft/microsoft-ui-xaml/ or elsewhere?

@jesbis
Copy link
Member Author

jesbis commented Oct 18, 2019

sorry if this is off topic: bug reports on UWP - do I add an issue on https://github.com/microsoft/microsoft-ui-xaml/ or elsewhere?

@jtorjo great question! This repo is the best spot to file any issues related to:

  • the UWP UI framework APIs (e.g. Windows.UI.Xaml)
  • Fluent design
  • WinUI

In general there should be a "Send feedback about this product" link at the bottom of most documentation pages on docs.microsoft.com that will tell you the best way to provide feedback on a specific feature or API.

For most aspects of UWP aside from the above, that will be to file bugs under the Developer Platform category in the Feedback Hub which has a number of relevant subcategories.

@SparkieLabs
Copy link

Will WinUI 3 include the UWP SemanticZoom control? I think it's the coolest control of them all.

@jtorjo
Copy link

jtorjo commented Oct 19, 2019

@jesbis Thanks! Just posted a discussion about System.IO

@LYP951018
Copy link

Even Microsoft doesn't drop Windows 7 support for Office, why would WinUI 3 do? I mean, almost all serious softwares have Windows 7 support (Photoshop, Office, Visual Studio 2019, VSCode, ...) If WinUI does not support Windows 7...

@mdtauk
Copy link
Contributor

mdtauk commented Oct 23, 2019

Even Microsoft doesn't drop Windows 7 support for Office, why would WinUI 3 do? I mean, almost all serious softwares have Windows 7 support (Photoshop, Office, Visual Studio 2019, VSCode, ...) If WinUI does not support Windows 7...

Office will probably drop support soon, as Microsoft's support for Windows 7 ends very very soon. But it is built upon a code base that already supported Windows 7.

WinUI was built upon Windows 10, and so would need to be back ported to Windows 7. The effort to do that makes no sense with the OS entering End Of Life, and so people will have to upgrade to Windows 10.

@Noemata
Copy link

Noemata commented Oct 31, 2019

Q: Will WinUI 3 UWP and Desktop use the same .NET runtime?
A: Yes, this is the plan. UWP and Desktop will use .NET Core 3. Managed WinRT libraries will use .NET Core 3 instead of .NET Native.
Q: Will WPF and UWP share the same airspace?
A: Although WPF and WinUI (and XAML UWP) seem similar, they aren't. WPF uses DirectX9, and WinUI/XAML UWP uses the Windows.UI.Composition for XAML's composition, rendering, and animation needs (besides a modern version of DirectX11). Sadly, this causes that the interop is very complicated. Your proposal about WPF adorners is interesting. In theory, the adopter can create a popup to place the WinUI/XAML content over the WPF content. Or it can inform to the WPF visual tree that a re-layout is required, but everything based on HWnds.
@dbeavon This is a good proposal, can you create a feature request for this?
Q: Will a WPF app with Xaml Islands compile to ARM64?
A: If .NET Core 3 for Windows supports ARM64 for sure. Today it supports ARM32 in Windows. However, in Linux supports ARM64. I think it is on the .NET Core roadmap to support ARM64 in Windows as well. Although AFAIN, there is no date yet. @richlander, any news?

So are we getting rid of the UWP sandbox? Which in turn implies UWP in it's current form is also going away, and with it the protected sandbox of the App Store as we know it?

@jtorjo
Copy link

jtorjo commented Nov 1, 2019

So are we getting rid of the UWP sandbox? Which in turn implies UWP in it's current form is also going away, and with it the protected sandbox of the App Store as we know it?

getting rid of the UWP sandbox would be insanely awesome!

@jesbis
Copy link
Member Author

jesbis commented Nov 1, 2019

That definitely doesn't mean that UWP is going away. The Universal Windows Platform is the only way to natively build for the full spectrum of Windows devices (PC, Xbox, HoloLens, etc.) and is where Windows is focusing its native platform investments. RE: sandboxing in particular: appcontainer isolation continues to provide a lot of important benefits for apps and users of both UWP and desktop apps.

The main changes are:

  • we're growing the scope of the UX platform (i.e. WinUI) so that it can also be used with a desktop (win32) app model
  • we're decoupling WinUI from Windows so that we can update it more frequently, make new features backward-compatible, and more easily open source it

That means for new apps you'll be able to choose between UWP and desktop app models depending on what makes sense for your app, and if you have existing desktop apps (e.g. WPF, WinForms, MFC) then you can incrementally update them with modern WinUI functionality using Xaml Islands.

@mdtauk
Copy link
Contributor

mdtauk commented Nov 1, 2019

So are we getting rid of the UWP sandbox? Which in turn implies UWP in it's current form is also going away, and with it the protected sandbox of the App Store as we know it?

UWP will be one of the options for building a WinUI 3.0 app. Using the UWP will allow your app to run on Xbox, Hololens, etc.

But you can also build a Win32 app with WinUI 3.0 and access UWP APIs - but where your app can run will be more limited.

@jtorjo
Copy link

jtorjo commented Nov 1, 2019

@mdtauk @jesbis I'm totally for UWP, but at this time:

  1. compilation times are insanely slow! (pretty much, 6 times slower that WPF - i'm using target version build 1809 - build 17783)
  2. I know StorageFolder file enumeration API is not part of UWP, but that is insanely slow. The UWP sandbox (at least on Windows Desktop) is hurting more than helping.
  3. Sure, async programming is fun, but in UWP, when an exception happens, it's somehow eaten by the UWP code, and then later break in debugger, with all the stack context lost. Sometimes, I do have the stack context inside the thrown exception itself, but not always.
  4. Profiling UWP code is close to impossible. Event dotTrace instantly breaks when trying to do it.

(It took me over a month to port my code from WPF to UWP, since I insanely need win2d, so there's no way for me to avoid UWP.)

@mdtauk
Copy link
Contributor

mdtauk commented Nov 1, 2019

@mdtauk @jesbis I'm totally for UWP, but at this time:

  1. compilation times are insanely slow! (pretty much, 6 times slower that WPF - i'm using target version build 1809 - build 17783)
  2. I know StorageFolder file enumeration API is not part of UWP, but that is insanely slow. The UWP sandbox (at least on Windows Desktop) is hurting more than helping.
  3. Sure, async programming is fun, but in UWP, when an exception happens, it's somehow eaten by the UWP code, and then later break in debugger, with all the stack context lost. Sometimes, I do have the stack context inside the thrown exception itself, but not always.
  4. Profiling UWP code is close to impossible. Event dotTrace instantly breaks when trying to do it.

(It took me over a month to port my code from WPF to UWP, since I insanely need win2d, so there's no way for me to avoid UWP.)

It would be useful for this to be posted in this thread #1517 and hopefully you can include in a name of someone from the SDK team

@MarkIngramUK
Copy link

@jtorjo

compilation times are insanely slow! (pretty much, 6 times slower that WPF

Are you using C++/WinRT? If so, are you using pre-compiled headers?

@jtorjo
Copy link

jtorjo commented Nov 1, 2019

@mdtauk just posted there

@MarkIngramUK It's c# code

@jesbis
Copy link
Member Author

jesbis commented Dec 4, 2019

Closing - please direct roadmap and alpha feedback to: #1531

@jesbis jesbis closed this as completed Dec 4, 2019
@andreinitescu
Copy link

Right now there is no idea if this is possible - the hope is that when the WinUI bits are removed from the OS, they are put into the open source project in a way, which will enable other platforms to provide some kind of compatibility component. Think Xamarin, Uno, or .Net Core with a custom renderer.

Is this something really on the roadmap or was just an assumption?

@mdtauk, @zezba9000 it's all theoretically possible, and we have lots of platform abstraction expertise on the team. As with anything, it just comes down to cost, schedule and expected benefit 😊

Just maybe abstracting it in a way which would make it possible for a third party to make it work on Android or iOS would be huge. I am sure the community can do this. I'd definitely contribute to it.

@zezba9000
Copy link

zezba9000 commented May 28, 2020

@andreinitescu Sorry for the rant and complaints but just my thoughts from what I understand: While I'll use WinUI 3 to replace WPF for Windows / Win32 only stuff... Because WinUI on Windows uses a Windows only rendering API and not an agnostic one, WinUI seems to be relying off 3rd parties to re-implement / fragment (ugg) WinUI on other platforms (like the UNO proj, which is cool but it like Mono to .NET is a unnecessary and time wasting fragmentation if things were only designed right to begin with). Instead of using a portable one like Skia, or creating a MS one. Also don't understand the need to support the 1% of people who wont be using C# with WinUI, making C# a second class target in a sense and more importantly making dev time take a lot longer. Just like Android uses Java + post-AOT for many core apps, so should Windows use C# + pre-AOT. Because it saves time. 70% of bugs using C++ are using deallocated ptrs after all.

The lack of communication between groups in a company for the long term use cases when its going to become more and more of an issue when they release their Android OS flavor for mobile platforms (which I plan on using) and more people want to target it with MS tools... feel its just going to be another WinPhone7 like situation again in a way. Windows as a term shouldn't be so tied to the WinNT kernel anymore. An eco system is more than a single platform or one companies frameworks its built on.

To bad MS can't/wont do what Apple did almost 20 years ago with the move from OS9 to OSX. In that you rip the band-aid off by moving to a UNIX/LINUX kernel BUT having an emulator/simulator built into the OS for legacy software for the next 5-10 years while people migrate software and dev tools over to run natively. (Think what you will of this but I can dream)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion General discussion
Projects
None yet
Development

No branches or pull requests