Frequently Asked Questions
Please review the FAQs below. We encourage you to post issues or additional questions at xSDK issue tracker.
I am a developer of an HPC software package and would like to contribute this package to the xSDK. What steps should I take?
We consider two categories of xSDK packages: xSDK compatible packages and xSDK member packages. We also consider two levels of xSDK compatibility: required policies and recommended policies.
A package will be declared xSDK compatible once the xSDK team has determined that the package satisfies the required xSDK community policies. A template to record xSDK compatibility and the completed templates for the current xSDK libraries can be found at the xSDK compatibility website. When you believe that your package is xSDK compatible, file an issue at the xSDK issue tracker with a brief description of your software package’s functionality, pointer to the software website, and information about licensing. Similarly, a package can become an xSDK member package if (1) it is an xSDK-compatible package, and (2) it uses or can be used by another package in the xSDK, and the connecting interface is regularly tested for regressions.
Initially the requirements and process are informally presented; over time, if needed, we can begin to formalize them.
Are there any restrictions on the commercial use of xSDK packages?
As stated in the xSDK package community policies document, the following requirement is mandatory for xSDK packages:
M7. The package source code must come with an open source license, for example, one of the OSI listed licenses. It is required that all future xSDK packages be released with permissive BSD style licenses; and it is recommended that current packages, when possible, convert to permissive BSD style licenses. The GPL license is not acceptable, nor is any license (for example, the ParMetis license) that restricts the commercial use of the software. No required dependent package may have a GPL or restricted commercial use license. The Lesser GPL (LGPL) is acceptable for current xSDK packages and required dependent packages but only when necessary. Noncritical, optional dependent packages may have any license.
Each of the current xSDK packages has its own license, for example:
- hypre license (Apache 2.0 or MIT)
- PETSc license (2-clause BSD)
- SuperLU license (3-clause BSD)
- Trilinos licenses (most either LGPL or BSD)
- Alquimia license (3-clause BSD); currently requires using the external package PFLOTRAN, which has an LGPL license
Generally we attempt to ensure that external packages used or needed by the xSDK have similar licenses, but this is not always the case. For example, the license for ParMetis (parallel partitioning package optionally used by several xSDK packages) has restrictions. Thus, it is important to check all dependent packages employed by a potential commercial application that utilizes the xSDK and not use those packages without first checking their licenses.