Research software citation for software developers
Making your software citable is actually a lot easier than you may think: Provide the relevant metadata pertaining to your software, and let the user know how you would like to software to be cited.
How to provide citation metadata for your software
The best way to provide this metadata is in a metadata file, either a
CITATION
file, or in a
codemeta.json
file, or both.
The files should be placed in the root directory of your public source code repository.
Additionally you may want to package them with the distributed version of your software.
How to create a CITATION file
The easiest way to create a CITATION file is by creating a
CITATION.cff
file in the Citation File
Format (CFF). These files are
plain-text.
A minimal CITATION.cff
file – following best
practices – would look something like the following (you can actually
copy and paste it and replace the example data with your own).
cff-version: 1.1.0
message: If you use this software, please cite it as below.
authors:
- family-names: Druskat
given-names: Stephan
orcid: https://orcid.org/0000-0003-4925-7248
title: "My Research Software"
version: 2.0.4
doi: 10.5281/zenodo.1234
date-released: 2017-12-18
This example includes only a minimal set of fields. CFF provides many more fields for software citation metadata.
You can also add further references to the citation metadata – e.g., a paper describing your software – and give them a scope describing under what circumstances that secondary reference should also be cited.
For more details and a complete list of available fields, please refer to the CFF format specifications (Druskat et al., 2017).
You can also validate your file against the schema.
CFF is compatible with CodeMeta, so you can also create a
codemeta.json
file from the metadata in your
CITATION.cff
file.
How to create codemeta.json
CodeMeta (Jones et al.,
2017) files provide software metadata, expressed in JSON’s
linked data (JSON-LD) notation. To use it, create a
codemeta.json
file.
A minimal file – following best practices – would look something like the following (you can actually copy and paste it and replace the example data with your own).
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"author": [{
"@type": "Person",
"givenName": "Stephan",
"familyName": "Druskat",
"@id": "http://orcid.org/0000-0003-4925-7248"
}],
"name": "My Research Tool",
"softwareVersion": "2.0",
"identifier": "https://doi.org/10.5281/zenodo.1234",
"datePublished": "2017-12-18",
"codeRepository": "https://github.com/research-software/my-research-tool"
}
This example includes only a minimal set of fields. CodeMeta provides many more fields for software metadata.
You can also add further references to the citation metadata – e.g., a paper describing your software.
For more details and a complete list of available fields, please refer to the CodeMeta terms page.
You can also validate your file against the schema using a JSON schema linter, of which there are different ones available online.
References
- Druskat, Stephan, Spaaks, Jurriaan H., Chue Hong, Neil, Haines, Robert, Baker, James. (2017, December). Citation File Format (CFF) - Specifications. https://doi.org/10.5281/zenodo.3515946.
- Jones, Matthew B., Boettiger, Carl, Mayes, Abby Cabunoc, Smith, Arfon, Slaughter, Peter, Niemeyer, Kyle, … Goble, Carole. (2017). CodeMeta: an exchange schema for software metadata. Version 2.0. KNB Data Repository. https://doi.org/10.5063/schema/codemeta-2.0.