Appendix A — FAIR Assessment Cards

You can directly copy-paste the FAIR cards provided below into your repository as issues (without any additional formatting) to help track the implementation of best practices for FAIR research software.

A.1 Version control

_Essential (language-independent)_
- [ ] Use Git as a version control system 
- [ ] Upload your project on [GitHub](https://github.com/) or [TU Delft GitLab](https://gitlab.tudelft.nl/)
- [ ] Make use of [GitHub issues](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues)

_Recommended (language-independent)_ 
- [ ] Make your repository [public](https://coderefinery.github.io/social-coding/)
- [ ] Use a branching [model and maintain branch hygiene](https://awegroup.github.io/developer-guide/docs/branch-management.html)
- [ ] [Have meaningful commit messages](https://www.git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project#_commit_guidelines)

A.2 Project documentation

_Essential (language-independent)_
- [ ] [README](https://awegroup.github.io/developer-guide/docs/documentation.html#how-to-write-a-good-readme)
- [ ] [LICENSE](https://awegroup.github.io/developer-guide/docs/licenses.html#types-of-open-source-licenses) and [WAIVER](https://awegroup.github.io/developer-guide/docs/licenses.html#tu-delft-licensing-policy)
- [ ] [CITATION](https://awegroup.github.io/developer-guide/docs/documentation.html#citation)

A.3 Software documentation

_Essential (language-independent)_
- [ ] Source code documentation ([docstrings](https://awegroup.github.io/developer-guide/docs/software-documentation.html#docstrings))
- [ ] Document your project dependencies
- [ ] [Installation instructions](https://awegroup.github.io/developer-guide/docs/documentation.html#installation-and-usage)
- [ ] User documentation

_Recommended (language-independent)_
- [ ] Developer documentation and setup
- [ ] Examples and tutorials
- [ ] [Tooling](https://awegroup.github.io/developer-guide/docs/software-documentation.html#tooling) (Sphinx, JupyterBook, Quarto)

_Optional (language-independent)_
- [ ] [Hosting](https://awegroup.github.io/developer-guide/docs/software-documentation.html#hosting) (GitHub Pages, Readthedocs)

A.4 Software testing

_Essential (language-independent)_
- [ ] User installation testing

_Recommended (language-independent)_
- [ ] Write [tests](https://awegroup.github.io/developer-guide/docs/testing.html) for your software
- [ ] Implement these [useful testing concepts](https://awegroup.github.io/developer-guide/docs/testing.html#useful-testing-concepts) in your software
- [ ] Make use of [Continuous Integration](https://the-turing-way.netlify.app/reproducible-research/ci/ci-options.html)

A.5 Software quality

_Essential (language-independent)_
- [ ] [Organize](https://awegroup.github.io/developer-guide/docs/development-workflow.html) your project for reproducibility
- [ ] [Record](https://coderefinery.github.io/reproducible-research/dependencies/) and [manage](https://awegroup.github.io/developer-guide/docs/development-workflow.html#dependency-management) your software dependencies
- [ ] Follow [AWE coding style](https://awegroup.github.io/developer-guide/docs/coding-style.html)

_Recommended (language-independent)_
- [ ] Implement [refactoring](https://awegroup.github.io/developer-guide/docs/refactoring.html#refactoring) in your workflow

_Recommended for Python_
- [ ] Follow [PEP8 guidelines](https://realpython.com/python-pep8/)
- [ ] Use a tool for dependency management (e.g. [poetry](https://the-turing-way.netlify.app/reproducible-research/renv/renv-package.html))
- [ ] Use linter (e.g. [pylint](https://pypi.org/project/pylint/), [flake8](https://pypi.org/project/flake8/))
- [ ] Use a formatter (e.g. [black](https://github.com/psf/black))

A.6 Releases

_Essential (language-independent)_
- [ ] Obtain a DOI ([Zenodo](https://zenodo.org/) or [4TU.ResearchData](https://data.4tu.nl/info/about-your-data/getting-started))

_Recommended (language-independent)_
- [ ] [Semantic versioning](https://semver.org/)
- [ ] [CHANGELOG](https://keepachangelog.com/en/1.0.0/)
- [ ] Tagged releases ([GitHub](https://docs.github.com/en/repositories/releasing-projects-on-github))
- [ ] [Release guide](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository)
- [ ] Continuous Integration for build and release

_Recommended for Python_
- [ ] Upload to registry (e.g. [PyPI](https://realpython.com/pypi-publish-python-package/), [conda](https://conda.io/projects/conda-build/en/latest/user-guide/tutorials/build-pkgs.html))

A.7 Collaboration

_Recommended (language-independent)_
- [ ] [Contribution guidelines](hhttps://awegroup.github.io/developer-guide/docs/documentation.html#citation)
- [ ] [Code of conduct](https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/adding-a-code-of-conduct-to-your-project)