Version 5 (modified by benl, 7 years ago) (diff)


Release Process

Clear current issues

Ensure that all issues with the to-release version as their milestone are either fixed or have their milestone set to the next version.

Eliminate scar tissue

The codebase should not contain slabs of commented out code. Slabs of unused code need to be deleted, or moved to /icebox if there is a high chance we'll want it back.

Eliminate leftover traces

Grep the source for "Debug.Trace" and "trace". There shouldn't be any of these in the released version.

Link TODOs

Grep the source for TODO, FIXME, BROKEN etc and enter these into the trac as new issues. Change the TODOs to "Issue #NNN" to refer to the issue as entered on the trac.

Fix cabal files

Ensure that all modules are entered in the cabal files, and the packages build. Hide internal modules that we don't want to reveal in the public-facing API.


Build the complete documentation and ensure all functions and data structures are documented. Use the cabal haddock command to exercise the .cabal files.

Forbidden functions

Grep the source for forbidden functions. These all fail with an unhelpful error message and are banned from the DDC source tree. At some stage we should add an automated test for these.

head tail init fromJust (!!)

Add release notes to doc/release

Release notes should summarise the main changes since last release, and who worked on it, for posterity. We don't need a list of the issues fixed, as these are kept in the trac.

Build and check the source distros

Do cabal sdist for each of the packages, and then unpack and build the unpacked version. This should catch any modules that were part of the build but didn't make it into the cabal file.

Test on all platforms

Ensure DDC builds cleanly on all platforms.

Clean wiki

Go though all the wiki pages and ensure old stuff is deleted or updated.