Lets face it, trying to pick a Content Management System (CMS) can be difficult. Whether you’re a developer, business owner, or end user there are a lot choices out there. The fact is it takes a lot of time as an individual or organization to review and validate all the features.
The first rule to remember about choosing a CMS is that it may over market many of the features. They may simply not work the way you hope or envision.
A good way to tell a persons character is by the way they handle criticism or limitations; same principal can be applied here. Knowing what something can and can’t do will help you set expectations and estimate time and costs to achieve your goals.
I chose DotNetNuke to begin this series mainly because I truly believe it is best in class and my goal is not to bash it but to give you my honest perspective. Ultimately you will be the judge if any of the items in my constructive criticism are concerns for you and you can weigh them against the features that are offered.
What experience will tell you about DotNetNuke
DotNetNuke has put in a lot of work to fix the upgrade path issues at the core and make the framework solid from release to release. But the complexity of configurations and module vendors wishing to support the broadest range of versions leave the platform in a place where you’re mostly likely going to run into a given number of critical issues during upgrades.
An experienced DotNetNuke support engineer will make light work of these issues but note that it is often not a simple one click upgrade operation.
DotNetNuke is made up of a collection of modules each with their on ideas on how to do administration. This was born out of individuals that had visions of a better way to accomplish a task combined with a style guide that did not suit enough conditions. What you are left with is a set of mini administrations that each work differently within your website. What this turns into is additional training time and resources to document those differences.
Massive Data Scale
There are a number of bottlenecks that cause DotNetNuke to falter from either a performance or a UI usability stand point when it comes to adding a mass of data to any one of these areas. A few hundred to a thousand pages will cause a major performance degradation in administration during page loads; picking a single page out of a mass amount of pages in a standard html dropdown list is almost impossible. Same issue applies to files, folders, users, roles, permissions, and even modules.
This is not to say that DotNetNuke can’t handle the load, but it is worth mentioning it so as to give you a hint about what you should keep an eye out for.
DotNetNuke’s supported architecture for web farms consist of pointing multiple web heads at a single application directory stored on a file server. This approach lends itself to an obvious single point of failure as well as a bandwidth and disk IO bottleneck.
DotNetNuke does support the practice of scaling up your application which will improve overal performance. DotNetNuke relies heavily on caching at its core and will greatly improve by the amount of memory available to it.
Due to DotNetNuke’s on page administration, nearly all tasks need to be done page by page and worse module by module. This limits your ability to get a mile high view of your website and make changes at that level.
Some examples of this limitation would be:
- adding role permissions to pages or users.
- configuring module or page settings.
- viewing pending workflow operations or blog comments.
All of these actions must to be done on a module by module basis.
While there is the public Wiki, Forums, Blog, Community Exchange, user help or even the Core API Help (as seen here for version 7.0.3) available there is a lack of standardized web based documentation available to a developer. It lacks the jQuery, Sencha or WordPress, to name a few, style of detailed technical documentation that is consistent, in common language and highly searchable. At the end of the day if you can’t google it then it doesn’t exist.
Skin / Themes
While you can always hire someone to build you a skin exactly the way you want it; the DotNetNuke eco-system is not putting out as of rich skins for free or for purchase as its competitors.
I believe that a skin is not just what the site looks like but how it handles content. A lot of value can be had from a skin that includes a style guide for typography, layouts, dividers, icons, buttons, lists, alerts, modals and light-boxes. Content is more than just a block of text inside of a container.
DotNetNuke provides an extreme amount of functionality and value out of the box; coupled with the 3rd party extensions available in the DotNetNuke Store, Extension Forge, and open source communities like Codeplex and GitHub. However this amount of value comes at a cost of an elevated learning curve. Most idolizes the Apple iPhone as a sophisticated device but functionally simple. Just because it can do a lot does not mean it has to be difficult to use.
This complexity also manifests itself in bug fix turn around. DotNetNuke currently releases point versions (7.0.0, 7.0.1, etc) once a month. Currently with a backlog of 800+ items it may take 6 months to over a year for a bug you report to be resolved by DotNetNuke Corporation.
Despite all of these issues I still use and recommend DotNetNuke as a stable and constantly evolving product. Many of those issues will probably be diminished or completely irrelevant by next year. But knowing what you’re in for will prepare you on what needs done. And As my childhood taught me “Now you know and knowing is half the battle” – G.I. Joe
Ultimately what you should take away from this is hiring the right individual or consulting group who are aware of these issues will greatly improve your chance for success with DotNetNuke.
I strongly encourage the developers out there to dig into DotNetNuke source and lend a hand resolving these issues. If you’re a business owner or just want a louder voice when it comes to the direction of DotNetNuke then you should purchase a Professional Edition license and utilize the support channel.