Affiliated Projects and Software Guidelines

The HSF curates a list of best practices for HSF Affiliated Projects and Software, that makes software easy to adopt, trust and contribute to. HSF Affiliated Projects and Software adhere to these best practices.

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. For a short summary of the EVERSE project and its goals, follow this link.

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

Affiliated projects must satisfy minimum standards. We also set out further recommendations for community software that projects can work towards.

Best-practice Guidelines

The guidelines presented below are replicated in this Google template document to make it easy for package/software evaluators to check things out against each guideline. Please refer to here for the practicalities of an HSF evaluation. The General Guidelines are required for affiliation. The language-specific guidelines point to the best practices of each programming-language ecosystem, which the HSF recommends projects follow.

General Guidelines

All of the following must be met by a project to be an HSF Affiliated Project:

In addition, projects should consider having:

C++ Specific Guidelines

The Standard C++ Foundation maintains a repository with a comprehensive set of C++ Core Guidelines. This repository also contains a Collaborative Collection of C++ Best Practices.

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!

Software Tiers and Differentiated Recommendations

Not all software is the same, in terms of purposes and audience. Differentiated recommendations according to the tier of software (broadly defined as analysis software, research software tools, research software infrastructure) are described on a separate page.