Software zitieren

James Howison und Julia Bullard führten in ihrem 2016 veröffentlichten Artikel Software in the scientific literature folgende Beispiele in absteigender Reputation auf:

  1. zitieren von Veröffentlichungen, die die jeweilige Software beschreiben

  2. zitieren von Bedienungsanleitungen

  3. zitieren der Software-Projekt-Website

  4. Link auf eine Software-Projekt-Website

  5. erwähnen des Software-Namens

Die Situation bleibt für die Autor*innen von Software dennoch unbefriedigend, zumal wenn sie sich von den Autor*innen der Software-Beschreibung unterscheiden. Umgekehrt ist Forschungssoftware leider auch nicht immer gut geeignet um zitiert zu werden. So werden Kollegen eure Software kaum direkt zitieren können, wenn ihr ihnen die Software als Anhang von E-Mails schickt. Auch ein Download-Link ist hier noch nicht wirklich zielführend. Aber wie können Autor*innen ihre Software zitierfähig bereitstellen?

Digital object identifier (DOI) werden in der Wissenschaft häufig für zum Zitieren verwendet. Zenodo ermöglicht die Archivierung von Software und die Bereitstellung eines DOI für diese Software. Im Folgenden werde ich am Beispiel des Jupyter-Tutorials zeigen, welche Schritte hierzu erforderlich sind:

  1. Wenn ihr noch keinen Account für Zenodo habt, erstellt einen, bevorzugt mit GitHub.

  2. Nun wählt das Repository aus, das ihr archivieren wollt:

    Repositories für Zenodo aktivieren
  3. Überprüft, ob Zenodo einen Webhook in eurem Repository für das Releases-Event erstellt hat:

    Zenodo Webhook
  4. Erstellt ein neues Release:

    Github Release
  5. Überprüft, ob der DOI korrekt erstellt wurde:

    Zenodo Release
  6. Schließlich könnt ihr den Badge in der README-Datei eurer Software einbinden:

    Markdown:
    [![DOI](https://zenodo.org/badge/307380211.svg)](https://zenodo.org/badge/latestdoi/307380211)
    
    reStructedText:
    .. image:: https://zenodo.org/badge/307380211.svg
       :target: https://zenodo.org/badge/latestdoi/307380211
    

Die FORCE11 -Arbeitsgruppe hat ein Paper veröffentlicht, in denen Prinzipien des wissenschaftlichen Software-zitierens dargelegt werden: Arfon Smith, Daniel Katz, Kyle Niemeyer: FORCE11 Software Citation Working Group, 2016. Dabei kristallisieren sich aktuell zwei Projekte für strukturierte Metadaten heraus:

CodeMeta

Austauschschema für allgemeine Software-Metadaten und Referenzimplementierung für JSON for Linking Data (JSON-LD).

Dabei wird eine codemeta.json-Datei im Stammverzeichnis des Software-Repository erwartet. Die Datei kann z.B. so aussehen:

{
    "@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"
}
Citation File Format

Schema für Software-Citation-Metadaten in maschinenlesbarem YAML-Format

Dabei sollte eine Datei CITATION.cff im Stammverzeichnis des Software-Repository abgelegt werden.

Der Inhalt der Datei kann z.B. so aussehen:

cff-version: "1.1.0"
message: "If you use this tutorial, please cite it as below."
authors:
  -
    family-names: Schiele
    given-names: Veit
    orcid: "https://orcid.org/https://orcid.org/0000-0002-2448-8958"
identifiers:
  -
    type: doi
    value: "10.5281/zenodo.4147287"
keywords:
  - "data-science"
  - jupyter
  - "jupyter-notebooks"
  - "jupyter-kernels"
  - ipython
  - pandas
  - spack
  - pipenv
  - ipywidgets
  - "ipython-widget"
  - dvc
title: "Jupyter tutorial"
version: "0.8.0"
date-released: 2020-10-08
license: "BSD-3-Clause"
repository-code: "https://github.com/veit/jupyter-tutorial"

Ihr könnt einfach das obige Beispiel anpassen um eure eigene CITATION.cff-Datei zu erzeugen oder die Website cffinit verwenden.

Mit cff-validator steht euch eine GitHub-Action zur Verfügung, die CITATION.cff-Dateien mit dem R-Paket V8 überprüft.

Es gibt auch einige Tools zum Workflow von CITATION.cff-Dateien:

  • cff-converter-python konvertiert CITATION.cff-Dateien in BibTeX, RIS, CodeMeta- und andere Dateiformate

  • doi2cff erstellt eine CITATION.cff-Datei aus einem Zenodo DOI

Auch GitHub bietet einen Service um die Informationen aus der CITATION.cff-Datei eures GitHub-Repository im APA- und BibTex-Format zu kopieren.

Popup auf der Zielseite eines GitHub-Repositorys mit der Möglichkeit, ADA- und BibTex-Formate zu exportieren.

Wenn ihr einen DOI mit Zenodo registriert, wird die CITATION.cff-Datei aus dem GitHub-Repository ebenfalls verwendet. Auch Zotero interpretiert die CFF-Datei in GitHub-Repositories; Zotero kann jedoch auch ohne CFF-Datei Metainformationen des Repository, wie Unternehmen, Programmiersprache etc., übernehmen.

Ihr solltet einen Persistent Identifier (PID) bereitstellen um die langfristige Verfügbarkeit eurer Software sicherzustellen. Sowohl das Zenodo- als auch das figshare-Repository akzeptieren Quellcode einschließlich Binärdateien und stellen DOIs hierfür breit. Und auch mit CiteAs lassen sich Zitierinformationen für Software abrufen.