hpsfoundation / tac

High Performance Software Foundation TAC
Apache License 2.0
7 stars 3 forks source link

[Project Proposal] Spack #14

Closed becker33 closed 2 days ago

becker33 commented 1 month ago

Project Proposal

1. Name of Project

Spack

2. Project Description

Spack is a combinatorial package manager for supercomputers, desktops, and other computing platforms. It makes installing scientific software easy. Spack isn’t tied to a particular language; it supports multiple languages both interpreted (Python, R, Perl) and compiled (C, C++, Fortran, Rust, Go). It allows users to easily swap compilers and to target specific CPU and GPU microarchitectures.

Spack is both a tool for managing software and a library of over 8,200 package recipes. It has a steady stream of contributions to both.

3. Statement on Alignment with High Performance Software Foundation's Mission

Spack is the most widely used package manager in the High Performance Computing community. It is already a community-driven project, and its users and developers span laboratories, companies, HPC centers, cloud providers, and other parts of industry around the world. Individual users use Spack to enable scientific computing on their personal computers at the smallest scale; large software companies use Spack to enable features for their users; University and government research clusters use Spack to deploy software to their own diverse user communities.

Spack simplifies the task of building software on diverse hardware, which is in line with HPSF's mission to create a portable software stack for HPC. It simplifies and reduces the effort of distributing software for multiple GPUs, and it supports the many specific options and version configurations that pervade the HPC software ecosystem.

The Spack project is committed to supporting all parts of the HPC ecosystem: scientist and analyst end-users, developers, user support staff, and system administrators who manage large facility software deployments.

4. Project Website (please provide a link)

5. Code of Conduct (please provide a link)

6. Governance Practices (please provide a link)

7. Sponsors from the High Performance Software Foundation's Technical Advisory Committee

8. What is the project's solution for source control?

Github

9. What is the project's solution for issue tracking?

Github issues

10. Please list all external dependencies and their license

Spack bootstraps the following external software for itself, rom source and/or prebuilt binaries. We require that dependencies like these be permissively licensed.

Spack vendors the below external software in its source repo. We require that any vendored software be permissively licensed and compatible with our Apache-2.0 OR MIT license. Indented packages are only used indirectly.

Spack uses but does not distribute (as part of Spack itself) the following external software. Most of these are widely available and are already preinstalled. We could bootstrap most of these instead of relying on the system, but we do not currently.

11. Please describe your release methodology and mechanics

Spack has two major releases per year: before the ACM/IEEE Supercomputing (SC) Conference (usually in November) and before the ISC High Performance (ISC-HPC) conference (usually in May or June). Minor releases are done on an ad-hoc basis according to the severity of bugs found since the last major release. The TSC (see below) has a standing agenda item to consider monthly whether a minor release is warranted.

The technical process for cutting a Spack release is outlined in the Spack Developer Guide. Only TSC members can have sufficient permissions to cut a Spack release (most do not).

12. Please list the project's leadership team

The leadership team for Spack is the Technical Steering Committee (TSC).

13. Please describe Software Quality efforts (CI, security, auditing)

Future plans:

14. Please list the project members with access to commit to the mainline of the project

There are 39 members of the merge-to-develop team in the Spack Github organization.

15. Please describe the project's decision-making process

We aim for consensus-driven decision making, and we will resort to votes of the TSC when we are unable to reach consensus.

Reviews of pull requests must be approved and merged by a member of merge-to-develop, but these reviews are informed by members of the maintainers team., which has over 500 members. Members of maintainers are experts who have signed up to review specific packages, and their reviews are automatically requested for packages to which they have added their GitHub handle.

16. What is the maturity level of your project?

We aim to join HPSF as a Core stage project. Spack has over 1,400 contributors spread across hundreds of organizations. The Spack TSC has 14 members representing 10 institutions. While we always aim to improve our processes, we have mature processes for continuous integration and release management.

17. Please list the project's official communication channels

Official communication channels are:

18. Please list the project's social media accounts

X (Twitter): @spackpm Mastodon: @spack@mast.hpc.social

19. Please describe any existing financial sponsorships

Contributors are primarily paid by their own institution to work on Spack, though many also use their free time to contribute to Spack.

Spack also receives in-kind donations of compute cycles (cloud and on-prem) from Amazon Web Services and the University of Oregon for compute cycles that enable the high level of continuous integration on the project today.

20. Please describe the project's infrastructure needs or requests

Spack is interested in HPSF support in organizing an annual user meeting. Spack is also seeking support from HPSF in financing enterprise support for Spack slack to preserve the history of our default communication channel.

Spack is also interested in exploring how its CI system can be expanded to support more HPSF projects, as part of the HPSF CI Working Group.

Criteria for Sandbox Stage

Criteria for Established Stage

To be considered for Established Stage, the project must meet the Sandbox requirements as well as the following:

Criteria for Core Stage

Supporting Material

Lines of code in Spack Packages by Organization

Screenshot 2024-10-17 at 11 28 27 AM

Lines of code in Spack core by organization

Screenshot 2024-10-17 at 11 32 15 AM
tgamblin commented 2 days ago

Spack was accepted by vote of the TAC as a core project. 🎉