Affiliated Projects and Software Guidelines

In a spirit of openness and flexibility, the HSF maintains an evolving checklist of best practices for HSF Affiliated Projects and Software, rather than a set of strict requirements. HSF Affiliated Projects and Software need to abide by at least a significant subset of the guidelines (recognising that some may not be relevant for particular projects).

The guidelines have been created to:

The guidelines can be updated in light of updates or release of community practices, such as those emerging from e.g. the EVERSE project.

The guidelines take inspiration from an older HSF project page and from the Open Source Security Foundation (OpenSSF)’s page.

There are minimum standards that are required to be an affiliate, but beyond that we encourage all projects to look at the criteria set out below and work towards improvements.

Best-practice Guidelines

General guidelines

Generally, all of the following must be met by a project to be an HSF Affiliated Project, and exceptions should be justified.

Any software library should strive to fulfil the following:

In addition, projects should consider having:

C++ specific guidelines

This repository contains a Collaborative Collection of C++ Best Practices. [WIP - more information will be provided in due course.]

Julia specific guidelines

The Julia language documentation contains a Style Guide. [WIP - more information will be provided in due course.]

Python specific guidelines

The organisation Scientific Python provides a rather comprehensive Development Guide with a set of Topical Guides for the development and maintenance of Python libraries, which the HSF strongly encourages. These guides provide a “cookiecutter” template for the setup of a new package, and cover important topics such as packaging, code styling and documentation, testing and test coverage.

Compliance with respect to the guidelines is provided via a “repo review” framework (GitHub repository). The review can even be done directly in a browser for repositories hosted on GitHub!

Differentiated Software Best Practices

Recognising that not all software is the same is very important to ensure that appropriate guidelines are applied. Here we adopt roughly the three levels of software, originally developed by the Australian Research Data Commons (ARDC) and subsequently adopted by the EVERSE Project.

From these levels we have developed guidelines that projects can examine to understand typical levels of maturity, developer support, community support and engagement.

These guidelines lie in three major categories:

Tier 3 Software

A.k.a. analysis code in the 3-tier model.

For the HSF we interpret this as guidelines suitable for a young endeavour, likely evolving from and within a collaboration or experiment, but with the potential for other communities or experiments to use. At this level the category of best software practices is what is mainly required.

Basics

Documentation

Change Control

Sustainability

Level of adoption

Tier 2

A.k.a. prototype tools in the 3-tier model.

In the HSF we interpret this as projects moving towards strong community support and adoption (e.g., adoption is still relatively shy, maintenance is not secured at least in the medium term by more than a single person). High standards of software engineering should be met. All the criteria for Tier 3 should be fulfilled, with the addition of the following criteria.

Basics

Documentation

Sustainability

Level of adoption

Tier 1

A.k.a. research software infrastructure in the 3-tier model.

This is for projects that are adopted by several collaborations and/or experiments with a strong and long-term community support model. All the criteria for Tier 2 should be fulfilled, with the addition of the following criteria.

Documentation

Sustainability

Level of adoption