SEP stands for Spack Enhancement Proposal. SEPs are written design documents for new features in Spack. While not all features in Spack should go through SEPs, there are an increasing number of changes that are hard to track without the details written down. Writing forces you to make your thoughts concrete in a way that discussions and telcons do not, and SEPs are for occasions where you really do need to get all the technical details written down before implementing.
As a rough guideline, use a SEP when:
- The full scope of changes and their impact affect many parts of Spack;
- Complete technical details are hard to understand in short meetings or online discussions;
- Consensus is required among many Spack implementers, users, and contributors;
- Changes will require significant effort (redesigns, API changes, chagnes to core data structures);
- The feature will likely affect user workflow; or
- Users are likely to notice and to rely heavily on the proposed feature.
The following are probably not SEPs:
- Adding new command options;
- Fixing a bug;
- Refactoring;
- Performance enhancements that just speed up existing commands; or
- Adding error messages.
We don't want to restrict too much how you write your SEP, but in general, you should have the following:
- A description of the problem the SEP aims to solve;
- A description of the goals of the SEP;
- The changes being proposed; and
- Example use cases.
We don't require these to be in any particular order or mandate a format., but these elements should be clear in your writeup.
- Make a new file called
sep-xxxx.md
in theseps/
directory in this project, wherexxxx
is the next available zero-padded SEP number. - Title your SEP
SEP-n
, wheren
is the SEP number without zero padding. - Write up your SEP!
- Submit a PR for the initial revision, and start working with people to refine your ideas and get consensus.
That's it.
This project is part of Spack. Spack is distributed under the terms of both the MIT license and the Apache License (Version 2.0). Users may choose either license, at their option.
All new contributions must be made under both the MIT and Apache-2.0 licenses.
See LICENSE-MIT, LICENSE-APACHE, COPYRIGHT, and NOTICE for details.
SPDX-License-Identifier: (Apache-2.0 OR MIT)
LLNL-CODE-811652