Oqtane Developers Meeting - May 2024


By: Shaun Walker

Developer Meeting: May 1, 2024 at 12:00 PM ET

Status Updates

5.1.1 released on April 16, 2024

  • 40 Pull Requests
  • 82 Commits
  • 1 New Contributor

Contributors: @sbwalker, @zyhfish, @leigh-pointer, @W6HBR, @mdmontesinos, @mmisu

5.1.1 was mostly fcused on stabilizing the 5.1.0 release. The next release will be 5.1.2.

Blazor Issues Resolved

The Blazor issues identified last month related to StreamRendering and Auto Render Mode have been resolved by upgrading to the latest .NET SDK. It turns out the issues were not related to the Oqtane Framework, but were bugs in the initial version of Blazor in .NET 8. The latest .NET SDK is 8.0.4 and it is very important that you upgrade your development and production environments to the latest SDK if you are using Blazor. The following thread explains how to upgrade your Azure environment to the latest .NET SDK.

5.1.2 Enhancements

A number of enhancements have already been introduced for the 5.1.2 release:

Oqtane has traditionally provided the ability to enable or disable Prerendering at the Site level (it is enabled by default). However with the introduction of Static Rendering there are now scenarios where a deveoloper may need more granular control over this setting. A new property has been introduced to the IModuleControl interface which allows a module component to specify its Prerendering preference (similar to RenderMode). Disabling prerendering can prevent a component from loading data twice, which can improve overall performance ancd user experience. However if a component is being Interactively rendered and its content is displayed on a public facing page of a website, you will want the content to be indexable for SEO purposes so in this scenario you will need to ensure that prerendering is enabled.

Modules are the standard extensibility point for functionality in Oqtane. Usually, modules have a user interface but in some cases you may want to create modules which are "headless" ie. they only contain back-end functionality and have no UI components. An enhancement was added to enable this scenario. The only requirement is that a module must include a ModuleInfo.cs class (ie. a class which implements the IModule interface) which has a unique namespace. The ModuleInfo.cs class can be part of the Server project.

The Control Panel for administrating a page in the Oqtane UI was enhanced to include a new option for "Copy Existing Module". This option creates a new independent copy of a module on the current page, including the module content. A module must implement the IPortable interface for it to supported by this feature.

Blazor Presentation

@sbwalker did a presentation last month of Building Beautiful Blazor Websites in .NET 8. The presentation focused on explaining the new capabilities of Blazor in .NET 8. The presentation included a demonstration of the Arsha theme which was created as an example of an existing Bootstrap template can be easily adapted to Oqtane, including support for all advanced JavaScript features. Initially the Arsha theme only supported the new Static Rendering mode in .NET 8 however it was recently enhanced to also support Interactive Rendering as well. You can explore the project more in this repo.

Oqtane vs. DNN Observations

The .NET Foundation collects daily metrics from GitHub related to open source project activity. A comparative trend analysis was created for Oqtane and DNN and the results reflect the momentum of each open source project.

Oqtane vs DNN


@markdav-is raised the topic of upgrading and some challenges he had with loading resources such as JavaScript or CSS. @leigh-pointer explained that he recently released a large set of module templates which demonstrate how to integrate resources as well as third party UI component libraries into modules and themes. The templates can be installed from the Oqtane Marketplace the same as any other module or theme, which enables them to be selected in the Template field in the Create Module and Create Theme options within the framework. @sbwalker also explained that he was looking into a bug related to the loading of Site level resources (which has since been resolved in this PR).

@markdav-is mentioned that Blazor has become much more complex over time. @adefwebserver indicated that one way to manage the complexity is to focus on a single configuration ie. Interactive Blazor Server rather than trying to leverage all render modes and hosting models. @markdav-is said that Oqtane also helps developers manage the complexity by abstracting a lot of the details so that developers can focus on building modules.

Based on the request at last month's meeting, an official Discord server was created for Oqtane. @leigh-pointer was given moderator rights to configure the options appropriately for the Oqtane community.

@thabaum asked about upgrading the rich text editor in Oqtane to QuillJS 2.0, now that it has been officially released. @sbwalker indicated that some effort was going to have to be spent on understanding the migration effort from QuillJS 1.0 to 2.0. @adefwebserver suggested migrating to a completely different rich text editor component instead. He indicated that he recemtly got some experience with Radzen's rich text editor and would create a POC on how it could be utilized in Oqtane.

The next Oqtane Developer Meeting will be on June 5, 2024.

Do You Want To Be Notified When Blogs Are Published?