Blazing the Open Source Trail
DotNetNuke's CEO Shaun Walker hooked up with VSM's editor in chief Patrick Meader to discuss the formation of DotNetNuke, the project's core features, and what's next for the open source ASP.NET-based Web application framework.
Visual Studio Magazine: Tell us what DotNetNuke is and how it came about please.
Shaun Walker: DotNetNuke is a Web application framework for the ASP.NET platform. Its roots trace back to the beginnings of the .NET framework, when Microsoft released a beta for developers to experiment with. Around this same time, Microsoft released a sample application called the IBuySpy portal, which eventually became the basis of DotNetNuke. Several developers, including me, enhanced IBuySpy significantly over time. After a couple years of working independently on that code base, I made the decision to go open source, and I invited other members of the community to get involved. It has grown substantially from there.
VSM: It's a bit of a leap to run with a demo app and turn it into an open source framework. Can you fill us in how that transition happened and your inspiration for doing so?
SW: Like many other people who were trying to learn the new .NET Framework and hone their skills on the new MS platform, I grabbed sample applications. One of those sample applications was the IBuySpy portal. There were many people who were making enhancements to that code base, but there wasn't a single entity that was responsible for integrating changes back into one main branch of code.
There was also a dedicated forum on the www.asp.net Web site, the purpose of which was to field questions and foment discussion about ASP.NET, including the sample application. I participated in discussions about the app with many other people on the site. At some point, I realized it would be a good idea if many of these enhancements were integrated into one living version of the code, and that became a new version, which was eventually dubbed DotNetNuke.
The .NET framework was a whole new development model, and it was much easier to get up to speed on an existing code base than it was to start completely from scratch. The folks from Microsoft had put together a very simplistic application, but at least it demonstrated some of the basic techniques for building an application in .NET. It just seemed like a good place to start. That original application was very simple, but I think many of us saw the future potential of the app in terms of its extensibility.
VSM: What license is DOTNETNUKE covered by?
SW: It's licensed under the BSD open source license. BSD and MIT open source licenses are very similar. They allow full freedom in terms of what you can do with the source code. BSD differs from other open source licenses like GPL in one significant respect. GPL has a viral component to it, where any derivative works of a GPL project must also be GPL, and BSD doesn't have that restriction. Without that restriction, both commercial and non-commercial organizations can use the code base, and derivative works don't have to be GPL. They can be proprietary and be carried on as other products.
VSM: How does this differ from the original IBuySpy license?
SW: The original IBuySpy license was a EULA from Microsoft with very liberal terms, as well. It basically allowed you to do anything you wanted to do with the sample source code, but didn't provide any support or anything. In that respect, it was very similar to the BSD license.
VSM: Who is your target customer for this project?
SW: There are multiple target customers. Web application developers use it as a basis for building Web applications. Administrators and knowledge workers use it as a basis for maintaining Web sites. IT has a fully functional content management system that is part of the application. Web hosters use the app to enable customers to maintain their own Web sites within their infrastructure. There are many stakeholder groups that use the app for different purposes.
VSM: Do you have official numbers on how many people have downloaded the core package?
SW: We require everyone who downloads the project to register to use it. The number of registered users who have downloaded the project is 400,000 users. In terms of downloads, we use sourceforge.net to manage our mirrored download system, and we're pushing 2.5 million downloads over the course of the project.
VSM: Does this number include only the core package, or the add-ons available for DotNetNuke as well?
SW: That includes the core project and the add-ons, which are packaged and distributed as independent projects.
VSM: How many people actively contribute to DotNetNuke?
SW: We have a core team of developers, which is about 30-35 members at this point. This number has increased over the years as new developers have been added to the team.
VSM: How do you become a contributing member, if so interested?
SW: This occurs mainly through being recognized for your participation in the DotNetNuke community. We have an active forum on the DotNetNuke Web site, and over time people who participate in the forum by providing guidance, answering questions, and offering code samples will get recognized. If their work is deemed to be valuable to the project, at some point they get invited to be a member of the core team. Generally, they begin as a member of one of the project teams, which initiates them into the open source management structure of the project. If all goes well and they're still interested in participating beyond that, they will get an invite into the core project.
VSM: Can you give me a sense of the core project's size?
SW: I haven't done a recent count on the number of lines of code in the project, but the project is well architected and is broken down into many subsystems. We have different members of the core team that are responsible for different areas of the application. As an example, we have a search service, friendly URLs, and those sorts of things. Different services would have members of our team that are responsible for their ongoing maintenance and enhancement.
VSM: Can you describe the various flavors of the core project and what they consist of?
SW: We have four different packages that we distribute. The starter kit package is designed for Web developers who use Microsoft tools such as Visual Web Developer or Visual Studio. We have an install package that is for people who just want to get an instance of DotNetNuke up and running, and they intend to use it from an end-user perspective. We have an upgrade package that is designed with just the runtime components as well. This is intended to help you upgrade from one version of the project to the next. There is also a source code package, which includes all the source code for the core application.
In terms of services, the application provides the basic plumbing for any Web application. This means it gives you plumbing for membership, permissions and role management, profile management, and so on. It also has a comprehensive portal framework that allows you to create an unlimited number of pages and an unlimited number of modules that are basically mini-applications for managing content under those pages. It has a file and folder system for the Web, complete with a file manager that allows you to upload files to your Web server and manage them in folders. It also applies security to those folders, where some can be secured, while others can be available to anonymous users.
VSM: You've just released version 4.4. What is significant about this release?
SW: 4.4 is the result of four to five months of performance and scalability testing. Microsoft provided some guidance in this area by providing access to testing resources and a lab at their offices in Redmond. So we were able to load test the application and identify potential bottlenecks and optimize the code base. That was the most intense performance exercise the app has ever gone through. As a result, 4.4 is the most optimized version of DotNetNuke that we've yet released.
VSM: You'll be releasing 4.5 soon. What's new that developers should be excited about?
SW: Version 4.5 should be available in mid-March. One cool new feature is a Web-based installer. When someone installs a version of the application, he or she can walk through a series of wizards in his or her Web browser and enter configuration info for setting up the application. In the past, this wasn't a simple exercise, and it involved opening configuration files and learning a little bit about how the application is configured to get it installed. The Web based installer provides a lot of guidance and enables people to configure the application in a smoother, more interactive manner.
Another feature we've added for version 4.5 is user-level permissions. This is a feature that has been requested for some time. In most .NET Web applications, there is this concept of role-based security where users can be grouped into a role, and the role can be assigned specific permissions within the application. This permission model works well in most cases, but it doesn't work so well in scenarios that require more granular security. For example, assume you want to build a site that allows a specific user to edit content on a specific page. In such a case, you have to assign a role specific to that user, and assign that rule to that page. This is a process that can quickly become cumbersome. So we've added the concept of user-level permissions, where you can assign user-level permissions to any object in the DotNetNuke framework.
VSM: What are your plans for DotNetNuke in the future?
SW: The membership and download numbers continue to grow at a furious rate, so there remains demand for an application of this general type. DotNetNuke was managed by my personal consulting company for a long time, Professional Motion Interactive Systems. In September 2006, we created a new legal entity, the DotNetNuke Corporation, which is a US company. We've transferred all of the DotNetNuke intellectual property to that company and the responsibility of that company is to manage the ongoing needs of that company in a more focused manner.
VSM: What is your business model for this new company?
SW: We provide services around the DotNetNuke application. One of the most important things we do is host a marketplace for third-party add-ons for the framework. The extensibility model of the DotNetNuke application enables third-party developers to create add-ons or plug-ins for the application. This has been going on for the last two to three years. What we provide on our site is a consolidated reseller channel where developers can list their products, and consumers can find these products and purchase them with a high degree of confidence.
VSM: And does DotNetNuke certify these third-party plug-ins?
SW: Yes. We have a certification process that works in conjunction with the marketplace. At this time, we allow only certified products to be listed in the DotNetNuke marketplace.
VSM: And is there a specific process that people should explore if they want to be involved with that?
SW: Yes. On the DotNetNuke site, there is an area where you can learn how to submit your modules or skins for certification. There are also documents you can download that provide prescriptive guidance about the criteria we use to test submitted apps. One of the cool parts about this program is that we can help developers who don't have a significant marketing budget get their efforts in front of other developers. You can wrap your components to make them compatible with the DotNetNuke architecture, and then make them for sale with the DotNetNuke community.
VSM: Does DotNetNuke provide any of its own commercial add-ons for the core project?
SW: The DotNetNuke core application will always remain free and open source. At this point, we're not creating any commercial add-ons for the product. We're interested only in providing commercial services around the project. In 2007, we plan to offer service-level agreements for the project, paid support, and consulting services. We'll also continue to improve the marketplace for the plug-ins and the increase the visibility of the partners who create those plug-ins.
VSM: Microsoft is not known for making its own products open source, but it does support a number of open source Web portals. What kind of support and encouragement have you received from Microsoft?
SW: Microsoft has been a good business partner for us in terms of providing visibility for the project. Very early, Microsoft realized there was a community developing around the DotNetNuke project, and it offered to provide us with marketing and visibility through a lot of their channels. For example, we have a lot of prominent links on MSDN and its ASP.NET Web site.
When it came to new features that Microsoft was interested in releasing to the general marketplace in .NET 2.0 Framework, Microsoft came to us with a couple of those, so we could implement them in our solution. This enabled developers who would use them to get accustomed to them before the release of the Framework 2.0 itself.
VSM: You mentioned getting time in the lab at Microsoft for DotNetNuke? What was that like, and how did it come about?
SW: I wasn't able to spend any time there, personally, but one of our developers spent a week there. It was an educational exercise for him and the project. Performance testing resources are scarce within Microsoft, and it doesn't typically provide access to them for third parties, so we were lucky to get access to both the lab and the testing resources.
It came about from our participation in the shared-hosting program. DotNetNuke is one of several applications available to hosting companies as Web starter apps for Windows. These are applications Web hosting companies can provide to their clients to provide a richer hosting experience for their clients. For DotNetNuke to be used in that environment, it needed to be load tested under the specific constraints that shared hosting providers work under. So, in that environment, hosting providers try to put as many Web sites as they can on a single server. They want to maximize the density of the server and generate as much revenue as they can from the hardware. In that specific environment, we had to ensure that DotNetNuke wasn't consuming too many server resources in each instance, thereby limiting the number of sites that could be installed on a given server.
To increase DotNetNuke's use through the Web site hosting program, Microsoft offered DotNetNuke the chance to work with its people in the lab to optimize the performance of the application.