|
Comments
|
Today's Top SOA Links
ASP.NET Managing an Open Source Project for DotNetNuke
A first-person perspective from idea to code complete
By: Chris Paterra
Dec. 26, 2005 04:00 PM
In December 2004 it was decided that DotNetNuke would break out its existing core modules into separate Projects so that they could be enhanced, released, and supported independently from the core Web Application Framework. It was further decided that some additional modules would also be added as official Projects to provide an increased level of richness to the platform. The first modules that we determined were going to be added were the TTT Forum and TTT Gallery, authored by Tam Tran Minh of TTT Corporation. I was already working closely with Tam on these modules, and I volunteered to co-lead the development of these Projects and to help morph them into modules that take full advantage of the DotNetNuke Web Application Framework.
Incubating a Third-Party Module Project Once this was completed the remaining changes were not so obvious. Prior to these Projects, no outside module was ever brought into the core, so there was no preexisting checklist for us to follow. Another challenge we faced is that none of the core modules that are currently available were as complex as either one of these. After several discussions with other core team members we formed a plan. This plan was to focus on a single module - the DNN Forums - and get it released first. This decision, as we would later find out, would also speed up the development of the DNN Gallery project because it gave us a checklist to follow. Now that we were focused on the DNN Forum project alone, we outlined what we knew had to be done prior to a release. The first item was to rename the custom class names that used a pattern not consistent with any of the core modules. At the time we thought it best to make use of the existing classes that were included in the default skins. We would later determine that because the module uses its own custom themes implementation, we should rename all classes to use a more standard ModuleName_ prefix to avoid conflicts with the preexisting classes. Once the renaming was completed, the next item on our list was to remove any dependencies the module had on third-party assemblies. The reason this had to be done was due to licensing. Even though the only dependency was on a freely available assembly, this assembly did not have the same BSD license that is distributed with the DotNetNuke Web Application Framework. This meant that if the authors of this assembly decided to change their license, which they could do at any time, we could be forced to remove a release that was available for download to avoid legal ramifications. This dependency was on an assembly that allowed the module to interact with newsgroups. Removing support for this was no easy task because it existed throughout the entire module. This process seemed to only take a few weeks, but we would later find out that some of the remnants were causing one of the major bugs at the time.
Preparing for a First Release With the project now underway for almost three months, I knew the community was getting anxious to see the first official subproject release. I knew there were bugs in the existing code, but with only two of us actively working on the module, we were having difficulty filling the roles of architect, developer, and the Q&A team. We were trying to stick to the original plan of releasing then forming a team, so we decided to release a beta and use the community as our Q&A team. Before we could release, we had to make sure that what we released is what people would expect from a DotNetNuke module. Among these expectations were the following:
After the First Release After making the module available for download, there was no shortage of feedback. During the first week or two the module was available I found myself spending roughly two hours a day in the forums and in the project's bug tracker answering support questions and logging bugs. Trying to keep up with the feedback and fix the issues logged was becoming increasingly difficult. One of the other things this release showed us was that most of the community was having a difficult time following and understanding the code. I don't think this was because the module was overly complex; rather, I feel it was because they had only been exposed to it for a very brief period of time. Our original goal was to start forming a project team now that we released, but with so many support issues I wasn't exactly sure where I would find the time. Working a full-time job and keeping up with other aspects of DotNetNuke, when was I going to form a team, teach them about the module, and manage them? After spending a bit of time debating what would be best for the project, it was decided to continue development of the module as we were before, and then form a team after a release came out that we felt was fairly stable. This ended up taking two more releases and three additional months. Looking back on this decision now I feel that we made the right choice because I think even with a project team we wouldn't have stabilized the module this quickly.
Forming a Team Reader Feedback: Page 1 of 1
Your Feedback
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
|
SYS-CON Featured Whitepapers
Most Read This Week |
||||||||||||||||||||||||||||||||||||||