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 requirements. HSF Affiliated Projects and Software need to abide by (at least a subset of) the guidelines, which are used for their endorsement and attribution of Bronze, Silver or Gold levels of recognition.

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 the “old HSF page” and from the Open Source Security Foundation (OpenSSF)’s page.

Best-practice Guidelines

General guidelines

Any software library should strive to 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!

Endorsement Badge Levels

Three endorsement levels are defined to distinguish mainly the level of maturity, developer support, community support and engagement: Bronze, Silver and Gold. For each level a number of requisites need to be demonstrated. Each level adds more requisites to the previous level. These requisites lay in three major categories:

The keywords MUST, SHOULD, MAY that appear in the criteria in this document are to be interpreted as described in RFC 2119:

Bronze

The purpose of this entry level is 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

Silver

Are for projects aiming for Gold but in an earlier phase 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 Bronze MUST be fulfilled, with the addition of the following criteria.

Basics

Documentation

Sustainability

Level of adoption

Gold

HSF endorsement level for projects that are adopted by several collaborations and/or experiments with a strong and long-term community support model. All the criteria for Silver MUST be fulfilled, with the addition of the following criteria.

Documentation

Sustainability

Level of adoption