BaBar Software Support ====================== BaBar software releases [0] are fully supported on a limited number of platforms [1]. "Fully supported" here means that the releases - include binary libraries and executables - have been tested on the specified platforms The primary requirement for a platform to be included in the supported list is that inclusion produces a net gain for the collaboration, weighing the support load against the increased ability of collaborators to contribute to the central software effort. Inclusion (or re-inclusion) of a platform must be approved by the release coordinator and the computing management and may be dependent upon provision of support effort. As stated elsewhere [2], by default collaborators are granted write access to the BaBar central CVS repository. To enable BaBar to maintain the quality of software on supported systems some restrictions must be imposed upon all software contributed to the central CVS repository. By definition, code committed to the central repository is public BaBar code. It is assumed that any code contributed to this repository is of high quality, has been fully tested and is capable of running on all supported platforms, and will be supported by the author(s). Promotion of CVS modules to BaBar "Package"s, for inclusion in software releases, is performed by the release coordinator. This promotion will depend upon the suitability and stability of the package (determined by the release coordinator and computing system management) and the appointment of a "package coordinator" to take responsibility for the package (including the CVS module). Tagged releases of individual packages MUST be fully tested on at least two supported platforms. Modifications to the central software must also meet the following requirements : - Modifications to source code must conform to either a) the ANSI FORTRAN-77 standard [3] b) the subset of the draft ANSI C++ standard which is implemented by the GNU C++ compiler (version defined in [1]) - The restricted (in F77) use of preprocessor directives is allowed to enable platform specific details to be handled. However, this only applies to "supported platforms". - Due to the significant testing and support burden that they bring, modifications to makefiles or other code to enable software to run on an unsupported system are NOT permitted. The last point can be taken as a working definition of whether or not your system is a "supported system". If you need to edit the makefiles to make something work on your own system (which is different from one of the reference platforms) then your system is not a supported system and you can not commit these changes. Collaborators are free to use BaBar software on whichever platforms they choose and facilities exist in the standard releases to enable local requirements/modifications to be handled. (The ability to locally configure the BaBar software releases to use non-supported systems will itself be a supported feature whereever possible). Local modification of this nature will not be included in the central repository (until such time as the system in question becomes a supported system). Signed: Gerry Abrams Robert Jacobsen Neil Geddes Thomas Glanzman Frank Porter David Quarrie Torre Wenaus [0] This refers specifically to software managed under the official BaBar Software Release System (SRT). Other BaBar code, notably for the online system, may exist outside this system where there is no requirement that this code be available on all supported platforms. Such code should still be managed and made available to the collaboration via the central CVS repository . [1] The definition of a "platform" here is taken to mean a combination of Underlying hardware + Operating system + Compiler/linker + other required software (gmake, tcl, g++ ...). At the time of writing the supported platforms are based on HP-UX A.09.03 DEC OSF/1 V3.2A revision 17 AIX 3.2 The reference g++ compiler version is 2.6.3, changing to 2.7.2 shortly. See the computing Administration web page (http://www.slac.stanford.edu/BFROOT/doc/www/CompAdmin.html) for a full definition of the currently supported platforms and details of reference machines to be used for testing purposes. [2] BaBar Computing Policy: Access to CVS code repository. http://www.slac.stanford.edu/BFROOT/Computing/Admin/codeAccessPolicy [3] Certain extensions to this standard have been allowed in specific cases to help smooth our transition to OO. These extensions should not be generally used.