Skip to content

Commit

Permalink
document contribution policy for adding software to EESSI
Browse files Browse the repository at this point in the history
  • Loading branch information
boegel committed Jul 5, 2023
1 parent ea5f04b commit 544d928
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 0 deletions.
4 changes: 4 additions & 0 deletions docs/software_layer/adding_software.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ To add software to EESSI, you should go through the semi-automatic software inst
* 3) Instructing the [bot :robot:](../bot.md) to deploy the built software for ingestion into the EESSI repository;
* 4) Merging the pull request once CI indicates that the software has been ingested. :white_check_mark:

!!! warning

Make sure you are also aware of our [contribution policy](contribution_policy.md) when adding software to EESSI.

### Preparation

Before you can make a pull request to the [software-layer](https://github.com/EESSI/software-layer),
Expand Down
80 changes: 80 additions & 0 deletions docs/software_layer/contribution_policy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Contribution policy

When [openining a pull request to add software to EESSI](adding_software.md), the following requirements must
be taken into account.

!!! note

These requirements are subject to change, please check back regularly.

## Open source software

Only **open source software** can be added to the EESSI repository.

Make sure that you are aware of software license, and that redistribution is allowed.

For more information about a specific license, see the [SPDX license list](https://spdx.org/licenses/).

!!! note

We intend to automatically verify that this requirement is met,
by requiring that the [SPDX license identifier](https://spdx.dev/ids/) is provided for all software.

## Built by the bot

All software included in the EESSI repository *must* be built autonomously by [our bot :robot:](../bot.md),
see also the [semi-automatic software installation procedure](adding_software.md).

## Supported by EasyBuild

Currently, we require that all software being added to EESSI is supported by the *EasyBuild release* being used
to perform the installation.

That is, the easyconfig files used for the installation *must be included in the EasyBuild release*.

We do allow the use of [`--from-pr`](https://docs.easybuild.io/integration-with-github/#github_from_pr) and
[`--include-easyblocks-from-pr`](https://docs.easybuild.io/integration-with-github/#github_include_easyblocks_from_pr)
to pull in changes required to make the installation work correctly in the EESSI build environment,
but only if that is strictly required.

!!! note

This restriction may be relaxed later to also allow adding software that is not supported yet in the latest
EasyBuild release, or to allow for installing software with other tools.

## Supported compiler toolchains

A [compiler toolchain](https://docs.easybuild.io/terminology/#toolchains) that is still supported by the latest
EasyBuild must be used for building the software.

More information on deprecated toolchains in EasyBuild is available
[here](https://docs.easybuild.io/deprecated-easyconfigs/#deprecated_easyconfigs_toolchains).

## Supported CPU targets

The software *should* work on all [CPU targets supported by EESSI](cpu_targets.md).

Exceptions to this requirement are allowed if technical problems that can not be resolved with reasonable effort
prevent the installation of the software for specific CPU targets.

## Software versions & toolchains

Recent software versions and toolchains *should* be preferred,
although the installation of older versions of use of older toolchains is allowed if sufficiently motivated.

## Testing

We should be able to test the software installations via the [EESSI test suite](https://github.com/EESSI/test-suite)
being developed.

Ideally one or more tests are available that verify that the software is functionally correct,
and performs well.

It should be possible to run a minimal *smoke test*, for example using EasyBuild's `--sanity-check-only` feature.

!!! note

The [EESSI test suite](https://github.com/EESSI/test-suite) is still in active development,
and currently only has a minimal set of tests available.

When the test suite is more mature, this requirement will be enforced more strictly.
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ nav:
- software_layer/cpu_targets.md
- software_layer/build_nodes.md
- software_layer/adding_software.md
- software_layer/contribution_policy.md
- Build-test-deploy bot: bot.md
- Pilot repository: pilot.md
- Getting access to EESSI:
Expand Down

0 comments on commit 544d928

Please sign in to comment.