My Love-Hate Relationship with DotNetNuke

I am an ASP.NET programmer, so when I needed to implement a Content Management System (CMS), I looked around for an ASP.NET-based system that would let me create add-ons or modules if the base package didn’t do everything I want. I just knew that my clients would insist on implementing some feature or another in a custom way, and that I’d be forced to delve into the depths of the CMS and change it as I had already done with ecommerce packages.

After much research, DotNetNuke (DNN) seemed the obvious choice. I have been using it for several years now and for several different web sites, and I have purchased several off-the-shelf modules from I loved it right from the start, but have, over time, become disappointed with it.

First, the good stuff…

  • It is free.
  • It is open source, so the source code is easily available if you need to customize it.
  • There is a huge number of 3rd-party modules available to make DNN do whatever you want.
  • If you can’t find a module, there is a relatively standardized way of creating your own module within the DNN framework.
  • There are also a huge number of 3rd-party skins to change the way your site looks.
  • Visitor tracking and Google analytics build in.

But hold on, some of those “pros”, which drew me to DNN in the first place, turned out to be double-edged swords, and here’s why…

Free: Yes the base code is free, and it will run a basic site if you don’t want it to do anything cutting-edge and way cool — most of the sites I have seen built with the base code only tend to look like sites of ten years ago. I have spent enough on 3rd-party modules that I could have easily purchased a commercial CMS.

Open source: In theory, this means that you can fire up Visual Studio and look at/customize the base code whenever you “need” to. But if you do, you can’t automatically upgrade to the newest versions when they are released. In fact, upgrading becomes a real pain. If you don’t think this is a big deal, then take a look at the number of versions released since 5.0 made it out of beta. And some of those were critical security updates. (Oh and if you want to do automatic upgrades, you have to plunk down more than $100 for a 3rd-party module to do it for you – or program your own module.)

3rd-Party modules: There are hundreds of modules available. This is mostly good, but unfortunately, they aren’t all written to the same standard. In just looking at the “admin” screens of various modules, you’ll find a wide variety of looks and ways the information is organized. So if you are training content editors, you have to specifically train them in the ins-and-outs of every module because they are all different. Even worse, I have had instances in which modules conflict with each other and crash my site – especially after the DNN core is updated.

Module development: I needed to create some custom modules for several clients. The online documentation on how to do this from the DotNetNuke organization is nearly non-existent. There is full documentation of all the DNN classes online, and these are helpful but take a lot of time to pore through.

Fortunately, there are some users who have published some helpful information, and I even purchased Mitchell Sellers book, but there are plenty of holes in that information. For example, I found that I needed to access and change user profile information in one module. Hours of research and trial-and-error were required to get that working. I think that should be simpler. And I think that the DNN folks should publish a best-practices manual for module development.

Skins: 3rd-party skins are great, but they are a bit generic looking. If you want something unique, you CAN do it yourself. DotNetNuke seems to pre-date the ASP.NET themes engine, so you can’t simply use themes you already have on hand and you must learn a whole new way of doing it. Not a huge thing, but again, it costs time.

Visitor tracking: this is one thing I find very odd. Visitor and link tracking are built in, but there is no built-in “dashboard” for viewing the stats. You have to build that page yourself! And the built-in Google Analyitics visitor tracking doesn’t track downloads of PDFs, word documents, and other non-web files.

So why am I still using it?

Well, I have a significant investment in it now, in both time and money. And there are some things I really do like about it. The feature I love over other solutions I’ve seen is the “in place editing” of content. You don’t have to go to some “content” or list page to find the content you want to edit. You do it right on the page you are editing. This simplifies content editor training. And I do love the vast selection of modules for purchase.

And in the ASP.NET space it is the 800-pound gorilla of CMS.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s