I picked up the latest issue of MSDN magazine this evening and, as usual, opened it to the {End Bracket} column on the last page first. I like {End Bracket} because it usually contains an honest, focussed message from a random developer in the Microsoft development community. The title of the column this month, "You Should Learn SharePoint", caught my eye because not a day goes by without someone asking me whether they should choose DotNetNuke or SharePoint for their development project.
My standard answer to the above question is that each product has its own strengths and weaknesses; therefore, the only way to make an educated decision is to identify and carefully weigh all of criteria for your specific project. Once all the criteria has been documented, the next step is to determine which product better meets your requirements. But this is not always an easy task since the marketing machine at Microsoft does a far better job at selling the conceptual aspects of SharePoint than we do at explaining the tangible business benefits of DotNetNuke.
So getting back to {End Bracket}, I found the '5 good reasons" for Developers to learn SharePoint rather interesting. The reason I found it interesting is because I personally feel that one of SharePoint's main strengths is that it has been designed from the ground-up as a great tool for administrators and content editors - not for Developers. The most recent version of SharePoint has attempted to knock down some of these barriers, but it still comes up far short in my honest opinion as a productive developer platform.
So lets look at the specifics from the article...
1. You will find that many things that aren't built into ASP.NET are built into SharePoint out of the box. Ditto for DotNetNuke. In fact, I would go farther to say that many of the features which you have to pay for in SharePoint, are provided for free in DotNetNuke as a base part of the open source framework.
2. SharePoint provides a framework for reusable user interface components. So does DotNetNuke. In fact the development, packaging, and deployment aspect of DotNetNuke's user interface components ( Modules ) is far superior to SharePoint. The fact that a site administrator can install new functionality into their web site at run-time by simply uploading a single ZIP file is a huge benefit. Everytime I demonstrate this functionality to a SharePoint administrator, their jaw hits the floor as they gasp "are you serious - it's that easy?!"
3. Microsoft Office SharePoint Server (MOSS) contains a search engine that can be used to index and find information in your application. Oh, but that's not free - MOSS is only available through the Microsoft Volume licensing program. DotNetNuke has a search engine as part of the free, open source framework and it is extensible, allowing a number of third party vendors to provide more advanced implementations for enterprise scenarios.
4. SharePoint has document management. DotNetNuke has a limited document management capability including the ability to store documents securely on either the file system or in a database. And since DotNetNuke has an active developer ecosystem, there are a variety of third party plug-in modules which provide enterprise document management capabilities.
5. SharePoint supports workflows. This is definitely an area where SharePoint has an advantage as with Windows Workflow Foundation, developers can create and modify workflows using intuitive designers in their IDE. Of course in order to get this you need to be running the .NET Framework 3.0, which may be a tough requirement for some customers. DotNetNuke has focussed on delivering the most common workflows for web applications in the base product ( and did I mention it is free? ) with some more advanced workflows such as content versioning and approval coming in our next major release.
Continuing on with the article is where some of the "hurdles" of SharePoint are identified, and this is the area where DotNetNuke truly shines as the superior development platform.
Development Tools - its a fact that SharePoint developers must do their development on a Windows Server Operating System ( ie. Windows Server 2003 ). This is a significant barrier to entry and one that we chose to address back in 2005 with our DotNetNuke 4.0 release for ASP.NET 2.0. DotNetNuke developers now enjoy the freedom of developing on any Microsoft operating system. They also enjoy the freedom of developing in any flavor of Visual Studio including Visual Web Developer Express ( the free IDE provided by Microsoft ).
Cycle Time - In SharePoint you have limited options in terms of how to develop WebParts and as a result the amount of time between editing and testing code is longer. In DotNetNuke you have much more freedom and for the most part can continue to develop Modules using the exact same techniques you have used to develop and test traditional ASP.NET applications. If you want to create enterprise-grade server controls with highly abstracted layers, you can. However if you want to slap together some RAD user controls for prototyping, you can do this as well. DotNetNuke does not impose any restrictions on development methodology.
Everything and the Kitchen Sink - Although the most recent of SharePoint has shed some of its legacy baggage, it still contains more than its share of complexity for developers to come up to speed on before becoming productive. DotNetNuke also has some concepts which may initially be foreign to new developers, but can be assimilated very easily since the product is open source, providing you with complete access to all source code for the ultimate educational benefit.
Agility - I am adding this item because I think it is highly relevant to anyone making large scale technology decisions. Because of the fact that SharePoint is part of the massive Microsoft Office group of products, means that its release cycle is going to be relatively lengthy. Compare this to the frequest release cycles of DotNetNuke and you will see that we are capable of bringing new features to market much faster than SharePoint. For example, we added integrated ASP.NET AJAX support to DotNetNuke immediately following its public release by Microsoft - SharePoint still has no integrated solution. We plan to do something similar with IIS7, releasing a compatible version for DotNetNuke next month whereas SharePoint will have to wait an unknown amount of time.
Support - I am also adding this item because it represents the area with the most criticism for DotNetNuke in the past. Obviously SharePoint is a commercially licensed product which means that Microsoft must provide its usual support services to customers. On the other hand, DotNetNuke has always enjoyed the benefit of being open source and having a vibrant volunteer community support system behind it. However, this type of support model is not always acceptable, especially for enterprise-level users. Some businesses require the greater assurance which comes with more traditional support offerings. This is the reason why DotNetNuke Corporation is now offering Service Level Agreements ( SLAs ) though its paid subscription program.
Regardless of the sometimes questionable marketing propaganda around SharePoint, one thing that I am certain of is that Microsoft did a great service to DotNetNuke by publicly saying that the web platform mattered to them. And not just the web platform in general, as ASP.NET does a great job in this area, but the business web platform, collaboration, and content management. Much of these tools had been taken for granted in the past, but with Microsoft's renewed focus, they have become all the more relevant and valuable to organizations of all sizes. This has been great for DotNetNuke, and is reflected in our strong growth - recently surpassing 500,000 registered users and 4.0 million downloads all-time.