🧰 The Community Toolkit
The Windows Community Toolkit has come a long way since our start in 2016 as the “UWP Community Toolkit”. We joined the .NET Foundation soon after, and we’ve broadened our scope to encompass a larger set of .NET developers with our communities with projects like the MVVM Toolkit and High Performance packages by Sergio Pedri.
A while back we started talking to the Xamarin Community Toolkit team, and we decided it’d be best to align our efforts and resources together as we move forward on new technologies like WinUI 3 and .NET MAUI. As they recently announced, they’ve joined our GitHub organization for their next project creating the MAUI Community Toolkit.
Our GitHub organization has thus been renamed as CommunityToolkit
(from windows-toolkit
) to encompass our broader scope of projects under its purview within the .NET Foundation. This will hopefully be the last rename of our organization for a while (it’s only the 2nd time we’ve done it!). This new name also reflects the new package identity root we’ve been planning to move towards, CommunityToolkit.*
, on NuGet as well; as we called out in a previous post for WinUI 3.
Look how we’ve grown from a single project into the home of the:
- Windows Community Toolkit
- Graph Community Toolkit
- MVVM Toolkit
- MAUI Community Toolkit
🔮 The Future – Introducing the .NET Community Toolkit!
We want to be the home for .NET based Community Toolkits which are partnering the community with engineers, Microsoft MVPs, and the teams working on those technologies.
Sometime in the next few months, we plan to split out our .NET specific libraries from the Windows Community Toolkit into their own dedicated repository. This includes our CommunityToolkit.Common
helpers, the MVVM Toolkit, the High Performance, and the Diagnostics packages to form the “.NET Community Toolkit”. Sergio Pedri will be its maintainer. 🎉🎉🎉
By centralizing this code in its own home, we can better share it with the other .NET based toolkits we have within our organization. It also makes it easier for any .NET developer and developers from each of our more framework-specific toolkits to contribute back components that are platform and framework agnostic.
🚀 We look forward to continuing our journey with the community and seeing everything that can happen when we build things together with open source. If you haven’t jumped aboard yet, don’t hesitate! It can be as simple as reading the docs, opening an issue, or reviewing a PR to try a cool new feature! Our wiki has information about contributing any of these types of feedback to a project.
Happy coding! <🦙/>
Technical Notes
📝 Other Upcoming Changes
During our last Windows Community Toolkit release, we built a wiki to start documenting processes about the organization and project itself, how to contribute, and technical details on how build processes and projects work. We plan to centralize this wiki across our organization as a set of best practices for toolkits to follow and to make contributing to each toolkit a similar experience.
We are also currently working on consolidating our toolkit documentation into a new home, still on docs.microsoft.com. There we will have docs for all our toolkits centralized and more easily discoverable, regardless of which technology you may be using from them.
🚗 Git Migration Notes
If you have a copy of a repository cloned from our previous windows-toolkit
org, you’ll need to update your remote origin url with the change. For instance, for the WindowsCommunityToolkit
repo the command would be:
git remote set-url origin https://github.com/CommunityToolkit/WindowsCommunityToolkit.git
If you’re using our NuGet Preview Packages, you’ll need to update them in the Visual Studio Package Sources
settings under NuGet Package Manager
and change WindowsCommunityToolkit
to CommunityToolkit
. For instance, for our latest main
feed the new url would be:
https://pkgs.dev.azure.com/dotnet/CommunityToolkit/_packaging/CommunityToolkit-MainLatest/nuget/v3/index.json
We also plan for this to be a centralized feed for all our repos main
branches in the future.
Didn’t Microsoft originally create Prism? Why not promote/use that instead of creating a new MVVM library?
Prism is another great MVVM library that’s part of the .NET Foundation. Our community was looking for a simple replacement to MVVMLight, which is no longer being maintained. More background info can be found here: https://github.com/CommunityToolkit/MVVM-Samples#background
🎉🎉🎉
Good news, regarding the adoption of HighPerformance package.
It is nice to see, .NET finally taking it seriouly what could have been Microsoft’s “Delphi” from version 1.0, performance and productivity in one package, without having to dive into OS kernel like programming tricks.