POOL release procedure

CVS commit of a component.
The official component releases which may be canditates for a pool internal or public release
 have to be clearly distinguished:
Official release:
   Tags should have the format:
                          ComponentName-x-y-z
   where x, y, and z are positive integers which are incremented monotonically according to the rules:
     x : There is a change of the component or external package dependency list affecting the component.
     y : There is a change in the public interfaces (i.e. whatever exists into the pool directory), or any change in the private part of the        component  which affects the semantics of the public interfaces.
     z : There is a change in the private part of the component (i.e. whatever exists in the src directory) not affecting the semantics of the public interfaces.
   The corresponding version of the package is x.y.z
Private release:
Use no tag/private tag. Private tag are left free, taking care to avoid clashes with official tags above defined (reserved: vNVersion, poolNVersion - both upper and lower case). CVS versions with no tag or with unofficial tag are not supposed to be used by anybody else than the developer creating them.
As a general rule, change or remove a tag should be avoided.

Component release.
The committed version on CVS has to be tagged with an official tag, using the convention described above.
Each official release has to be announced by mail to the pool developer list, by specifying (*=mandatory):
 -* release tag
 -* version tags of the other components used (dependencies)
 -* a brief description of the changes
 -  any additional comment/information
Changes to each file should be described in the release.notes file in the doc/ folder.
The source of the component released is expected to use (e.g. to be tested against) the most recent official release of all the components that is depending on.

Pool release tagging.
A pool release is a particular (consistent) set of tagged releases of all components.
   The whole pool tree is tagged with the tag
                                                               pool-x-y-z
   where x, y, and z are positive integers which are incremented monotonically according to the rules:
     x : There is at least one component in the set which comes with a new tag with its x-field updated.
     y : There is at least one component in the set which comes with a new tag with its y-field updated.
     z : There is at least one component in the set which comes with a new tag with its z-field updated.
   During the testing phase the pool tree can be tagged with the format
                                                             pool_x-y-z_cand_i
   where i is a positive integer.

Pool release procedure.
A pool release consists of releasing a set of component tags
   which pass successfully the test procedure. A successfull set is retagged with a new pool global tag.

1) The test/release procedure starts with the submission for testing of one or more component tags. The submission is done by the
   component coordinator, notifying the testing manager of the new proposed tag. The submitted tag has updated code AND documentation.

2) A package with a change in its z-field is tested alone against the last global tag of pool. All its unit tests and the integration and system tests which are affected have to run successfully for the package to be accepted.

3) A package with a change in its y-field is tested as soon as all its dependent packages have been submitted as well. The set is tested against the last global tag of pool. All the components' unit tests and the integration and system tests which are affected have to run successfully for the package to be accepted.

4) A package with a change in its z-field is tested as soon as all the pool packages have submitted a new tag. The whole set of packages are tested together running all unit, integration and system tests.

5) Every time a package or a set of packages succeeds the tests a new glogal tag of pool is produced. If the new candidate version of pool is x.y.z then a series of global tags with the format: pool_x-y-z_cand_i is started. There is a central bookeeping file with the list of component versions for a given global tag which is updated before the actual global tagging. This file is used to assist in the building of the global tag.

7) After a pool_x-y-z_cand_i tag and before the final pool-x-y-z tag all the material related to pool (user/developer/process documentation)
   reflecting the status of the release are updated accordingly.

8) Distribution (i.e. builts in the public release areas) starts after the final tagging, and based on the final tag.

Changes on component interfaces.
By definition, component interfaces are the classes contained in the component pool/ folders (see POOL CVS structure). Since changes can concern other components, they should be previously discussed (in meeting or on pool developer mailing list). Request for changes on the interfaces are expected only when it is really needed (pure 'esthetical' reasons are discouraged).
 
 
 
 
 
 
 
 


Contact: G. Govi