How to publish your code
Objectives
Make our code citable and persistent.
Make our Notebook reusable and persistent.
Is putting software on GitHub/GitLab/… publishing?
Is it enough to make the code public for the code to remain findable and accessible?
No. Because nothing prevents me from deleting my GitHub repository or rewriting the Git history and we have no guarantee that GitHub will still be around in 10 years.
Make your code citable and persistent: Get a persistent identifier (PID) such as DOI in addition to sharing the code publicly, by using services like Zenodo or similar services.
How to make your software citable
Discussion (Citation-1): Explain how you currently cite software
Do you cite software that you use? How?
If I wanted to cite your code/scripts, what would I need to do?
Checklist for making a release of your software citable:
Assigned an appropriate license
Described the software using an appropriate metadata format
Clear version number
Authors credited
Procured a persistent identifier
Added a recommended citation to the software documentation
This checklist is adapted from: N. P. Chue Hong, A. Allen, A. Gonzalez-Beltran, et al., Software Citation Checklist for Developers (Version 0.9.0). Zenodo. 2019b. (DOI)
Our practical recommendations:
Add a file called CITATION.cff (example).
Get a digital object identifier (DOI) for your code on Zenodo (example).
Make it as easy as possible: clearly say what you want cited.
This is an example of a simple CITATION.cff
file:
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: Doe
given-names: Jane
orcid: https://orcid.org/1234-5678-9101-1121
title: "My Research Software"
version: 2.0.4
doi: 10.5281/zenodo.1234
date-released: 2021-08-11
More about CITATION.cff
files:
Papers with focus on scientific software
Where can I publish papers which are primarily focused on my scientific software? Great list/summary is provided in this blog post: “In which journals should I publish my software?” (Neil P. Chue Hong)
How to cite software
Great resources
A. M. Smith, D. S. Katz, K. E. Niemeyer, and FORCE11 Software Citation Working Group, “Software citation principles,” PeerJ Comput. Sci., vol. 2, no. e86, 2016 (DOI)
D. S. Katz, N. P. Chue Hong, T. Clark, et al., Recognizing the value of software: a software citation guide [version 2; peer review: 2 approved]. F1000Research 2021, 9:1257 (DOI)
N. P. Chue Hong, A. Allen, A. Gonzalez-Beltran, et al., Software Citation Checklist for Authors (Version 0.9.0). Zenodo. 2019a. (DOI)
N. P. Chue Hong, A. Allen, A. Gonzalez-Beltran, et al., Software Citation Checklist for Developers (Version 0.9.0). Zenodo. 2019b. (DOI)
Recommended format for software citation is to ensure the following information is provided as part of the reference (from Katz, Chue Hong, Clark, 2021 which also contains software citation examples):
Creator
Title
Publication venue
Date
Identifier
Version
Type
Exercise/demo
Exercise
We will add a
CITATION.cff
file to our example repository.We will get a DOI using the Zenodo sandbox:
We will log into the Zenodo sandbox using GitHub.
We will follow these steps and finally create a GitHub release and get a DOI.
We will use the Binder badge on our example repository to run the Notebook in the cloud and discuss how we could make it persistent and citable.
Discussion
Why did we use the Zenodo sandbox and not the “real” Zenodo for our exercise?