Following the success of DotNetNuke 2.0, we focused on improving the stability and quality of the application. Many production issues were discovered after the release that we would have never anticipated during internal testing. As an application becomes more extensible, people find ingenious new ways to apply it, which often produces unexpected results. We also integrated some key Roadmap enhancements that were developed in isolation by Core Team members. These enhancements were actually quite advanced because they added a whole new level of professional features to the DotNetNuke code base, transforming it into a viable enterprise application framework.
It was during this time that Dan Caron single-handedly made a significant impact on the project. Based on his experience with other enterprise applications, he proceeded to add integrated exception handling and event logging to DotNetNuke. This provided stability and "auditability" — two major factors in most professional software products. He also added a complex, multi-threaded scheduler to the application. The scheduler was not just a simple hard-coded implementation like I had seen in other ASP.NET projects, but rather it was fully configurable via an administrative user interface. This powerful new feature could be used to run background housekeeping jobs as well as long-running tasks. With this in place, the extensibility of the application improved yet again.