Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -350,4 +350,4 @@ healthchecksdb
MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/
.ionide/
163 changes: 76 additions & 87 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,122 +1,111 @@
# Project Reunion
# Project Reunion

Project Reunion provides functionality that supports all your apps on Windows.
### What is Project Reunion?
Project Reunion is our vision for unifying and evolving the Windows developer platform to make it easier
to build great apps that work across all the Windows 10 versions and devices people use.

## Roadmap
Project Reunion makes it easier to build a great Windows app by providing a unified platform for new
and existing Win32 and UWP apps. It will unify access to existing Win32 and UWP APIs and make them
available decoupled from the OS, via tools like NuGet.

We're following a [roadmap](docs/roadmap.md) that gets us to building a v1.0 of Reunion exploring
some basic common features. You can help by filing issues for features you'd like to see!
Project Reunion will help you update and modernize your existing apps with the latest functionality,
whether they're C++, .NET (including WPF, Windows Forms, and UWP) or React Native. As we decouple
existing APIs and add new APIs, we are also doing the work to polyfill, as needed, so the APIs work
down-level across supported versions of Windows.

## Documentation

* [Roadmap](docs/roadmap.md) - where we're going
* [High-level overview](docs/overview.md) - why we're doing this, how you can use it
* [Using Reunion](docs/developer-guide.md) - how to use Reunion in your app
* [Contributor/developer Guide](docs/contributor-guide.md) - how to contribute to Reunion
* [Implementation/API design Guide](docs/implementation-guide.md) - how to define and implement
Reunion components.
* [FAQ](docs/faq.md) - frequently asked questions about Project Reunion
### How can I use Project Reunion?
We have already started with APIs like
**[WinUI 3](https://github.com/microsoft/microsoft-ui-xaml)**,
**[WebView2](https://docs.microsoft.com/en-us/microsoft-edge/webview2/)** and
**[MSIX](https://docs.microsoft.com/en-us/windows/msix/overview)**
**([MSIX-Core](https://github.com/microsoft/msix-packaging))**
which you can start using today!

## Features
WinUI 3 Preview 1 is one of the first components in the Project Reunion journey: it’s the modern
native UI framework for Windows, now available to all Windows app developers across both UWP and
Desktop apps. Using WinUI you will be able to create new apps with modern UI that adapts and scales
across devices, or incrementally modernize the UI of existing desktop apps including C++, WPF and
WinForms.

### Benefits
[Help us figure out what Project Reunion becomes to support your application.](https://github.com/microsoft/ProjectReunion/issues/new/choose)

_Windows and Reunion loves all your apps_
### Project Reunion Principles

The Reunion Framework helps you use modern features of Windows across all your apps, across all your
users. You'll get access to modern features of the Windows Application Platform at your own pace.
Improve power use and uphold privacy requirements in your existing apps. Update your app to use
APIs that automatically switch to fill-in support on older versions of Windows. Get access to
more of Windows from your UWPs. Connect to notifications from your Win32 applications.
**Compatible**

1. Reunion stays up to date automatically as new versions are available without recompilation or
updates to your app.
Project Reunion works in all your apps - Win32, Packaged, and UWP - and across many versions of Windows.

2. Reunion APIs are backwards-compatible across a range of Windows versions and provide a clear
message to you that an API might not be supported.
**Modern**

3. Reunion works for packaged, unpackaged, UWP, Desktop Bridge, and bring-your-own identity apps.
Write your app or framework code once and use it everywhere.
Project Reunion supports your app's use of modern software libraries for UI, AI, ML, packaging, frameworks,
and libraries. Language projections for C++, Rust, C#, and JavaScript expand the benefits to all your
apps. Cloud-backed apps, streaming, and edge-compute apps are all great places to use Project Reunion's
capabilities.

4. Reunion helps you incrementally adopt powerful Windows features like AppContainer, Desktop
Bridge, Identity, and more.
**Agile**

### API Support
Project Reunion ships out of band with OS releases, with regular previews. You get to incrementally
Comment thread
mevey marked this conversation as resolved.
adopt Project Reunion components for your existing apps and middleware libraries using NuGet.

Reunion supports many of the APIs in Windows already. See below for a list and links to both
definition and sample code.
**Open**

| Area | Description | IDL | Sample |
| ------------- | ------------------------------------------------------------- | --- | ------ |
| Startup Tasks | Schedule your app to run when the user logs in | | |
| App Lifecycle | Events tracking app start & stop requests, login/out, restart | | |
| Storage | Store your app's data in a central location per user | | |
We're committing to engineering Project Reunion in the open on GitHub, so you have a more direct
say in how the platform evolves and can even help out.

## Contributing

### Version Support

At this time, Reunion supports Windows `TargetPlatformVersion` >= 10.0.18362 (Windows 10 1809) or
greater.

Your app's users can be on any of the following supported Windows 10 versions:

* Windows Insider Previews
* May 2019 Update (18362 aka "19H1")
* October 2018 Update (17763 aka "Redstone 5")
* April 2018 Update (17134 aka "Redstone 4")
* Fall Creators Update (16299 aka "Redstone 3")

When features have partial implementations on older versions of Windows they will have an
[`IsSupported`](docs/developer-guide.md) method indicating what level of support is present.

## Data/Telemetry

This project collects usage data and sends it to Microsoft to help improve our products and services. See the [privacy statement](privacy.md) for more details.
_We want to hear from you!_

For more information on telemetry implementation see the [developer guide](docs/developer-guide.md#Telemetry).

# Quick Start
File a [new issue!](https://github.com/microsoft/ProjectReunion/issues/new/choose) Tell us what problem you're
trying to solve, how you've tried to solve it so far, and what would be the ideal solution for your app. Bonus
points if there's a gist or existing repo we can look at with you.

## Using Reunion in Your Apps

There are [multiple samples available](samples/README.md). Briefly the steps are:
1. **[Ask a question](https://github.com/microsoft/ProjectReunion/issues/new?assignees=&labels=question&template=question.md&title=Question%3A+%5Byour+question+here%5D)**<br>
Also, have a look at our [frequently asked questions]() page which we will update periodically.

1. [Add a reference](docs/developer-guide.md#Packages) to the Microsoft.Reunion package
2. [Update your code](docs/developer-guide.md#UpdateYourApp) to use Reunion functionality
3. [Deploy your app](docs/developer-guide.md#DeployingReunion) with Reunion
2. **[Start a discussion](https://github.com/microsoft/ProjectReunion/issues/new?assignees=&labels=discussion&template=discussion.md&title=Discussion%3A+%5Byour+title+here%5D+)**<br>
Discussions can be about any topics or ideas related to Project Reunion. For example,
you might start a Discussion issue to see if others are interested in a cool new idea
you've been thinking about that isn't quite ready to be filed as a more formal Feature Proposal.

## Requesting Reunion Functionality
3. **[Make a feature proposal](https://github.com/microsoft/ProjectReunion/issues/new?assignees=&labels=feature+proposal&template=feature-proposal.md&title=)**<br>
What components do you want to see in Project Reunion? For example you can propose a new API on an existing type, or an idea for a new API.
It's fine if you don't have all the details: you can start with a summary and rationale.

File a [new issue!](https://github.com/microsoft/ProjectReunion/issues/new/choose) Tell us what problem you're
trying to solve, how you've tried to solve it so far, and what would be the ideal solution for your app. Bonus
points if there's a gist or existing repo we can look at with you. There's [a fuller description](docs/expanding-reunion.md)
of how this works, how you & the community can help, and more available.
**Over time, we will add Project Reunion code and samples into this repo and provide code contribution/developer guidelines.**

## Contributing to Union
Read more about the [contribution guide here](docs/contributor-guide.md).

First, read the [Contributing](#Contributing) section. Then:
### Version Support

1. Create a fork of this repo then clone it
1. Start Visual Studio 2019 on [ProjectReunion.sln](./ProjectReunion.sln)
1. [Modify the code](docs/implementation.md#UpdatingReunion) you'd like to see changed
1. [Add tests](docs/implementation.md#Testing) for your fix or functionality
1. [Create a pull request](docs/implementation.md#PullRequest) from your fork to this repo
Project Reunion aims to work on supported versions of Windows. We'll use techniques like '_polyfills_'
and custom implementations to do the heavy lifting for you and make sure your app works across Windows
versions and devices.

# Contributing
### Documentation

This project welcomes contributions and suggestions. Most contributions require you to agree to a
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
* [Roadmap](docs/roadmap.md) - Where we're going. We're following this roadmap that
gets us to building a first version of Project Reunion exploring some basic common features.
[You can help by filing issues for features you'd like to see](https://github.com/microsoft/ProjectReunion/issues/new/choose)!
* [Contributor guide](docs/contributor-guide.md) - How to contribute to Project Reunion.
* [FAQ](docs/faq.md) - Frequently asked questions about Project Reunion.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide
a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
provided by the bot. You will only need to do this once across all repos using our CLA.
## Data Collection

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
The software may collect information about you and your use of the software and send it
to Microsoft. Microsoft may use this information to provide services and improve our
products and services. You may turn off the telemetry as described in the repository.
There are also some features in the software that may enable you and Microsoft to collect
data from users of your applications. If you use these features, you must comply with
applicable law, including providing appropriate notices to users of your applications
together with a copy of Microsoft's privacy statement. Our privacy statement is located
at https://go.microsoft.com/fwlink/?LinkID=824704. You can learn more about data collection
and use in the help documentation and our privacy statement. Your use of the software
operates as your consent to these practices.

# Legal Notices
## Legal Notices

Microsoft and any contributors grant you a license to the Microsoft documentation and other content
in this repository under the [Creative Commons Attribution 4.0 International Public License](https://creativecommons.org/licenses/by/4.0/legalcode),
Expand Down
8 changes: 8 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Documentation

* [High level overview](https://github.com/microsoft/ProjectReunion/blob/master/README.md) - Why we're doing this.
* [Roadmap](roadmap.md) - Where we're going. We're following a roadmap that
gets us to building a first version of Project Reunion exploring some basic common features.
[You can help by filing issues for features you'd like to see](https://github.com/microsoft/ProjectReunion/issues/new/choose)!
* [Contributor guide](contributor-guide.md) - How to contribute to Project Reunion.
* [FAQ](faq.md) - frequently asked questions about Project Reunion.
36 changes: 36 additions & 0 deletions docs/contributor-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
## Contributing

_We want to hear from you!_

File a [new issue!](https://github.com/microsoft/ProjectReunion/issues/new/choose) Tell us what problem you're
trying to solve, how you've tried to solve it so far, and what would be the ideal solution for your app. Bonus
points if there's a gist or existing repo we can look at with you.


1. **[Ask a question](https://github.com/microsoft/ProjectReunion/issues/new?assignees=&labels=question&template=question.md&title=Question%3A+%5Byour+question+here%5D)**<br>
Also, have a look at our [frequently asked questions](faq.md) page which we will update often.

2. **[Start a discussion](https://github.com/microsoft/ProjectReunion/issues/new?assignees=&labels=discussion&template=discussion.md&title=Discussion%3A+%5Byour+title+here%5D+)**<br>
Discussions can be about any topics or ideas related to Project Reunion.For example,
you might start a Discussion issue to see if others are interested in a cool new idea
you've been thinking about that isn't quite ready to be filed as a more formal Feature Proposal.

3. **[Make a feature proposal](https://github.com/microsoft/ProjectReunion/issues/new?assignees=&labels=feature+proposal&template=feature-proposal.md&title=)**<br>
What components do you want to see in Project Reunion? For example you can propose a new API on an existing type, or an idea for a new API.
It's fine if you don't have all the details: you can start with a summary and rationale.


**Over time, we will add Project Reunion code and samples into this repo and provide code contribution/developer guidelines.**


Most contributions require you to agree to a
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide
a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
46 changes: 46 additions & 0 deletions docs/faq.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Frequently Asked Questions
We will update this page periodically.
Comment thread
mevey marked this conversation as resolved.

### 1. How do I start using Project Reunion in my app?
If you have a Desktop Win32 or UWP app there are multiple components available now.

These components are available for you to use now and adhere to the �Project Reunion Family Promise�
that they have a single API for use in all kinds of applications.
- **[WinUI 3 for XAML](https://github.com/microsoft/microsoft-ui-xaml)** in your Win32 app helps you
build fluent UX with the ease of XAML. This component is part of the Project Reunion
Family of functionality, building on the identity + packaging + deployment transparent ideas that
Project Reunion supports for your app as well.
- **[C++/WinRT](https://github.com/microsoft/cppwinrt)**,
**[RUST/WinRT](https://github.com/microsoft/winrt-rs)**,
and **[C#/WinRT](https://github.com/microsoft/cswinrt)**
provide language-native projections of Windows, Project Reunion,
and your own custom types defined in metadata. Consume APIs from the Windows Kit, produce them for
use by other supported projections, create your own new language projections.
- **[MSIX](https://docs.microsoft.com/en-us/windows/msix/overview)** and
**[MSIX-Core](https://github.com/microsoft/msix-packaging)**
let you package your application for distribution to Windows Desktop machines
via the store or your own delivery pipeline. MSIX-Core lets you use the reuse parts of the MSIX
packaging story on older versions of Windows.

_Coming soon_
- **[Microsoft Edge�s WebView2](https://docs.microsoft.com/en-us/microsoft-edge/webview2)**

[Tell us what other components you'd like to see as part of the Project reunion Family](https://github.com/microsoft/ProjectReunion/issues/new/choose)

### 2. Do I need to be packaged to use Project Reunion?
Comment thread
mevey marked this conversation as resolved.
Your app does not need to be packaged to use Project Reunion functionality.

If you are packaged using either a Universal Windows Application package or a Desktop Bridge package,
referencing the NuGet package is enough to start using Project Reunion right away.

If you have your own installer, we�ll have instructions to carry the Project Reunion components with your app
and how to install them using some common installers.


### 3. How do I contribute?
Use this repo�s GitHub Issues to [ask questions, start a discussion or make a feature proposal](https://github.com/microsoft/ProjectReunion/issues/new/choose).
Comment thread
mevey marked this conversation as resolved.




##### I don�t see my question here! [Create an issue to ask a question or start a discussion](https://github.com/microsoft/ProjectReunion/issues/new/choose).
Comment thread
mevey marked this conversation as resolved.
37 changes: 37 additions & 0 deletions docs/roadmap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Roadmap

Project Reunion is an umbrella of work that we will develop together over time.
Here's how we intend to roll out Project Reunion.
<table>
<tbody>
<tr>
<th>//BUILD 2020</th>
<th>End of 2020</th>
<th>2021++</th>
</tr>
<tr>
<td>
<ul>
<li>WinUI preview for UWP & Win32</li>
<li>Windows Virtual Desktop</li>
<li>WebView2 Preview</li>
<li>GitHub repo for Project Reunion</li>
<li>Engineering in the open</li>
</ul>
</td>
<td>
<ul>
<li>WinUi Preview for UWP & Win32</li>
<li>Project Reunion Preview</li>
</ul>
</td>
<td>
<ul>
<li>Multiple releases per year</li>
<li>Continue expanding existing app compatibility</li>
<li>Continue delivery of new capabilities</li>
</ul>
</td>
</tr>
</tbody>
</table>