As you all read the various project forums and look forward to new releases of your favorite modules, you have no doubt seen references to a 'release process' or 'release tracker' .. and I'm sure you've all wondered .. 'what the *&%$ is that?
A little history:
Back in July of 2006, after the modules had been split into their own projects, it became evident that we needed a formal release process in order to ensure high-quality releases of official DotNetNuke Projects. There are a lot of stakeholders in a DotNetNuke Project. There’s the Project Team, the Project Lead, the Project Chair ( a core team member who acts as mentor and liason between the project team and the core team ), and most importantly, the DotNetNuke Community as a whole. A documented, clearly defined release process was necessary to allow all of those stakeholders to not only understand the steps involved in releasing a Project, but be able to follow a release as it moves through the various stages of the process.
Prior to the definition of the process, the two biggest challenges facing project teams, was knowing what needed to be done, and who needed to do what in order to get a project released. Too often a module would be waiting for someone to perform some test or certification, and the person responsible for performing that task was unaware that a module was waiting for them to do something.
So, 'Process Definition' and 'Communication' were the two key objectives to making this a smooth, repeatable and efficient process. Without a defined process and good communications, releases are delayed, poor quality code is released and all of the stakeholders are left feeling frustrated.
The Release Process and the Tracker Module:
The first step was to define the sequence of 'states' that package must pass in order to be released, and for each state a list of 'exit criteria' that the package must pass in order to advance to the next state. Then for each state, a list of the people who were going to be responsible for evaulating each of those criteria was identified. Once the states, exit criteria and resources were defined, it was decided that the best way to manage this new process was a custom DotNetNuke module to handle the tracking and communications necessary. The module, called the 'DotNetNuke Release Tracker', allows project leads to submit project 'packages'. Once submitted, the module handles the notification issue by sending an email to all resources who are authorized to pass or fail exit criteria for a package in it's current state. The module then allows those resources to pass or fail each individual criteria. Once all criteria for a particular state are passed, then the module advances the package to the next state and sends out notification emails letting everyone know that the previous state was passed and the package is in a new state. This process continues until a package passes it's final state and is then released to the community.
The Tracker module allows people to see what modules have been submitted for release, where the module is in that process, which state it's in, which exit criteria have passed and which have not, who's responsible for evaluating that criteria ( so that if we see a module becoming stagnant, we know who to contact ) and we make sure that nothing falls through the cracks in releasing a new module to the community.
Coming soon to a portal near you:
Now that we have been using the Tracker module for some time and have worked out some early kinks, we are preparing to make the module public! That means that very soon, you will be able to view the tracker module on DotNetNuke.com, see which modules have been released into the process and how they're doing.
Here are a couple of screenshots of the tracker module. The first is the Tracker 'dashboard' which is a summary of all the modules that have been submitted and have not yet been released or failed. The two bar charts at the right show the progress through the 7 states of the DotNetNuke Release Process ( the Overall chart ), and the exit criteria in the current state ( the Current chart )
This second screen shot shows the package 'details'.There is a lot of information available, release notes for the module, test cases that will be executed, a history of the module since it's submission, and more. The tracker provides everything you'd need to know about a module as it moves through the process to a final release.
In addition, the module generates process metrics so we can track the performance of packages and see the time it takes a module to move from submission to release, as well as track package failures and the reason a package doesn't make it all the way through.
This was just an overview, and in future blogs, I'll go into more detail about the states/exit criteria that we've defined for the DotNetNuke Release Process, and I'll walk through the Tracker module itself to provide some insight into the module being used to manage this complicated process.
Stay tuned :)