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!