>> Wouldn't it be cool if there was a unified set of
APIs that you could use in any desktop app.
Turns out there is, it's called Project Reunion,
and that's what we're going to talk about on
today's Visual Studio Toolbox.
[MUSIC]
>> Hi. Welcome to Visual Studio Toolbox.
I'm the guest host, Robert Green,
filling in for Lesley today,
and I'm very excited to be with my good friend,
Mr. Andrew Clinick of the Windows Team. Hi, Andrew.
>> Hi, Robert. Long time no see.
>> I know. Andrew and I have known each other a long time,
dating back to the Visual Studio Tools for Office days.
It's really good [inaudible] yes.
Today we're going to talk about Project Reunion,
which is very exciting and it's going to
make sense of the current state of Windows Development.
I guess that's a broad overview.
>> Yeah.
>> But what exactly is Project Reunion,
and who is it aimed at,
and how does it help them?
>> Yes, it's a great question.
We thought of building project reunion is really
about enabling people to build great Windows apps.
I think one of the things we've learned in the last year is how
important a PC is to
every day productivity for pretty much all of us.
I bet you, I feel I'm sat in front of
the screen 24/7. Not quite yet,.
>> Not going away.
>> Yeah. Increasingly we're
seeing people asking for better experiences,
and yeah we love the web, web's awesome.
But having native experiences that
really deliver great experiences,
maybe it's your line of business.
Certainly my kids are spending
quality time on their PC doing homework,
I'm sure up, if homeworks involves
among us or roadblocks or whatever.
But building those applications and of course,
web rises have to be talked to
online native platform it's so
important to deliver such a great experience.
Reunion is about enabling
all Windows developers to build a better Windows experience.
We want your customers to get a better experience.
We want you to get a better experiences as
a developer and making easier for you to develop those apps.
>> We know that WinForms in WPF, now support.NET 5.
>> Yeah.
>> We've had a number of episodes about that.
On Channel 9 people have talked about it,
so all of the new advancements in.NET and
the languages come to WinForms and WPF, which is awesome.
That's from the.NET runtime side.
But what was missing on the Windows side?
>> Yeah.
>> You always get the new Windows, right?
>> Right. We always got the new Windows,
and of course we see the uptake of Windows 10,
it's going up, and that's awesome.
But the feedback we got from talking to customers was like, Look,
I want to write an app that addresses all my users no matter
what version of Windows there are on.
Right now we are
introducing some cool new tech and new averse to the Windows.
But you couldn't write an app that took advancement of that
or so you to choose and you had to wait till your users got there,
which could take awhile.
Reunions goal is to bring those platform features to
you and decouple them from
the OS so that your application can use them.
Now I see you have a handy little diagram.
>> Is this UI,
is this APIs, is it both?
>> Now that's really
the entirety of what your application wants to run.
Today I have desktop apps,
I have UWP applications,
and those apps be a WPF or WinForms app on left-hand side,
cools death of APIs and a UWP app can cool UWP APIs.
To a certain extent they can mix and match,
but it was confusing.
When you build your application,
we always think about UI and obviously
the UI is the thing that we see the most.
But oftentimes when we talk to developers,
they tell us is that UI code is maybe 20,
30 percent of my app.
A lot of my app is actually making
that stuff work and providing all that.
We want to ensure that we bring all those APIs available to you,
the UI, but also the platform APIs.
Project reunion goal is to bring this desktop APIs,
bring them up and decouple them from the OS.
Your app will be able to be
deployed to all the versions of Windows 10,
and likewise bringing a lot of those UWP APIs.
Developers don't have to choose.
Is like, well, I start with one project.
Now I can call these APIs and if I start it a different way,
so whether you were a WPF developer or WinForm,.NET,
C plus plus, heck-rust, JavaScript.
We want you to be able to use all of those APIs.
That's the goal, and that's why we call it reunion,
is to unify that,
so we have the standard Windows,
Apps and libraries can utilize all of those APIs.
>> My app is not going to literally depend on
a particular release of Windows unless
I specifically needed to, right?
>> Absolutely. The goal is,
you will be to write great app to work everywhere.
If you're in a new version,
then of course you can light up and cool some cool new APIs.
For example, you might want to use Windows Hello,
which isn't necessarily available on everybody's machine,
even if they all have the same version,
you might not have a cool camera that enables that
so light up a major application data in places where it available.
>> That's cool. Windows goes back to being
the operating system and the APIs you call is part of apps,
I guess, as a NuGet package, right?
>> That's right. As a NuGet package
and a framework package from [inaudible]
>> That is flipping cool.
>> We have framework packages that actually [inaudible].
If I have my application,
I'm deploying in to your machine,
your machine might not have the reunion API.
We have this framework packages
which actually we've had since Windows 8.1.
But reunion enables all Windows apps,
whether they deploy Power MSX,
setup the XCX, copy off a USB key or floppy disk, we don't care.
When you run your application,
will pull down a framework packages for you.
Now of course, enterprises can deploy those ahead of time.
They can do all those types of things.
But it gets deployed once on your machine,
and then you get to update,
and then all the applications gets take advantage of that,
and we can keep that up-to-date for you
and you get to control how quickly you update.
>> Whether you're writing a desktop app using WinForms,
WPF, or you're running a UWP app.
You can just call these APIs and you could also,
I guess this opens up the ability to create class libraries of
common functionality that can just be called by
any client running many version of Windows.
>> Absolutely. In fact,
we've just released 0.5. on March 29th,
just a couple of month ago.
A lot of the UI control vendors,
they simultaneously shift with us.
Simultaneous is difficult for a British person to say.
You look at Telerik,
you look at Uno, you knows
those are really cool stuff cross-platform.
I will apologies if I forget the other folks,
but there's a bunch of the control vendors,
which are in essence libraries, as you pointed out,
are available already today so that you can utilize that also.
>> They could write one set of controls that are then available
regardless of what your Windows front end is written in basically?
>> Yeah. The notion is,
if you pick and choose the tech that you want,
they'll give you love WinForms, WPF. That's awesome.
But, for example, we're introducing
a new way to activate
your application so you can be more battery efficient.
Use that and not have to redo
your UI in order to use those features.
You can use UI 3,
which is a core part of reunion and you can utilize that.
We'd love it if you didn't.
Win UI is where we're
focusing investments in the UI space for Windows,
but it's not required.
Likewise, MSX is how
we're focusing on investments for deploying apps.
Again, you don't have to do that.
We believe WinUI and MSX are the best ways to do it.
But we also realize that your existing app is probably
the best way for your customers to utilize that.
>> [inaudible] Does project reunion rely on.NET 5?
>> It doesn't. Good question.
It fully supports Docker file,
but you can use C plus plus.
You can be completely bare metal if you want to.
You can use Rust,
we are working with React Native,
lots of folks in order to get you that.
We don't want to require you to use a specific version.
Clearly, we love.NET 5, that's awesome.
Most of our demos and
frankly most of our customers
right now are using that, and that's great.
But you can mix and match,
of course you can use C plus plus if you want to,
and really ensuring that you can go to that.
We did a bunch of work with
some new Win32 metadata to make
it just a whole bunch easier to get at those APIs.
>> What role does WinUI play in all this?
What is WinUI, and what role does WinUI play?
>> Yeah, that's a great question.
I have a slide.
>> UI questions can be answered with a slide.
>> We think of four things that we're investing in.
We're starting with the UX,
and WinUI 3 is a major part of that.
Clearly, WinUI3 just shipped with 0.5 last month from what,
within two more big updates
this year but also WinUI 3 brings WebView2 from Edge,
so you can use Chromium inside of your app in
a lot more efficient way and
using a lot less memory, if you want to.
But we're also investing in making windowing better,
something which we get a lot of feedback on.
Then the other end of the spectrum is like,
"How on earth do I actually deploy my apps?"
So MSIX, which is a deployment tech if you want to use that.
Clearly we're fans of that.
But in framework packages,
you can take advantage of those,
irrespective of how you deploy it.
Then in the middle, thinking about things like ARM64 support,
super important in order to be able to do that,
but taking advantage of in-keying and input,
optimizing for the device hardware which includes Windows Hello.
The camera that I'm using on
my PC is a Windows Hello camera as well,
which is awesome; take advantage of that.
But then thinking about system performance and battery life,
I hope to worry about battery life at some point when I travel
outside of my house but right now,
being a power efficient app is super important
too in terms of how can we reduce our impact on the environment,
but also, frankly, reduce the impact
on my electricity bill that I'm now paying.
For they're five of us in
my house and we're all working from home.
>> Exactly.
>> How can we be more efficient and take advantage of that?
WinUI is a key part of this though.
>> Is WinUI a replacement for UWP?
Is it the next flavor of XAML that I get to learn?
>> The question I was hoping you won't going to asked me.
>> You had to have known I was going to.
>> Thing with WinUI really is bringing
the UI stack that you saw in UWP,
that lots of folks were using,
and just making that available to all Windows apps.
Our focus for this year
is fundamentally on building great desktop apps.
That's not to say that Xbox and HoloLens aren't important.
Obviously they are, but focusing on Desktop in terms of,
that's where we see most of our development
going on right now and bringing that.
So bringing the capabilities from UWP to all Windows Apps.
So WinUI 3, MSX is core part of that.
The activation, the application life-cycle, and notifications.
Again, enabling every Windows app
to utilize those, if they want to.
>> Right. Project reunion,
is it a replacement for or is it
the next version of XAML Islands which was the ability to
take UWP in XAML and put it in a WPF or WinForms app.
>> Yeah. XAML Islands is really cool,
allows you to mix and match.
In 0.5 of WinUI that we have
right now we don't have XAML Islands support.
That's something which we are working with
the community on GitHub.
One of the things we're doing
with Reunion is doing all of our planning,
all our specking out in the public on
GitHub and that's a very commonly requested feature.
We're finalizing our plans for that for,
fingers crossed, for later this year.
>> Okay, cool.
>> Yeah.
>> WinUI 3, is it 0.5 right now,
when is it going to be released for real?
>> Funny enough, I have another slide for that too.
We have three releases,
this year, that we're planning.
So 0.5, and the reason why we've gone with the zero dot,
we often get asked why is it zero dot and why is it not just one,
is that we're evolving this
over time and we're working with the community.
Frankly there's going to be some things that we do that maybe
people don't like and we'll adjust from that.
It's joining us on the journey.
For many people,
1.0 is probably when they all take advantage of that,
but we're doing released versions,
so 0.5 and 0.8 we fully support it.
You'll be able to take advantage of that and ship on your apps.
Then you'll be able to take
advantage of these as they're going forward.
It is a little confusing.
I think that's the mere culprits to a certain extent.
It's like, "Hold on, WinUI 3 and Project
Reunion 0.5, what's going on?"
We felt it was important not to move people's cheese, essentially.
It was like, if you were
following WinUI then you expect it to be 3.0,
it would be weird if we said,
"Well, this is WinUI 0.5."
Hold on, we had one and two.
Each one of those technologies are a part of the Reunion family.
The family has a version numbering.
As we progress over time,
then one of those will catch up.
But we don't want to force a versioning scheme
on everybody just to be part of Reunion.
>> Fall is about the same time that.NET 6 arrives.
It's going to be a pretty exciting end of the year around here.
>> Yeah. We have much love for our.NET family.
Fall is also, in the northwest of the US,
a fairly long event.
We'll see. Our goal is to try and think as much as we can.
>> Yeah.
>> Spring is exceptionally long in Northwest.
>> Exactly. In Seattle
there's basically two seasons; rain and not.
Rainy season is long. It makes sense.
>> Yes. It helps focus the mind.
>> Okay. This has been an excellent overview.
You know what I think we should do, if you're up for that,
I think we should follow this up with
on our hour long Visual Studio Toolbox live episodes,
where we can dive into more details,
we can do some demos,
we can talk about specific scenarios,
and answer lots of questions.
>> Yeah, absolutely. I'd love to do that.
Great to be able to do it off with our customers.
>> We'll plan that sometime in the near future.
>> I'm not going anywhere.
>> Me either.
>> [inaudible]
>> That's cool. Thanks so much for coming on the show Andrew,
this is a great overview of what Reunion is.
There was a blog post that you did.
We'll put that link to that in the show notes.
Send me any other links you want added?
>> Yeah. Give us feedback.
Try it out. We know it's not perfect right now,
but we would love to get your feedback.
That's really what we're pushing on right now.
We're trying to keep up to date with
that daily and publishing our road-map.
On our Project Reunion GitHub site
is the key place to keep up to date.
>> Cool. Thanks again.
I hope you guys enjoyed that and we will see you
next time on Visual Studio Toolbox.
[MUSIC]