The below policy is a revised document from the initial policy instated in STAR at the beginning of its software development phase in February 2000.
Four canonical versions of the STAR software are provided at any given time. Those are dev, new, pro, and old. These canonical versions evolve in time i.e. it is understood that the content of (for example) new today is not fixed and likely to be different within some time frame (and following the above release policy and procedure). Two additional areas are described for completeness but are NOT canonical in the sens that their usage and meaning may evolve without prior warning nor discussion. Purpose and policy for each version is described below.
The official STAR software releases are otherwise named SLXXY where XX is a year number and Y is a letter from a to z. Those releases are fixed (and should not be changed or patched unless exceptional circumstances not described in this policy - patch should be in those cases rare and under a strict control and validation procedure).
There are no other official areas than the one mentioned herein. Please, consult the table below for additional information.
The supported STAR software platforms, October 2017:
Previous support from summer 2015:
Past support before 2015:
The supported STAR software platform as per 2009/2011 were:
While multi-platform and/or multi-compiler impose a constraint on the developer, the procedure ensures portability and easier evolution to later version of the compiler. Time given in the library definitions section are in EST time, i.e. they correspond to the Tier0 (BNL) site local times.
Note: Infrastructure developers are mandated to work from private areas and not directly from a deployed canonical version (unless otherwise mentioned). However, full testing of a given engineered solution, ready to be deployed, may require a full library re-compilation. Whenever needed, this shall not occur without approval, advanced notice and Email announcement by the software librarian.
Version |
|
Usage and scope |
Leading edge development versions, for core software developers only |
Guarantees |
While we appreciate feedback, there are absolutely no functional guarantees (compilation or runtime) for those areas. If you chose to work with this area, it is at your own risk. |
Description |
Changes to code by the core software group do not go directly into dev, but into one of .dev or adev within the following restrictions/scope: |
Patching Policy |
N/A in .dev |
Release Policy |
For adev, code must compile on the primary and secondary platforms. At the end of the first and third week of each month (on Thursdays and whenever applicable), major changes to .dev may be checked in CVS and consequently propagate into dev by the next day. These commits should be made only after successful testing of .dev . The new dev environment is tested against code developers activities for the following week allowing for subtle adjustments not initially envisioned. |
Version |
|
Usage and scope |
Version containing the latest developments of code modules in the repository. |
Guarantees |
This environment was released upon successful compilation of approved code on the main supported production platform and compiler in both optimized and non-optimized. There are no compilation guarantees for other compiler/platforms. |
Description |
Although code is this area are likely to be buggy (or at least, not fully tested), they contain the latest algorithms and structures being worked on by the user and sub-system developers. Submission of code to the repository is frequent (daily). An effort to exclude major technical problems must be made by developers, but it is understood that behavior of code can not be all guaranteed. However, all code checked in by developers should be tested for basic operation prior to check-in in CVS that is, Note: The following schedule is used for updates to dev: it is updated automatically by the AutoBuild script starting from the adev area and the procedure will start daily at 11 PM. This procedure do not send any Email notice automatically. It will however execute the following steps: Functionality tests of dev are made every night by running a small number of events (~ 50) through the most common full production chains and detector geometries on the primary environment. Several data output format will be provided (supported data-summary-tape format, histograms, Micro-DST and/or other supported formats, ...) for both real and simulated data and span over a range of data source (centrality, species, etc ...). Such provision may be based on the result of the nightly tests, test suite made at Tier0 and Tier1 sites as achievable. Those tests are targeted toward eliminating gross errors, possible remaining crashes, obvious memory leaks etc ... |
Patching Policy |
Bugs will be reported by the QA or Software Librarian to the software code/ component/ sub-system responsible person. The given component should be fixed within a week as well as within development guidelines specified above. |
Release Policy |
On the second and forth week of each month (on Thursdays and whenever applicable), dev is tested with a larger (and more complete) test suite over the week-end. The test suite would remain the same apart from the statistics (at least 200/500 events). Basic test should be successfully run on the secondary platform. Shall all tests perform according to expectations, the content of dev is a candidate for propagation and re-build of new. Thus, under normal circumstances, dev is moved to new on a bi-weekly basis. Note that there are no mention of tagging at this stage although it may be more practical to use this mechanism for code propagation. The migration of dev to new should be discussed at the Software and Computing meeting on Wednesday and requires positive approval from the Software Librarian and the QA/QC team (validation tests must pass). Shall it be approved, the migration may proceed the following day. |
Version |
|
Usage and scope |
A relatively stable (weeks old) version for full integration testing, detailed QA, and public use by people needing a near leading edge version of the code. |
Guarantees |
Code compiles on at least two platforms and/or compiler versions and has passed basic nightly tests QA criteria. |
Description |
A new version is released to allow further tests in a relatively stable and QA-ed environment. More developed QA procedures may include a desired set of on-going user analysis and sample productions. |
Patching Policy |
Identified bugs and engineering of a solution addressing a given problem may be using the new environment for stability purposes. In such case: |
Release Policy |
Within the next two weeks period (as driven by the migration dev to new), this area may (or may not) be migrated to pro as follow: Shall the tests not be successful or satisfactory (unexpected results from QA), either a patch will be engineered or the new version will be replaced at the next scheduled migration of dev to new. Therefore, new changes on a more rapid cycle than the pro version, so any given new version may or may not make it to pro. A version that is not migrated to pro will be kept for a short period of time (of the order of a week) to allow people to migrate away from it on their own schedule. During this period it can be used via % If the bug fixes are successful an official tag is generated for the release. If not, a tag does not have to be generated until the next dev to new release, as long as this will happen within the next two weeks. If production have been run from the release, it must be tagged for reproducibility. |
Version |
|
Usage and scope |
The current production version |
Guarantees |
All components of the software are tagged and frozen for a production release, so that the release uniquely defines a stable, reproducible configuration. |
Description |
This level is a tagged and QA-ed version of the software library. It is used by production. The pro version is created from the latest new version at the time of the release. |
Patching Policy |
Whenever production has started, the only changes to a pro release will be to fix important bugs that impair functionality supposed to work in the release. Such fixes will be announced, discussed, documented immediately and scheduled with advance notice. Such fixes must be exceptional (and typically related to a critical component such as IO) as Physics content must identified prior to this stage. Should a grave Physics issue be identified, a new pro version should be released from new (see next paragraph). A new migration from new to pro is preferable to a retag of pro. However, shall the CVS retag be necessary (such case may arise if new contains code functionally incompatible with pro), the corrected versions will be identified by adding "_n" to the version number (e.g. SL04a_1 for the first corrected version). “n” will be an incremental number depending on the previous patch level. The tags and sub-sequent related tags will be clearly documented. All code (functional and patched) will be re-tagged with the XXX_n level tag, thus, leading to a consistent bulk CVS tagged library version. A patch made in pro must be applied to the dev and new versions (same compatible patch or modified for the more recent environment to correct the targeted problem). All corrections to pro version should also be applied to the current dev,new versions in an appropriate way. Modifications will never be made to a production release to add new functionality, change base code (ROOT or base classes) or fix functionality not yet operational when the release was made. If users want to have access to new functionality that has arrived since the release, they either need to use a newer version (new, dev) or wait for a new pro release containing the functionality. Shall the procedure for QA procedure mention for the release of new be used for the migration new to pro, production cycle should not be restarted but a new later release of pro scheduled. Production would then resume from the new release, created following the same new to pro release policy. |
Release Policy |
When a pro version is retired, becomes the old version. |
Proposed change |
“any change to the production code should be reflected in the library tag” |
Version |
|
Usage and scope |
The previous successful production release. |
Guarantees |
All quality checks mandated by pro. |
Description |
Previous old versions can be retrieved by the CVS tag. Old versions are not supported any longer (there are no bug fixes applied) but are preserved and retrievable by the software librarian. Production level sub-system code or core software infrastructure developments should NOT be done with any old version of the library |
Patching Policy |
Patches are NOT allowed at this level |
Release Policy |
There are no existing canonical releases beyond that level |