We present a collaborative and iterative software development framework, with the goal of achieving a balance between top-down and agile approaches. This approach is largely based on scalable projects such as GNU and LLVM, which have achieved a high level of success with distributed development teams working on highly complex compiler-based infrastructures.
|Agile approaches favor||Balanced approach||Top-down approaches favor|
|Individuals and interactions||↔||Processes and tools|
|Working software||↔||Comprehensive documentation|
|Customer collaboration||↔||Contract negotiation|
|Responding to change||↔||Following a plan|
Each product has its features and bug-fixes divided into versions. These are tracked in bugzilla across multiple products and releases. This provides unified management and chronology through Evaluation, Design, Development, Implementation, and Testing.
A release is defined by the expected stability of a particular iteration:
As the development process iterates during alpha and beta testing, each iteration is given a unique revision by the subversion repository. These revisions are fixed snapshots that can’t be altered, so it’s always possible to look back and see exactly what has changed between any two revisions.
Like other Agile approaches, this framework emphasizes test driven development, where the goal is to automate as much of the testing process as possible.
The natural corollary to testing is a bug reporting system, which bugzilla provides in addition to tracking feature requests.