## TripleA Release Model

### Introduction:

This document is intended for developers. This document will go over the three types of releases: CVS, Unstable, and Stable. It will also discuss the numbering system of the packages and how they play a role in the development process. We also take into account issues that need to be dealt with while developing TripleA using this release model. Certain issues such as whitebox testing by developers and blackbox testing by the end user, adding new features, user requests of new features, and many more which will be addressed in this document.

### TripleA Release Model:

> CVS ---> Unstable ---> Stable ---> Future Requirements ---> CVS ...etc

The release model follows a spiral pattern. This spiral pattern allows TripleA to be worked on in several stages, thus being the CVS, Unstable, and Stable stage. A spiral pattern is imperative to any form of development, this type of model ensures the software will be developed, tested, released, and improved over time.

### CVS:

The CVS is meant to be used by developers only. Of course it is not strictly restricted to developers only, anyone can check out a fresh copy of the CVS and run it, but it should be considered highly unstable. The CVS is where the bulk of the coding will take place, this is basically the experimental developing grounds where new features are coded. Below are a list of issues that we exepect from a CVS build at this stage:

> 1: Expected to contain freshly developed features that may not exists in other builds.
> 2: Expect high instability, program crashes, bugs, and run-time errors.
> 3: Expect new builds of the CVS almost nightly.
> 4: Should not be compile broken. The CVS must compile without errors.
> 5: Testing grounds for the design and implementation of new features.

CVS will not be released as a package and placed on the main download site. Users can obtain a copy of the CVS anonymously through sourceforge. Instructions for anonymous CVS access for non-developers can be found here.

### Unstable:

Once certain requirements are made and implemented into the CVS, it is ready for testing. An Unstable build is released with a numbering system that portrays its version number and its release number. The version number indicates if new features have been added since the last release of the build. The release number indicates that no new features were added but various bug fixes were made. Examples are listed below:

TripleA Unstable 1 . 0

> 1: First string is the name of the project: "TripleA"
> 2: Second string indicates what type of build it is: "Unstable"
> 3: Third is a number separated by one decimal.
> 3.1: The first number is the version number.
> 3.2: The second number is the release number.
> 4: An example file name would be "TripleA_Unstable_2.4.zip"

The unstable build is packaged and released in order to test the newly implemented features that have been added during the CVS stage. This build is intended for use by developers and the end user. The purpose of a testing build is to increase the speed of error detection and possible bug fixes. Due to the nature of OpenSource projects, developers cannot devote 100% of their efforts on this project due to lack of funds and other social constraints (ie. other jobs, families...etc).

This stage allows the community of users to test the new build and perform blackbox testing. They are expected to test the new features of the software out and report bugs if any should occur. Users are also encouraged to go a bit further and look into the source code to see if they can offer a bug fix or a suggestion for new implementation.

Developers (and programming knowledgable users) can perform whitebox testing where they look at the source code of newly implemented features and purposely try to cause the software to crash or behave unexpectidely. This helps to locate bugs and security holes from which blackbox testing may over look. As usefull as whitebox testing may be, blackbox testing helps find bugs in the over all useability of the software. Such things as bad user interface design, complex use of images/colors, confusing actions that hurt playability (ie. too many buttons, inproper implementation of mouse clicks, bad window behaviour ..etc).

Unstable builds can be re-released with bug fixes so that it can be tested again. Once a build has been in the testing stage for a solid duration of time that allows users to fully use all the features (ie. 2 weeks or more) then a summary report can be made that outlines the number of bugs found and the percentage of those bugs that have been fixed to those that could not be fixed but work-arounds have been made. After that it will be up to the project manager to discuss with the rest of the development team if a testing build is ready to be released as Stable.

### Stable:

A Stable release should indicate that the software is fully playable and the game can be played from start to finish without any program crashes or bugs that will yield undesirable side-effects. As this should hold true, life is not perfect. Stable builds are allowed to contain a minimal amount of bugs that will not harm game-play (ie. non-combat moves during combat stage, map abnormalities, anything that can be worked around).

Stable builds should go through a minimum of 2 weeks of testings as an "Unstable" package in order to weed out the obvious bugs.