E4S Community Policies
Version 1
E4S and its related product families are light-weight organizational elements intended to enhance collaboration and coordination across independently-developed products.
E4S Membership Criteria
The policies below are criteria for E4S membership. To qualify for E4S membership, a package must demonstrate compatibility with each of these policies. Under special circumstances, a package may be granted an exception to a policy.
| Number | Policy | Description |
|---|---|---|
| P1 | Spack-based Build and Installation | Each E4S member package supports a scriptable Spack build and installation in a way that is compatible with other E4S member packages. |
| P2 | Minimal Validation Testing | Each E4S member package has at least one test executable through the E4S validation test suite. |
| P3 | Sustainability | All E4S compatibility changes will be sustainable and part of the regular development and release versions of the package. |
| P4 | Documentation | Each E4S member package should have sufficient documentation to support installation and use. |
| P5 | Product Metadata | Each team will provide product information via metadata in the E4S Product Catalog format. |
| P6 | Public Repository | Each package will have a public repository (e.g., GitHub or Bitbucket). |
| P7 | Imported Software | Imported software must allow building/linking against outside copies to avoid conflicts. |
| P8 | Error Handling | Each package adopts a consistent error handling system, returning error codes or exceptions, and proper exit statuses for CLI tools. |
| P9 | Test Suite | Each package provides a test suite that does not require special privileges or commercial software. |
Future Revision E4S Community Policies
Policies under consideration for future versions (FP = future policy):
| Number | Policy | Description |
|---|---|---|
| FP1 | Portability | Portability across OS, compilers, architectures, accelerators. |
| FP2 | Flexible Test Selection | Flexible test selection support for subsets of tests. |
| FP3 | Dependency Version Tracking | Dependency version tracking via Spack. |
| FP4 | Memory Testing | Memory testing (e.g., Valgrind support). |
| FP5 | Comprehensive Test Suite | Comprehensive test suite for user-level validation. |
| FP6 | Documentation | Sufficient documentation to support installation, use, and development. |
Future Library Policies
FLP = future library policy
| Number | Policy | Description |
|---|---|---|
| FLP1 | Exception Handling | User-managed exception handling; no hardwired aborts or print statements. |
| FLP2 | I/O Control | User-managed I/O control with configurable outputs. |
| FLP3 | Namespacing | Proper namespacing of symbols, macros, and include files. |
| FLP4 | Memory Management | Memory leaks avoided by freeing all resources as soon as possible. |