I have identified 6 stages:

  1. Development
  2. Consolidation
  3. Testing
  4. Major Release
  5. Bug fixes
  6. Patch Release

"Development" is what we do for most of the time (ideally i.e. for 8 months of the year) and should include major changes to the suite (new libraries, major revisions of guis, porting to new platforms) by DL staff. The end of the this development stage should coincide with the deadline for changes from external sources.

"Consolidation" is where the externally contributed programs etc need to be brought into the suite, and loose ends for local developments need to be tied up. At this point no major developments should be started by DL staff.

"Testing" starts when we have a reasonable alpha version of the suite which can be released to limited test sites. At this point we have a code freeze for developments going into this release.

"Major release" occurs after testing is completed.

"Bug fixes" from users after the major release should be included as part of the release process. The first patch release completes the release project.


Past experience (4.2):


I think the reason this release stretched out so much was that development was not finished before the release project began. Resources were overcommitted and developments took longer to finish than anticipated. Although we had a plan this might have been more useful if we had started formulating it a lot earlier. We were probably also too optimistic about what we would be able to achieve in the timescale.

Once we had embarked on the release proper, and particularly towards the end, a big problem stemmed from the fact that external contributors didn't appreciate/respect our timescales, and contributions were submitted which often required substantial testing and patching. Whilst communication of the release status was good within the DL group, it was generally much poorer with other developers and this may have been part of the reason for the problem.

Another point is that as the release grew longer, development was stifled and people started to become impatient. Minimising the release time should be beneficial in cutting down on the lock-up of effort.


We should aim to minimise the amount of time from end of development to the point of the major release. Perhaps this should be a project objective? i.e. make release within x months.