A new major version of Umbraco is in development. The goal of this project is to have Umbraco running on the latest version of the .NET technology stack. It is a large undertaking but brings a host of benefits to Umbraco and everyone using it. On this page, you’ll get an overview of the benefits, how the project is progressing and what this means for the CMS going forward.
New technology - still Umbraco
Umbraco is currently running on .NET Framework. In 2016, .NET Core was released as the successor to .NET Framework and has since been through a number of iterations. In 2019, .NET Core 3.0 was released and has now reached a level of maturity and feature parity with the old framework where it makes sense for Umbraco CMS to start utilising this.
Even though it is based on a new technology stack, it will still feel like Umbraco - just like .NET Core feels like, well, a .NET framework. It’s new, some things will change but it’s for the better and it should all be relatively familiar :). If you’re an editor, you probably won’t notice any difference as the changes are seen in the developer experience and the framework of the project.
Better performance and scalability
.NET Core is faster than .NET Framework. It is built from the ground with performance in mind and is able to take advantage of new hardware and software architecture in a way the old framework simply cannot. This means that at a base level there will be performance gains for Umbraco CMS. Depending on what operations you’re doing this can mean 100s, if not 1000s, percentage increase in performance and additionally, the scalability on a hardware level is much more powerful.
One of the reasons Umbraco has been so popular with developers is the adherence to .NET MVC standards and a native routing pipeline, customised and optimized for use with the CMS. It’s easy to learn if you know the standard conventions and offers useful and intuitive functionality on top. This is still the case but part of the migration to .NET Core has also opened up the opportunity to improve the architecture of Umbraco CMS.
Dependency injection now uses base MSDI (Microsoft Dependency Injection) which is easy to extend and allows for maximum flexibility and customisation to individual workflows.
Same goes for background tasks, used for scheduled tasks and recurring jobs. This is now implemented using Hosted Services, a native convention in .NET Core.
These are minor changes in the grand scheme of things but they help make Umbraco easier to learn, maintain and even more flexible and developer-friendly than ever before.
Compatible with MacOS, Linux as and Microsoft Windows
.NET Core is cross-platform compatible with MacOS and Linux as well as the Microsoft Windows platform. This opens Umbraco up for a new developer user base and increases the hosting option and architecture capabilities.
In our current Alpha version of .NET Core, you can already boot Umbraco up, natively, on a Mac or Linux - Amazing to see after having been solely available on Windows since the first version of Umbraco.
What does “migration” mean?
It means we’re not (re)building Umbraco from the ground up, rather migrating it, piece by piece, to make sure it works on .NET Core. This also means if you want to migrate an Umbraco project from .NET framework to the new .NET Core version that will be possible. How big a task that is depends entirely on the project scope and functionality but in terms of Umbraco specific functionality there will be a clear path forward.
The Unicore Project
Every long-running project has a codename, either by design or happenstance. The migration of Umbraco CMS from .NET framework to .NET Core has been named project Unicore. The project was kickstarted at the MVP retreat in 2019 where the overall approach and project structure was defined and published as RFCs. You can find the RFCs and read up on the discussion here:
- Project UniCore: Introduction and strategy - RFC discussion
- Project UniCore: Project and Solution re-structure - RFC discussion
Furthermore, one additional RFC has been accepted for project UniCore
The Unicore team
The Unicore project is being developed by the Core development team at Umbraco HQ. But they're not the only ones working on project Unicore - we also have an established community team helping out. The Unicore Team is specifically dedicated to the project of migrating Umbraco to .NET Core, bringing the talents of the community together to work closely with HQ to modernise the friendly CMS.
The team also advises on how to minize breaking changes when migrating from Umbraco 8 to the .NET Core version. You can read more about the Unicore team here.
Naming is hard 🙂 Currently the migration of the codebase to the .NET Core framework goes under the codename project Unicore. The latest major release of the framework comes with a name change; What was previously .NET Core (versions 1 - 4), is now called .NET 5. We haven’t decided on the product name for the final release just yet but the discussion is ongoing. We’re listening to our community that have brought up some great points on this, especially as we have announced the move to “proper” semantic versioning for Umbraco CMS.
Can I test Umbraco on .NET Core?
You can indeed. We’ve released an alpha version of Umbraco running on .NET Core. You can find detailed instructions on how to install and run the alpha release as well as nightly builds in the Umbraco .NET Core documentation.
How can I follow the progress of project Unicore?
We bring updates on the progress in the bi-weekly Product Update as well as dedicated blog posts when we reach larger milestones in the project. You can find these on the official Umbraco blog (use the .Net Core tag for an easy overview of all updates).
You’ll also find a list of blog posts, both from Umbraco HQ and the community, in the Umbraco .NET Core documentation.
Can I upgrade from Umbraco 8 to Umbraco on .NET Core?
There will not be a direct upgrade path but migration will be possible. The database schema will not change so migrating content is possible and backend/frontend code will need to be updated to use the new framework.
Does the Unicore project include a new frontend framework for the backoffice?
No, this project is solely focused on updating/migrating the underlying .NET framework.
We are working on changing the frontend tech stack as well, this is a separate project and you can find information on the product roadmap.
Will the backoffice editing experience change?
No, migrating Umbraco to .NET Core is focused on getting the backend and source code updated to run on the new framework. The backoffice will look the same and editing capabilities will be on par with Umbraco 8.
Will Umbraco on .NET Core be cross-platform compatible?
Moving to .NET Core/.NET5+ ensures cross-platform capabilities. It will, in theory, enable Umbraco CMS to run on MacOS, Linux as well as Microsoft Windows based platforms.
Currently .NET Core support for the M1 chip architecture in new MacOS devices is limited but emulation is being implemented and with .NET6 full compatibility should be enabled.
The list of officially supported platforms for the first full release is still to be determined.
Will Umbraco 8 packages work on the new framework?
No, packages will need to be migrated to the version. How much work involved in this will be based on the functionality of the package. When we get closer to a release candidate of Umbraco on .NET Core we will publish information on what is necessary when upgrading packages.
Will Umbraco Cloud run .NET Core?
Yes, the next major version of Umbraco will be available on Umbraco Cloud with the public release.
Which features does the .NET Core version ship with?
The .NET Core version will have feature parity with Umbraco 8. Changes and feature additions made to Umbraco 8 are continuously merged with the .NET Core version.
There are some changes to the API layer, caused by the switch of framework, that change the behaviour and in some cases open up for new possibilities. At this point no new features are added to Umbraco’s content management capabilities.