An ECP ST Software Development Kit is a collection of related ECP ST software products (called packages) where coordination across package teams will improve usability and practices, and foster community growth among teams that develop similar and complementary capabilities.
An SDK is more of a project than a product, although it involves several products. It can also be considered as an association of products and product teams. The activities that take place inside an SDK promote interoperability (where appropriate and logical) between products.
ECP ST SDKs are organized “horizontally”. A vertical coupling in this sense would provide a complete, usable stack of software from low-level system diagnostic tools to high-level visualization capabilities. A horizontal coupling means the members of each SDK:
- Share a common substrate
- Have a similar function and purpose
- e.x. compiler frameworks, math libraries
- Potentially benefit from common Community Policies
- Best practices in software design and development and customer support
- Serve as criteria for SDK membership
- Are interoperable, but not in the long vertical dependency chain sense
- Potentially support (and design) common interfaces
- Potentially engage in inter-package planning and community outreach
- In addition to autonomous package planning and outreach
- For example, agreeing on common versions of dependency libraries
Each SDK adopts a set of Community Policies. These include the E4S Community Policies, and may optionally include additional policies taylored to specific SDK needs. The current policies provide the standards for SDK membership. The Community Policy page provides more details about defining, updating and tracking compatibility with SDK Community Policies.