As I look to the future with DNN.Platform we have an amazing platform, however, the platform has been growing for more than 15 years. With 15 years of growth, we have a number of things that have evolved that are "less than perfect' along the way. However, as we look to move into the future we have amazing things on the fore-front. .NET Core, Blazor, you name it we have a lot of new technologies that could be implemented that will help the platform grow. This growth, however, will not come without a few growing pains along the way, so it is worth discussing on a regular basis to keep everyone on the same page. One of these growing pains are continued API management which can cause upgrade issues, we want to plan ahead so let's dive into what is coming.
Versioning Policy
Everyone remembers the 9.2.0 release and the sudden breaking changes that were introduced. One of the first items I worked on as the Technology Group Leader was to help create the Versioning Policy that will be used to outline how/when/why we will make some of these more painful changes to DNN Platform.
We never want to make these types of changes, however, it is something that is very important for the long term future of DNN. The more "clutter" we can remove the faster the platform will perform, and the easier that we will be able to upgrade to new technologies.
What is Coming in 10.0
The current roadmap showcases a release of version 10.0 this fall. As part of this effort, we will continue the steps necessary to remove code that was marked as Obsolete in prior versions, for developers that have not taken these warnings into consideration it will be another round of breaking changes, similar to that of 9.2.0.
Looking at the codebase for DNN Platform we still have active APIs that were flagged for removal in Version 6.0, initially tagged for removal as far back as 2009 that have yet to be removed. As we noted in the versioning process, these elements should have been removed no later than version 8.0.0. We have another large number of APIs that were flagged for removal in 7.x and 8.x that also has yet to be removed. This legacy code adds substantially to the codebase of DNN Platform and will continue to limit our ability to progress technically, therefore another round of major breaking changes will be on the forefront with the 10.0 release and we want to communicate this early.
API's Updated with Removal Version
When the Versioning Policy was implemented the strategy was implemented that items would be removed in +2 major versions. Something marked for removal in DNN 7 would be removed in 9, or items marked for removal in 9 would be removed in 11. A review of this process has been completed and all elements marked for removal in DNN 8.x or earlier have been updated to include a note of "Scheduled removal in v10.0.0.".
Size of Change
By the numbers, we have a total of 336 methods or classes in the DNN Platform API that will be removed as part of the 10.0 release. You can easily find these methods using a "FInd in Files" search within Visual Studio, or via a GitHub code search looking for the phrase "Scheduled removal in v10.0.0."
Developer Support for 10.x
It is my hope, that with proper communication and improved developer support, we can make the 10.x release a success and a non-event for individuals looking to upgrade. To this point, we have a few suggestions for developers that can be taken now, as well as a number of items that will be completed to make the transition easier.
Best Practices Recommendation: Avoid Build Warnings
The simplest change possible for developers are to ensure that no build warnings exist for the use of an Obsolete method. If your code can build against the DNN 9.3.2, or 9.4.0 releases with NO build warnings you will be set for 10.x without any concern. If you see errors, this would be the time to switch to new implementations. Most of the methods being removed have guidance on the new API method to use.
10.0 Alpha Release
Once the 9.4.0 release is completed, in early June, the TAG group will be shifting gears towards the development of 9.4.1 and 10.0.0. Once this shift occurs a pull request will be processed to remove ALL Obsolete methods that will be removed and an Alpha release will be published on GitHub for developers to download, install, and test using their solutions with the slimmed down API. With a release not scheduled until Q4 this will ensure developers have at least 3-4 months to test with the new APIs and should allow adequate time for support of 10.0 to be easier.
10.0 Alpha NuGet Packages
For those developers looking for a programmatic validation of compliance with the new API, we will also be publishing pre-release NuGet packages for the 10.0.0 version. Developers can quickly update their NuGet references to reflect version 10.0.0 and validate functionality in this manner as well.
The Future is Bright
As we continue to improve the DNN Platform the future is bright. With proper care and management, we can continue to evolve DNN Platform to adjust with the times and continue to provide world-class functionality to all users. It is my goal to continue to communicate these types of changes as far in the future as possible to ensure that all participants in the EcoSystem have enough time to react.