Software Release Policies

From SCECpedia
Jump to navigationJump to search

The SCEC software engineering group has established standard practices for releasing new versions of our publicly distributed scientific software. These practices are based on "best practices" for scientific software development established on SCEC's CSEP project and on SCEC's UseIT SCEC-VDO project.

Every SCEC/CME project that releases SCEC-developed and SCEC-supported software to the community is expected to provide the following materials before the software is released, unless there is a good reason not to follow these guidelines. Before the SCEC/CME software development group distributes a new version of software, every software project must have the following items:

  1. A public SCECpedia entry that provides an overview of the software project, the capabilities of the software, and a software release history.
  2. Software development information for the project including design overview, data sources, algorithms used, software language, development environment, run-time environment, and required software stack.
  3. Copyright statement included in distribution.
  4. Source code under version control.
  5. Automated make capability using standard software distribution tools such as configure, make file, and ant scripts.
  6. Issue tracking system (such as TRAC) site with a trouble ticket system and a connection to source code under version control.
  7. Automated suite of unit tests designed to verify the software was compiled correctly and is functional.
  8. Automated suite of user-oriented acceptance tests typically-based on reference inputs and outputs compared to calculated results to show the software is installed correct and is operating in the users computer environment the way it operated in the development environment.
  9. Automated build and test capability (such as Cruise Control) which will run the acceptance tests without manual interactions.
  10. Release Version assigned using CSEP version format of Yr.Mo.x (e.g. v10.8.0 as Year.Month.RevisionNumber) with tags in version control system.
  11. A persistent, dated, and maintained, web-based Software Project home page that provides, at a minimum, an overview of the software project, links to software download, and the current release version.
  12. Capability to track software downloads including at a minimum number of downloads
  13. Software download tracking capabilities
  14. Release Notes, as wiki and pdf, containing the following information:
    1. Software name (or system name) and description of purpose of software
    2. Link to public web page describing project
    3. Description of software capabilities
    4. Description of intended users
    5. Limitations or known bugs
    6. Version of current release
    7. Overview of changes including new capabilities of current release
    8. Software support email list
    9. Contact for Responsible scientists
    10. Contact for Responsible Software Engineer
    11. How to report software problem or request features
  15. User documentation, as wiki and pdf, including:
    1. Computer User Guide to installing, building, verifying, and operating software
    2. Scientific User Guide to using software, running reference problem, and interpreting results