Umbraco ballons and unicorn balloons

Alpha 4 release of Umbraco on .NET Core

Bjarke Mikkelsen Berg
Written by Bjarke Berg

A new alpha release of Project Unicore is ready for you to try out. The main focus with this release is to make it possible for package authors to start creating or migrating packages on the next major version of the CMS. There are other things to be excited about as well such as the inclusion of all features and fixes from Umbraco 8.12 as well as a re-introduction of helper methods for IPublishedContent.

Overview:

A couple of weeks back we announced the decision to postpone the beta release of Umbraco on .NET Core from the end of March to end of April. It’s important for us to ship a beta version that’s feature complete and ready for proper testing - that’s why, together with the Unicore Team, we have found it necessary to postpone the beta release as more work is needed on certain functionality before it’s ready for public testing.

We also recognize that package developers are eager to get their hands (and packages) dirty with .NET Core and that’s why we’ve decided to create this fourth alpha. The necessary changes have been made to start working on migrations of existing packages as well as creating new ones.

Final thing before we dive into the alpha release: On Wednesday, April 7th, I will be hosting a Community Office hours session together with the Unicore Team. If you have any questions about the Unicore Project (Umbraco on .NET Core) you can ask questions beforehand and see current questions here. We hope to get a lot of questions and look forward to answering them.

What’s included in Alpha 4

Since the last alpha release, a couple of cool changes are now available including:

Namespace changes

One of the main reasons we could not recommend package developers to start on earlier alpha releases, was because we still hadn’t updated the namespaces to match new file locations. The reason this was delayed until now, was mainly to ease the merges of commits from Umbraco 8 into our working branch. All namespaces are now updated:

Reintroduced friendly extension methods on IPublishedContent

We have reintroduced the extension methods on `IPublishedContent` that do not require all dependencies injected. The reason this was not part of earlier releases, was to ensure we are not using these extension methods internally, due to the fact that using these makes unit testing harder. 

New NuGet package dependencies

We have aligned our NuGet packages with best practice in .NET Core - One package per assembly. Using this structure makes it easier and less error-prone for us to generate the NuGet packages. Furthermore, it is a step towards allowing users to have backoffice only or website only Umbraco instances in a load-balanced setup.

Includes Umbraco 8.12 changes

The latest changes from Umbraco 8 is now part of this project. Including new features like Unattended upgrades, Updated flow for creating Document Types and of course all the bug fixes and performance enhancements.

Event migration

Instead of relying on static C# events, we have introduced an in-process event aggregator inspired by notifications from MediatR. Now all notification handlers need to be registered in the DI Container, and the event aggregator will ensure these handlers are executed every time the specific notifications are published. Even though we already migrated a lot of events, we still have many to go.

Umbraco dotnet template now supports .NET 6 Preview

Since the last alpha release, Microsoft has released preview-versions of .NET 6. We have therefore added the option to the Umbraco dotnet new template to create the project using .NET 6. 

Documentation

We still have lots of documentation to revisit but the process of documenting the next major release of Umbraco is well under way. The updated documentation currently only lives as a Github repository, but you can find the updated articles there.

Bug Fixes

The last alpha versions had an annoying error with ambient scopes, that forced users to redo the operation they did quite often. This is now fixed together with a series of other smaller bug fixes.

Who is the Alpha release relevant for?

Unlike the other alpha releases, this release is mainly addressed to package developers that are eager to get started migrating their packages. Developers who have an interest in helping out, testing and finalizing the project are of course more than welcome to give it a spin as well. Keep in mind a few APIs are still subject to change (see known “Known issues” below). 

Umbraco Package icon

Are you a package developer? Why not sign-up for the Umbraco package newsletter and get news like this sent directly to your inbox. 

Furthermore, since this is an alpha release, you should not expect that any data stored in the database or on the filesystem will work on later versions. In other words - please don’t start solutions on this release that will end in production.

But please do start testing and help us move forward with the project. The earlier we have feedback, the easier it will be to improve the releases.

How to get started

The procedure to get started using this alpha is the same as for the other alpha versions. 

Ensure you update your Umbraco dotnet new template, and then you are ready to create new projects running on alpha 4. See a full description and other interesting notes about the project here.

If you want to be on the bleeding edge, we also offer nightly builds. But be aware these are not tested as intensively as the alpha releases.

If you are going to create or update a package, you will now need to have a reference on one or both of the following NuGet packages: `Umbraco.Cms.Web.Website` or `Umbraco.Cms.Web.BackOffice`, depending on whether your package is an extension for the website part, the backoffice part or both.

Furthermore, we have tried to make it a little easier, by making a little guide here

Known Issues and missing parts in this Alpha release

While using the alpha beware of the following known issues and missing parts:

  • Restarts during install
    • When the Umbraco solution is installed, a restart is required. Right now we need to use IIS/IIS express to handle the next request and start the process again. Sometimes this fails and you need to start the process again
  • Members are still an area with a lot of missing functionality
  • Mac/Linux + Examine/Lucene issue as that assembly still is built for .NET Framework.
  • Static events
    • The codebase still has some static events that are not migrated yet. Feel free to pick up some of them and help to migrate them. If you are a package developer and need to use some of the events that are not migrated yet, please reach out and tell us which you want us to prioritize.
  • File system abstractions
    • The current filesystem abstractions are expected to be changed before the final release. If you are a package developer, and your package mainly extends the file systems, we recommend that you wait for a later release before you start migrating that package.

How to provide feedback

These are all known issues and missing parts, meaning you don’t need to report these. We try to keep the list of known issues up-to-date in the Umbraco .NET Core documentation. If you find other issues that are not already reported, please report them on the GitHub tracker by following the link or selecting “🌟 .Net Core Bug Report” when creating a new issue.

Umbraco Netcore Github Issue

What’s next?

We aim for having the first beta release ready by the end of April, if nothing unexpected shows up. The beta releases are defined as a feature-complete CMS, but still without the HQ packages. We expect to ship multiple beta releases when we fix issues found or other improvements are ready.

Some of the most significant parts that are still to come are:

  • Examine migrated to .NET Standard
  • All remaining member functionality and related parts need to be migrated to ASP.NET Core Identity
  • File system abstractions updated to better support blob storage.
  • The remaining events migrated.
  • HQ Packages are not available, so no Starter kit, Umbraco Forms or Umbraco Deploy
  • Documentation

These parts will be released in future beta releases or the release candidates. We will, of course, make sure to keep you updated in future blog posts and Product Update blog posts so you know when you’re able to test the different parts.

If you'd like to pull down the source code that this template is built from, the latest .NET Core Umbraco branch is on the "netcore/dev" branch. You can find a list of open issues on the issue tracker. All help and pull requests are very welcome!

Community contributions to this Alpha version

We’ve been thrilled to see such significant contributions to this release from across the Umbraco community. 

First of all, our Unicore team has again contributed across a number of crucial areas such as discussions, advising, coding and testing the release. Huge thanks to Emma, Benjamin, Steve, Andy and Simone.

Furthermore, we’ve had a massive amount of contributions from the community member Kenn Jacobsen.

H5YR to everyone who has helped us on this release 🙌

If you have any questions about the project that you would like to ask the Unicore team, remember, they will be hosting the Umbraco Community Office hours on April 7th. You can submit questions beforehand or see current questions here

Now - help us get even further by testing out the alpha 4!

Loved by developers, used by thousands around the world!

One of the biggest benefits of using Umbraco is that we have the friendliest Open Source community on this planet. A community that's incredibly pro-active, extremely talented and helpful.

If you get an idea for something you would like to build in Umbraco, chances are that someone has already built it. And if you have a question, are looking for documentation or need friendly advice, go ahead and ask on the community forums.

Want to be updated on everything Umbraco?

Sign up for the Umbraco newsletter and get the latest news and special offers sent directly to your inbox