DotNetNuke: Ready for Prime Time?

"The delivery boys have been displaced by Comcast and AT&T and Google and Yahoo, and there's no way newspapers will ever reclaim that role." -- Justin Fox, Time

Our group at work needs desperately to have a CMS that is easy to work with for various clients -- especially clients that need to be able to "edit" their own corporate web sites. Basically, we needed to have a CMS with which we could just "plug in" a customizable pre-made CSS XHTML "skin" for a particular industry, and customize it to the client's desires.

So, we all went out and started researching various offerings. Sharepoint was eliminated, it is simply too "high end" and expensive for what we need to be able to do. We looked at Joomla and Drupal, both had their plusses and minuses, but mainly they're interpreted PHP and though we've got PHP people, most of us are hard - core .NET developers. We looked at Umbraco, Rainbow, MojoPortal, Cuyahoga, and others.

It ends up that we settled on -- gasp -- DotNetNuke! I looked at DotNetNuke a couple of years ago and besides my acquired aversion to anything not written in C#, it just looked like there was "too much baggage".

However, the current release (4.8) is very smooth, and I hasten to add that if you look at the project properties, Shaun Walker has Option Explicit and Option Strict both set to "on" - a very good sign. But the things we liked the most:

1) It installs very easily. Basically, if you create a SQL Server database and update the connection string settings, and run the web project, the wizard gets you up and running in no time. And you get a real site with real content that you can start playing with, no B.S. -- and no excuses! The 4.8 source release built perfectly under Visual Studio 2008 with no missing files or errors.

2) It is very extensible. There is not only a big "skin" community of free and "for pay" XHTML - compliant CSS Web site skins, it is easy to learn to create your own. I looked at the one that Lee Sykes did of Andreas Viklund's "Andreas01" and once you peruse the component files it really isn't a big deal at all to do one on your own. Moreover, with the C# Template for Modules from "BiteTheBullet", you can start authoring custom modules pretty fast. This .vsi installer also works with Visual Studio 2008, and it gives you all the possible component files you need to write any kind of module. You can also go into the zip file that gets installed in your C:\Users\<username>\Documents\Visual Studio XXX\Templates\ProjectTemplates\Visual C# folder, and modify the contents, re-zip it, and overwrite the original zip if you know what you are doing. The C# template appears as a project type in "Add New Project". A module is basically a class library with one or more ASCX user controls, along with some metadata files, that can be installed into DNN via the Host or Admin control menu, and it can pretty much provide any kind of functionality you want - RSS, forums, news, whatever.

Holy Cow, Batman! Once I saw that I could write DNN Modules in C# and would never have to type that awful keyword "Dim" again, I felt -- well, relieved!

The whole DNN infrastructure runs on a provider model and once you "get it" you can do any kind of extensibility you want. But the main thing is that once you have DNN under your belt you can use it to provide custom editable web sites for just about any kind of client. You can give them page and functionality templates to choose from, and they can add whatever they need by themselves (after a short learning curve) without having to bother you or pay you extra money. I like that, because I really hate hand-holding; I like to do development. Once something is debugged, tested and delivered -- if I've done my job right -- I shouldn't ever have to hear from the client unless they have a new project for me.

DotNetNuke has a huge developer community and sports some very nifty caching and other options that have been added in the 4.XX versions that speed it up and make it a much better performer than the old DNN that I looked at a couple of years ago. Recommended. Also, the "My Web Pages Starter Kit" mentioned by oarfish in the comments is a good (and much simpler) alternative.