Making Theories FAIR by Version control, CFF citation files & Semantic Versioning
2025-01-17
Tell other users how your theory should be cited, what the current version is, and more meta-data. This can be stored in a file called CITATION.cff
in the top level folder of your repository:
cff-version: 1.2.0
title: 'AST: Action selection theory'
message: >-
If you refer to this theory, please cite it using the
metadata from this file. This theory has not been peer reviewed yet.
type: report
authors:
- given-names: Felix
family-names: Schönbrodt
email: felix.schoenbrodt@psy.lmu.de
orcid: 'https://orcid.org/0000-0002-8282-3910'
affiliation: Ludwig-Maximilians-Universität München
repository-code: 'https://github.com/nicebread/AST'
abstract: >-
A theoretical model that explains how a donkey solves the
approach-approach conflict of hunger and thirst when the
two sources are separated.
keywords:
- approach-approach conflict
- action selection
- motivation
license: CC-BY-4.0
version: 0.2.5
date-released: '2023-10-30'
Create an initial version of your CITATION.cff
file with the cffinit tool
The tool currently only knows “software” and “data set” as types. Create it with type software
and update the message field:
message: >-
If you refer to this theory, please cite it using the metadata from this file.
type: software
Save the CITATION.cff
file in the top level folder of your repository.
Both Github and Zenodo (and probably more repositories) parse an existing CITATION.cff
and display the citation information:
message
field, e.g.:
2.1.0
: “The last peer-reviewed version was 1.0.4
”1.0.2
is published at doi …”isReviewedBy
annotation of an identifier.Version numbers have three numbers: MAJOR.MINOR.PATCH.
Increment the:
The numbers are plain integers! For example, after 9 comes 10:
0.9.0 → 0.10.0 → 0.11.0 → 1.0.0 → 1.1.0
0.1.0
1.0.0
0.1.0
0.1.1
0.2.0
0.3.0 → 0.4.0 → ... → 0.12.6
0.12.6 → 1.0.0
1.4.0
), we made a huge change that makes the product incompatible to version 1: 2.0.0
So what changes warrant what kind of version increments? For theories it makes sense to think in terms of predictions.
The version number is recorded in two places:
CITATION.cff
fileIs every commit a new version? That would be very tedious, especially if you are currently developing the theory and have frequent commits. We recommend:
dev
developer branch for ongoing development. It is not necessary to update the version number in each development step.CITATION.cff
fileCHANGELOG.md
main
branchCreate a tag or a release whenever a major or minor version is released:
0.x.x
version probably is not properly tested yet).(of course more complicated setups with multiple branches, e.g. feature branches, are possible).
CHANGELOG.md
into the release notes.CITATION.cff
file to include the new DOI
These slides are part of the course Formal modeling in psychology at LMU Munich