DNN Blogs

Written for the Community, by the Community

Major Infrastructure Changes to DNN Platform

Written By Mitchel Sellers
2019-10-25

It has been longer than I planned since I’ve last blogged about progress on the technology side of the DNN Platform project. It isn’t from a lack of progress, more from a lack of time to do the updates justice. We have just recently passed the 18-month mark since the DNN Platform project started being driven by the community again, and we have accomplished amazing things. It hasn’t been without a few hiccups along the way, but we have a lot to be proud of regarding our accomplishments. I’ll try to round up what we have done, as well as what we are working on, and what we need to work on, to help provide a bit of better clarity, focusing on infrastructure items only

What Has Been Done

We have processed more than 600 pull requests in the time that the community has been steering the ship. These pull requests vary from small changes to massive rewrites.

Repository Structure Changes

In the last 18 months, we have worked to simplify the project structure of the DNN Platform. In the past week, after the 9.4.1 release, we have completed one of the last steps in this effort with the merging of the Admin Experience repository into the main GitHub repository.

These changes took a substantial amount of effort, however, they have resulted in a number of key improvements across the DNN Platform product.

Reduced Build Times

We have gone from build timers over 30 minutes to less than 11 minutes. This allows for faster turnaround and management. Even better, previously a pull request for the Persona Bar would generate 2 of these 30 minute builds, now a single 11 minute build does everything.

Simplified Contribution Steps

A change that involves code in both the Platform and the Persona Bar UI can now be done in one step, all within a single codebase. Previously it required:

  • A pull request to be merged into the DNN Platform repository
  • Publishing pre-release NuGet packages - Only possible by the Release Management Team
  • A second pull request in the Admin Experience Repository

There was no way to do proper testing until all of those steps were complete.

Improved Persona Bar Performance

One of the steps was the merging of Persona Bar modules into a single installer. This improved personaBar performance, installation performance, and upgrade performance.

Easier Refactorings

By placing all code in one project we can perform maintenance on the platform with less risk, and at a faster pace.

Streamlined Bug Reporting

With a single repository, we have a single queue of issues that makes submission easier, triage faster and avoids duplicate issues.

Documented Policies and Procedures

We have documented and implemented policies and procedures to govern how we process changes to the platform, how we release the platform and other similar policies. The goal is to be transparent in the processes, as we have seen with a few of the recent releases we have had a few hiccups with undocumented features, but we are continually re-evaluating the processes and updating them to be as efficient and consistent as possible

Improved Developer Experience

Being a developer and wanting to either contribute to DNN, or work with DNN, has also seen a number of improvements. We now have a single repository structure allowing users to clone and then build DNN without a lot of extra work. This is now as simple as running ./build.ps1 in powershell. We have also documented this process.

The NuGet packages published as part of each release have been updated and expanded to better include development references that are used by developers, resulting in a faster time-to-develop than in the past.

Lastly, we have added native support for Dependency Injection to all extension types starting with the 9.4.0 release, which brings our feature set more in-line with current best practice recommendations.

What We are Working On

We are much better off than we have been. However, we have a few primary items of focus on the infrastructure side that are priorities for coming releases. There are many other items in issues that are being tracked, I wanted to highlight the bigger/process related items.

Production Implementation of New Update Service

One of the final handoff processes from DNN Corp (ESW) to the community is the management of the Update Service which provides information on DNN Upgrades, Module Upgrades, and Security Bulletins. We have been testing an updated version of this for a number of months. Starting with Version 10.0 this service will become the new default. This will continue the efforts for the community to stand on its own with regards to the management of this information. The .NET Foundation has been gracious in providing the hosting/environment necessary for us to accomplish this.

Publication of New Language Packs

Proper language packs have not been distributed since version 9.2.0, which is a major concern for those using non-English languages. We have been recently provided some additional tooling that will allow us to continue efforts to publish new language packs for future versions of DNN.

Once this process is in place, it will become repeatable, and part of the release process to ensure proper support for languages going forward.

Streamlining Build & Branching Strategies

With minimal effort now, we are able to create releases, release candidates, and other builds for the DNN Platform. However, the current infrastructure has a number of undocumented, or less-than-easily-discovered, features. We will be working to improve this process with automation, and to provide contributors with a better understanding of how the whole process works.

This includes automatic publishing and signing of NuGet packages to ensure everyone knows the “right” versions etc.

Supporting Developer "F5" Debugger Experience

The changes to project structure thus-far have improved the developer experience greatly. However, it is still not possible to just clone DNN Platform and hit F5 to run the site. The goal of the team is to provide this support in the coming months, lowering the barrier of entry for development even more.

Areas of Improvement

Though we have accomplished great things as a technology group, we do have areas where we can collectively improve. This extends to the greater community as well.

Testing, Testing, Testing!

This is the single biggest pain-point for the DNN community. We previously had support from ESW with dedicated QA resources doing regular testing. However, that support was lost a few months ago. This places a large burden on the community, as testing is very time-consuming. Efforts within the leadership team, which will be blogged about soon, are underway to help establish a formal testing sub-group within the community to address this.

The result currently is that we are encountering more bugs after official releases than we would like to see. We are addressing these concerns with quick follow-up bug fix releases, but ideally, these bugs need to be caught during the Release Candidate cycles. As we work to establish a more formal community-driven testing plan, please know that testing Release Candidates is incredibly valuable. If you are looking for a way to get involved and contribute more, this is an awesome way!

Communication

We have regularly scheduled meetings of the Technology Advisory Group, as well as other groups. However, we don’t have the best processes in place to communicate things outside of those meetings. As a whole, we need to work to find the right place to put a megaphone on the activity within the DNN Community.

This is something the leadership team is continually evaluating to find the most appropriate methods to communicate major updates to those that are not able to attend regular meetings, etc. Specifically, we are looking to expand communication around releases, testing and product roadmap.

Thanks to the Community

Although I’m the one writing this summary, there have been many very active members from the DNN Community that have contributed to these efforts. Many contributing hundreds of hours alongside the group to help improve, I want to call out a few of these individuals specifically for their assistance in the past 18 months (In alphabetical order)

  • Andrew Hoefling
  • Brian Dukes
  • Daniel Valadas
  • David Poindexter
  • Matt Rutledge
  • Oliver Hine
  • Peter Donker

We have many other contributors as well, and for all, I extend a personal thanks. It is the community that makes DNN strong and the driving force behind our continued success.

To the Future

I am excited to see what the next 18 months will have in store for the DNN Platform!

Total: 5 Comment(s)
Great overview of how the project has been going!
Friday, October 25, 2019 ·
Thank you for keeping us informed. It is appreciated. :)
Saturday, October 26, 2019 ·
Thank you so much everybody! These changes are so in the background, and soooo important. Love you guys for it!
Monday, October 28, 2019 ·
Awesome work, updates, and info. Thanks Mitchel for the communication and thanks to all the contributors who have stayed persistent and contributed to these changes. Your work is appreciated!
Wednesday, October 30, 2019 ·
Outstanding! To everyone involved, thank you very much!!
Wednesday, November 6, 2019 ·

Would you like to help us?

Awesome! Simply post in the forums using the link below and we'll get you started.

Get Involved