What’s included in Umbraco 9 Beta
I’m thrilled to say that it is actually easier to list what is not in the beta release compared to what is. This is because we are finally at a stage where we consider Umbraco 9 to be feature complete - all features and functionality available in Umbraco 8.13 are available in Umbraco 9 and migrated to the latest versions of Microsoft’s tech stack.
We have a single area that we know does still not support cross-platform execution, the search functionality through Examine, but it should still work on Windows.
In this blog post, I’ll highlight some of the changes compared to Umbraco 8 and then of course encourage you to take this feature-complete beta version for a spin and provide us with feedback. And if you’re curious but not quite sure what to do, how to test, etc. - fear not, you’re not alone and together with the community, we’ve planned helpful Umbraco 9 beta “learn-a-thons” to get you going - more on those later. First, let’s see what’s new:
Framework updated from .NET Framework 4.7.2 to .NET 5
The main goal of Umbraco 9 was to be executable on Microsoft's latest version of .NET. To make this happen, it required a lot of changes, several of which are listed below. Most APIs that come with .NET Framework 4.7.2 are part of .NET Standard, so we can continue using them, but not all APIs are available and some have changed, so we had to rewrite code, to achieve the goal.
Web-framework updated from ASP.NET 4 to ASP.NET Core 5
The most significant requirement for .NET 5, is to also run on the new web framework named ASP.NET Core.
This web framework is completely rewritten. Even though the main MVC pattern is very similar to the one from ASP.NET, it contains many changes under the hood.
Dependency injection (DI) is a first-class citizen, and to adopt the new web framework, we were required to adjust DI everywhere in our codebase too. We also decided to adopt the logging abstractions available in the new framework instead of having our own.
The last significant requirement to use the new web framework was to update the way we configure the application. Here we have also adopted the standardized abstractions provided as part of the new web framework.
User and Member authentication updated to ASP.NET Core Identity
The two types of authentication we know from backoffice, users and website members, have been updated from ASP.NET Identity and Membership Providers, respectively, to using ASP.NET Core Identity for both. The changes are most significant for members, but they are now implemented with the same technology, which will make maintenance easier in the future. And furthermore, a lot of code can be reused between the two concepts.
Third-party dependencies updated or replaced
Umbraco had a couple of third-party dependencies that were not developed for .NET (Core) and the libraries are only in support mode.
The first such library is ClientDependency, which is used to minify and bundle Javascript and CSS from packages and the CMS itself. This is now replaced with another library called Smidge.
Another example is ImageProcessor, which is used for image resizing, cropping and other manipulations, has been replaced with ImageSharp.
We also had lots of other third-party dependencies that could be made compatible with .NET 5 by just updating them to the latest versions.
Static events are replaced by a new Notification pattern
We have replaced the static events raised by Umbraco with a new Notification pattern. This new pattern makes it possible to handle asynchronous notifications and makes dependency injection easier. Furthermore, these are now fully handled by the dependency injection container and are not tightly coupled to specific implementations like static events.
Installation process
The installation process of Umbraco also had to change, due to new limitations in NuGet. Instead of installing the Umbraco package into an empty web project, it is now possible to use a new concept called dotnet new templates. These templates need to be installed using NuGet, but can then be used from both CLI, Visual Studio and Rider. More information about how to install Umbraco in the How to get started section below.
Who is the beta release relevant for?
You, possibly. As we consider Umbraco 9 feature complete, this release is also relevant to more people. But note that it is still just a beta release, so expect we will find issues that need to be fixed before the final release and we do not recommend having websites in production running on this release.
Help us by testing/playing around
The more people testing out the prereleases the better. So we appreciate all testing and especially edge cases that you have done in Umbraco previously. If you encounter any issues, please do raise an issue on the tracker - see below for more details. And if you’re unsure how to get started with testing, why not join the learn-a-thons - more on those in a minute ;)
Package developers - go on and start migrating
We also recommend package developers start migrating their packages to Umbraco 9 now. Packages are important for most Umbraco sites and the earlier these packages are available the more people can help to test both Umbraco and the packages, before the final releases.
Real projects
If you have a project that does not require packages and that is targeted to go live after the release of Umbraco 9 (Q4), might not be available for the final release, we can recommend starting that project on the beta version.
Get familiar with Umbraco 9
With Umbraco running on a new framework, some things have been changed or updated to work with new conventions and requirements. We have tried to make the switch as seamless as possible, so Umbraco still feels like Umbraco. If you’re used to developing Umbraco on the old .NET framework, you might wonder what has changed and why? This blog post will give some of the answers but there are areas that can benefit from spending a bit more time diving into them. In order to facilitate this, we have planned 4 learn-a-thons in May, each with focus on a different topic. These will be hosted by Carole Logan, Microsoft and Umbraco MVP, and Emma Burstow, developer advocate at Umbraco HQ
“Join us as we explore the new Umbraco 9 beta from a developer's perspective. We'll soon be building our sites on .NET core & Umbraco (exciting!!) so let's have a look at building with the v9 beta to create websites, APIs, extend the backoffice and more. This won't be talks or a traditional workshop, we'll be learning together, screen sharing, hacking, etc. We'll have a focus each week on what we'll be targeting in our v9 journey. Join us to learn and share with the community, see you there!” - Carole Logan
We’re also holding webinars for Gold Partners and Umbraco MVPs, with more in-depth presentations and time for Q&A.